mirror of
https://github.com/geerlingguy/ansible-role-docker.git
synced 2025-09-26 17:51:03 +02:00
[UPD] Some updates
* add noninteractive install * add runlevel 1 to prevent start service before configred * add lazydocker when it needed * rename docker-compose.yml to prevent IDE warnings
This commit is contained in:
parent
5afc0f8ab4
commit
82238bdce6
@ -6,19 +6,26 @@ docker_package_state: present
|
|||||||
|
|
||||||
# Service options.
|
# Service options.
|
||||||
docker_service_state: started
|
docker_service_state: started
|
||||||
docker_service_enabled: true
|
docker_service_enabled: yes
|
||||||
docker_restart_handler_state: restarted
|
docker_restart_handler_state: restarted
|
||||||
|
|
||||||
# Docker Compose options.
|
# Docker Compose options.
|
||||||
docker_install_compose: true
|
docker_compose_install: yes
|
||||||
docker_compose_version: "1.22.0"
|
docker_compose_version: '1.24.0'
|
||||||
docker_compose_path: /usr/local/bin/docker-compose
|
docker_compose_path: '/usr/local/bin/docker-compose'
|
||||||
|
docker_compose_url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64"
|
||||||
|
|
||||||
|
# LazyDocker options.
|
||||||
|
lazydocker_install: yes
|
||||||
|
lazydocker_version: '0.4'
|
||||||
|
lazydocker_path: '/usr/local/bin/lazydocker'
|
||||||
|
lazydocker_url: "https://github.com/jesseduffield/lazydocker/releases/download/v{{ lazydocker_version }}/lazydocker_{{ lazydocker_version }}_Linux_x86_64.tar.gz"
|
||||||
|
|
||||||
# Used only for Debian/Ubuntu. Switch 'stable' to 'edge' if needed.
|
# Used only for Debian/Ubuntu. Switch 'stable' to 'edge' if needed.
|
||||||
docker_apt_release_channel: stable
|
docker_apt_release_channel: stable
|
||||||
docker_apt_arch: amd64
|
docker_apt_arch: amd64
|
||||||
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
|
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
|
||||||
docker_apt_ignore_key_error: true
|
docker_apt_ignore_key_error: yes
|
||||||
|
|
||||||
# Used only for RedHat/CentOS/Fedora.
|
# Used only for RedHat/CentOS/Fedora.
|
||||||
docker_yum_repo_url: https://download.docker.com/linux/{{ (ansible_distribution == "Fedora") | ternary("fedora","centos") }}/docker-{{ docker_edition }}.repo
|
docker_yum_repo_url: https://download.docker.com/linux/{{ (ansible_distribution == "Fedora") | ternary("fedora","centos") }}/docker-{{ docker_edition }}.repo
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
---
|
---
|
||||||
- name: restart docker
|
- name: restart docker
|
||||||
service: "name=docker state={{ docker_restart_handler_state }}"
|
service:
|
||||||
|
name: docker
|
||||||
|
state: "{{ docker_restart_handler_state }}"
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Ensure containerd service dir exists.
|
|
||||||
file:
|
|
||||||
path: /etc/systemd/system/containerd.service.d
|
|
||||||
state: directory
|
|
||||||
|
|
||||||
- name: Add shim to ensure Docker can start in all environments.
|
|
||||||
template:
|
|
||||||
src: override.conf.j2
|
|
||||||
dest: /etc/systemd/system/containerd.service.d/override.conf
|
|
||||||
register: override_template
|
|
||||||
|
|
||||||
- name: Reload systemd daemon if template is changed.
|
|
||||||
systemd:
|
|
||||||
daemon_reload: true
|
|
||||||
when: override_template is changed
|
|
24
tasks/docker-compose-install.yml
Normal file
24
tasks/docker-compose-install.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
- name: docker-compose | check binary installed
|
||||||
|
stat:
|
||||||
|
path: "{{ docker_compose_path }}"
|
||||||
|
changed_when: no
|
||||||
|
register: docker_compose_current_binary
|
||||||
|
|
||||||
|
- name: docker-compose | get current binary version
|
||||||
|
shell: |
|
||||||
|
sudo -Hu nobody timeout 2 {{ docker_compose_path }} --version 2>&1 | grep -Eoi '([0-9]{1,}\.){1,3}[0-9]{1,}(|-[a-z0-9]{1,})' | sort -uV | head -1
|
||||||
|
register: docker_compose_current_version
|
||||||
|
changed_when: no
|
||||||
|
when:
|
||||||
|
- docker_compose_current_binary.stat.exists
|
||||||
|
|
||||||
|
- name: docker-compose | download if need install, upgrade or downgrade
|
||||||
|
get_url:
|
||||||
|
url: "{{ docker_compose_url }}"
|
||||||
|
dest: "{{ docker_compose_path }}"
|
||||||
|
force: yes
|
||||||
|
owner: root
|
||||||
|
mode: 0755
|
||||||
|
when:
|
||||||
|
- not docker_compose_current_binary.stat.exists or (docker_compose_current_version.stdout and docker_compose_current_version.stdout is version(docker_compose_version, '!='))
|
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Check current docker-compose version.
|
|
||||||
command: docker-compose --version
|
|
||||||
register: docker_compose_current_version
|
|
||||||
changed_when: false
|
|
||||||
failed_when: false
|
|
||||||
|
|
||||||
- name: Delete existing docker-compose version if it's different.
|
|
||||||
file:
|
|
||||||
path: "{{ docker_compose_path }}"
|
|
||||||
state: absent
|
|
||||||
when: >
|
|
||||||
docker_compose_current_version.stdout is defined
|
|
||||||
and docker_compose_version not in docker_compose_current_version.stdout
|
|
||||||
|
|
||||||
- name: Install Docker Compose (if configured).
|
|
||||||
get_url:
|
|
||||||
url: https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64
|
|
||||||
dest: "{{ docker_compose_path }}"
|
|
||||||
mode: 0755
|
|
34
tasks/docker-shim.yml
Normal file
34
tasks/docker-shim.yml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
- name: docker-shim | get current version when installed
|
||||||
|
shell: |
|
||||||
|
sudo -Hu nobody timeout 2 docker --version 2>&1 | grep -Eoi '([0-9]{1,}\.){2,3}[0-9]{1,}(|-[a-z0-9]{1,})' | sort -uV | head -1
|
||||||
|
register: docker_current_version
|
||||||
|
changed_when: no
|
||||||
|
|
||||||
|
- name: docker-shim | Setup shim if required
|
||||||
|
block:
|
||||||
|
- name: docker-shim | Ensure containerd service dir exists
|
||||||
|
file:
|
||||||
|
path: /etc/systemd/system/containerd.service.d
|
||||||
|
state: directory
|
||||||
|
- name: docker-shim | Add shim to ensure Docker can start in all environments.
|
||||||
|
template:
|
||||||
|
src: etc/systemd/system/containerd.service.d/override.conf.j2
|
||||||
|
dest: /etc/systemd/system/containerd.service.d/override.conf
|
||||||
|
register: docker_service_override_template
|
||||||
|
when:
|
||||||
|
- docker_current_version.stdout is version('19.03.2', '<=')
|
||||||
|
|
||||||
|
- name: docker-shim | Delete shim when it outdated
|
||||||
|
file:
|
||||||
|
path: /etc/systemd/system/containerd.service.d/override.conf
|
||||||
|
state: absent
|
||||||
|
register: docker_service_override_template
|
||||||
|
when:
|
||||||
|
- docker_current_version.stdout is version('19.03.2', '>')
|
||||||
|
|
||||||
|
- name: docker-shim | Reload systemd daemon if template is changed
|
||||||
|
systemd:
|
||||||
|
daemon_reload: yes
|
||||||
|
when:
|
||||||
|
- docker_service_override_template is changed
|
28
tasks/lazydocker-install.yml
Normal file
28
tasks/lazydocker-install.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
- name: lazydocker | check binary installed
|
||||||
|
stat:
|
||||||
|
path: "{{ lazydocker_path }}"
|
||||||
|
changed_when: no
|
||||||
|
register: lazydocker_current_binary
|
||||||
|
|
||||||
|
- name: lazydocker | get current binary version
|
||||||
|
shell: |
|
||||||
|
sudo -Hu nobody timeout 2 {{ lazydocker_path }} --version 2>&1 | grep -Eoi '([0-9]{1,}\.){1,3}[0-9]{1,}(|-[a-z0-9]{1,})' | sort -uV | head -1
|
||||||
|
register: lazydocker_current_version
|
||||||
|
changed_when: no
|
||||||
|
when:
|
||||||
|
- lazydocker_current_binary.stat.exists
|
||||||
|
|
||||||
|
- name: lazydocker | download with unarchive when upgrade or downgrade
|
||||||
|
unarchive:
|
||||||
|
src: "{{ lazydocker_url }}"
|
||||||
|
dest: "{{ lazydocker_path | dirname }}"
|
||||||
|
exclude:
|
||||||
|
- 'README.md'
|
||||||
|
- 'LICENSE'
|
||||||
|
remote_src: yes
|
||||||
|
force: yes
|
||||||
|
owner: root
|
||||||
|
mode: 0755
|
||||||
|
when:
|
||||||
|
- not lazydocker_current_binary.stat.exists or (lazydocker_current_version.stdout and lazydocker_current_version.stdout is version(lazydocker_version, '!='))
|
@ -1,19 +1,36 @@
|
|||||||
---
|
---
|
||||||
- include_tasks: setup-RedHat.yml
|
- include_tasks: setup-RedHat.yml
|
||||||
when: ansible_os_family == 'RedHat'
|
when:
|
||||||
|
- ansible_os_family == 'RedHat'
|
||||||
|
|
||||||
- include_tasks: setup-Debian.yml
|
- include_tasks: setup-Debian.yml
|
||||||
when: ansible_os_family == 'Debian'
|
when:
|
||||||
|
- ansible_os_family == 'Debian'
|
||||||
|
|
||||||
- name: Install Docker.
|
- name: Ensure docker config dir exists.
|
||||||
|
file:
|
||||||
|
path: /etc/docker
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Add docker/daemon.json custom config.
|
||||||
|
template:
|
||||||
|
src: etc/docker/daemon.json.j2
|
||||||
|
dest: /etc/docker/daemon.json
|
||||||
|
notify: restart docker
|
||||||
|
|
||||||
|
- name: Install docker
|
||||||
package:
|
package:
|
||||||
name: "{{ docker_package }}"
|
name: "{{ docker_package }}"
|
||||||
state: "{{ docker_package_state }}"
|
state: "{{ docker_package_state }}"
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
RUNLEVEL: 1
|
||||||
notify: restart docker
|
notify: restart docker
|
||||||
|
|
||||||
# TODO: Remove this shim once 18.09.1 or later is released.
|
# TODO: Remove this shim once 18.09.1 or later is released.
|
||||||
- import_tasks: docker-1809-shim.yml
|
- import_tasks: docker-shim.yml
|
||||||
when: ansible_service_mgr == 'systemd'
|
when:
|
||||||
|
- ansible_service_mgr == 'systemd'
|
||||||
|
|
||||||
- name: Ensure Docker is started and enabled at boot.
|
- name: Ensure Docker is started and enabled at boot.
|
||||||
service:
|
service:
|
||||||
@ -24,8 +41,14 @@
|
|||||||
- name: Ensure handlers are notified now to avoid firewall conflicts.
|
- name: Ensure handlers are notified now to avoid firewall conflicts.
|
||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
|
|
||||||
- include_tasks: docker-compose.yml
|
- include_tasks: docker-compose-install.yml
|
||||||
when: docker_install_compose
|
when:
|
||||||
|
- docker_compose_install
|
||||||
|
|
||||||
|
- include_tasks: lazydocker-install.yml
|
||||||
|
when:
|
||||||
|
- lazydocker_install
|
||||||
|
|
||||||
- include_tasks: docker-users.yml
|
- include_tasks: docker-users.yml
|
||||||
when: docker_users
|
when:
|
||||||
|
- docker_users
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
- docker
|
- docker
|
||||||
- docker-engine
|
- docker-engine
|
||||||
state: absent
|
state: absent
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
|
||||||
- name: Ensure dependencies are installed.
|
- name: Ensure dependencies are installed.
|
||||||
apt:
|
apt:
|
||||||
@ -12,29 +14,39 @@
|
|||||||
- apt-transport-https
|
- apt-transport-https
|
||||||
- ca-certificates
|
- ca-certificates
|
||||||
state: present
|
state: present
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
|
||||||
- name: Add Docker apt key.
|
- name: Add Docker apt key.
|
||||||
apt_key:
|
apt_key:
|
||||||
url: https://download.docker.com/linux/ubuntu/gpg
|
url: https://download.docker.com/linux/ubuntu/gpg
|
||||||
id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
|
id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
|
||||||
state: present
|
state: present
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
register: add_repository_key
|
register: add_repository_key
|
||||||
ignore_errors: "{{ docker_apt_ignore_key_error }}"
|
ignore_errors: "{{ docker_apt_ignore_key_error }}"
|
||||||
|
|
||||||
- name: Ensure curl is present (on older systems without SNI).
|
- name: Ensure curl is present (on older systems without SNI).
|
||||||
package: name=curl state=present
|
package:
|
||||||
when: add_repository_key is failed
|
name: curl
|
||||||
|
state: present
|
||||||
|
environment:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
when:
|
||||||
|
- add_repository_key is failed
|
||||||
|
|
||||||
- name: Add Docker apt key (alternative for older systems without SNI).
|
- name: Add Docker apt key (alternative for older systems without SNI).
|
||||||
shell: |
|
shell: |
|
||||||
set -o pipefail
|
set -euxo pipefail
|
||||||
curl -sSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
||||||
args:
|
args:
|
||||||
warn: false
|
warn: false
|
||||||
when: add_repository_key is failed
|
when:
|
||||||
|
- add_repository_key is failed
|
||||||
|
|
||||||
- name: Add Docker repository.
|
- name: Add Docker repository.
|
||||||
apt_repository:
|
apt_repository:
|
||||||
repo: "{{ docker_apt_repository }}"
|
repo: "{{ docker_apt_repository }}"
|
||||||
state: present
|
state: present
|
||||||
update_cache: true
|
update_cache: yes
|
||||||
|
25
templates/etc/docker/daemon.json.j2
Normal file
25
templates/etc/docker/daemon.json.j2
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"data-root": "/srv/docker",
|
||||||
|
"dns": [
|
||||||
|
"8.8.8.8",
|
||||||
|
"1.1.1.1"
|
||||||
|
],
|
||||||
|
"log-driver": "journald",
|
||||||
|
"metrics-addr" : "0.0.0.0:9323",
|
||||||
|
"experimental" : true,
|
||||||
|
"storage-driver": "overlay2",
|
||||||
|
"live-restore": true,
|
||||||
|
"default-ulimits": {
|
||||||
|
"nofile": {
|
||||||
|
"Name": "nofile",
|
||||||
|
"Hard": 65536,
|
||||||
|
"Soft": 65536
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"default-address-pools":[
|
||||||
|
{"base":"172.17.0.0/16","size":24},
|
||||||
|
{"base":"172.18.0.0/16","size":24},
|
||||||
|
{"base":"172.19.0.0/16","size":24},
|
||||||
|
{"base":"172.20.0.0/16","size":24}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user