2015-10-04 04:19:50 +08:00
---
2020-03-18 05:31:27 +08:00
- name : check if fedora coreos
2018-10-10 10:14:33 +08:00
stat :
path : /run/ostree-booted
register : ostree
2020-03-17 18:12:21 +08:00
- name : set is_ostree
2019-05-16 15:27:43 +08:00
set_fact :
2020-03-17 18:12:21 +08:00
is_ostree : "{{ ostree.stat.exists }}"
2018-10-10 10:14:33 +08:00
2015-12-31 00:11:33 +08:00
- name : gather os specific variables
include_vars : "{{ item }}"
with_first_found :
- files :
2017-08-24 17:09:52 +08:00
- "{{ ansible_distribution|lower }}-{{ ansible_distribution_version|lower|replace('/', '_') }}.yml"
2018-08-23 23:11:07 +08:00
- "{{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}-{{ host_architecture }}.yml"
- "{{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}.yml"
2017-08-24 17:09:52 +08:00
- "{{ ansible_distribution|lower }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.yml"
2018-08-21 23:53:23 +08:00
- "{{ ansible_distribution|lower }}-{{ host_architecture }}.yml"
2017-08-24 17:09:52 +08:00
- "{{ ansible_distribution|lower }}.yml"
2018-08-21 23:53:23 +08:00
- "{{ ansible_os_family|lower }}-{{ host_architecture }}.yml"
2017-08-24 17:09:52 +08:00
- "{{ ansible_os_family|lower }}.yml"
- defaults.yml
2015-12-31 00:11:33 +08:00
paths :
2017-08-24 17:09:52 +08:00
- ../vars
2016-02-20 01:48:53 +08:00
skip : true
2017-10-05 15:43:04 +08:00
tags :
- facts
2015-12-31 00:11:33 +08:00
2018-04-26 17:52:06 +08:00
- name : Warn about Docker version on SUSE
debug :
msg : "SUSE distributions always install Docker from the distro repos"
when : ansible_pkg_mgr == 'zypper'
2018-01-29 19:37:48 +08:00
- include_tasks : set_facts_dns.yml
2016-12-22 00:18:11 +08:00
when : dns_mode != 'none' and resolvconf_mode == 'docker_dns'
2017-10-05 15:43:04 +08:00
tags :
- facts
2016-12-22 00:18:11 +08:00
2020-07-28 16:39:08 +08:00
- name : disable unified_cgroup_hierarchy in Fedora 31+
command : grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
2020-04-18 21:35:36 +08:00
when :
- ansible_distribution == "Fedora"
- (ansible_distribution_major_version | int) >= 31
- ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] is not defined or ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] != '0'
- name : reboot in Fedora 31+
reboot :
when :
- ansible_distribution == "Fedora"
- (ansible_distribution_major_version | int) >= 31
- ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] is not defined or ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] != '0'
2018-03-29 04:10:39 +08:00
- import_tasks : pre-upgrade.yml
2018-03-12 11:05:12 +08:00
- name : ensure docker-ce repository public key is installed
2015-12-31 00:11:33 +08:00
action : "{{ docker_repo_key_info.pkg_key }}"
2016-01-13 00:56:29 +08:00
args :
2019-05-03 05:24:21 +08:00
id : "{{ item }}"
url : "{{ docker_repo_key_info.url }}"
2016-01-13 00:56:29 +08:00
state : present
2016-09-13 21:29:22 +08:00
register : keyserver_task_result
2018-10-17 06:33:30 +08:00
until : keyserver_task_result is succeeded
2016-09-13 21:29:22 +08:00
retries : 4
2018-10-10 10:14:33 +08:00
delay : "{{ retry_stagger | d(3) }}"
2016-03-30 16:23:43 +08:00
with_items : "{{ docker_repo_key_info.repo_keys }}"
2021-01-11 23:21:08 +08:00
environment : "{{ proxy_env }}"
2020-08-28 17:28:53 +08:00
when : not (ansible_os_family in ["Flatcar Container Linux by Kinvolk", "RedHat", "Suse", "ClearLinux"] or is_ostree)
2015-12-31 00:11:33 +08:00
2018-03-12 11:05:12 +08:00
- name : ensure docker-ce repository is enabled
2015-12-31 00:11:33 +08:00
action : "{{ docker_repo_info.pkg_repo }}"
2016-01-13 00:56:29 +08:00
args :
2019-05-03 05:24:21 +08:00
repo : "{{ item }}"
2016-01-13 00:56:29 +08:00
state : present
2016-03-30 16:23:43 +08:00
with_items : "{{ docker_repo_info.repos }}"
2020-08-28 17:28:53 +08:00
when : not (ansible_os_family in ["Flatcar Container Linux by Kinvolk", "RedHat", "Suse", "ClearLinux"] or is_ostree) and (docker_repo_info.repos|length > 0)
2018-03-12 11:05:12 +08:00
2018-09-20 01:57:20 +08:00
- name : Configure docker repository on Fedora
template :
src : "fedora_docker.repo.j2"
dest : "{{ yum_repo_dir }}/docker.repo"
2020-03-17 18:12:21 +08:00
when : ansible_distribution == "Fedora" and not is_ostree
2018-09-20 01:57:20 +08:00
2019-07-12 14:17:06 +08:00
- name : Configure docker repository on RedHat/CentOS/Oracle Linux
2020-03-25 16:03:03 +08:00
template :
src : "rh_docker.repo.j2"
dest : "{{ yum_repo_dir }}/docker-ce.repo"
2020-03-17 18:12:21 +08:00
when : ansible_distribution in ["CentOS","RedHat","OracleLinux"] and not is_ostree
2016-04-11 04:08:13 +08:00
2019-02-01 08:19:48 +08:00
- name : check if container-selinux is available
yum :
list : "container-selinux"
register : yum_result
2020-03-17 18:12:21 +08:00
when : ansible_distribution in ["CentOS","RedHat"] and not is_ostree
2019-02-01 08:19:48 +08:00
2019-02-19 22:06:29 +08:00
- name : Configure extras repository on RedHat/CentOS if container-selinux is not available in current repos
2019-02-01 08:19:48 +08:00
yum_repository :
name : extras
2020-11-25 00:33:00 +08:00
description : "CentOS-{{ ansible_distribution_major_version }} - Extras"
2019-02-01 08:19:48 +08:00
state : present
baseurl : "{{ extras_rh_repo_base_url }}"
file : "extras"
2020-03-30 16:13:53 +08:00
gpgcheck : "{{ 'yes' if extras_rh_repo_gpgkey else 'no' }}"
2019-05-03 05:24:21 +08:00
gpgkey : "{{ extras_rh_repo_gpgkey }}"
2019-02-01 08:19:48 +08:00
keepcache : "{{ docker_rpm_keepcache | default('1') }}"
2019-02-13 08:46:32 +08:00
proxy : " {{ http_proxy | default('_none_') }}"
2019-02-01 08:19:48 +08:00
when :
2020-03-17 18:12:21 +08:00
- ansible_distribution in ["CentOS","RedHat"] and not is_ostree
2019-02-01 08:19:48 +08:00
- yum_result.results | length == 0
2015-12-31 00:11:33 +08:00
- name : ensure docker packages are installed
action : "{{ docker_package_info.pkg_mgr }}"
2016-01-13 00:56:29 +08:00
args :
2019-05-03 05:24:21 +08:00
pkg : "{{ item.name }}"
force : "{{ item.force|default(omit) }}"
state : "{{ item.state | default('present') }}"
2018-09-20 01:57:20 +08:00
update_cache : "{{ omit if ansible_distribution == 'Fedora' else True }}"
2020-12-24 05:12:26 +08:00
enablerepo : "{{ item.repo | default(omit) }}"
2016-09-13 21:29:22 +08:00
register : docker_task_result
2018-10-17 06:33:30 +08:00
until : docker_task_result is succeeded
2016-09-13 21:29:22 +08:00
retries : 4
2018-10-10 10:14:33 +08:00
delay : "{{ retry_stagger | d(3) }}"
2016-03-30 16:23:43 +08:00
with_items : "{{ docker_package_info.pkgs }}"
2017-01-16 22:52:28 +08:00
notify : restart docker
2020-08-28 17:28:53 +08:00
when : not (ansible_os_family in ["Flatcar Container Linux by Kinvolk", "ClearLinux"] or is_ostree) and (docker_package_info.pkgs|length > 0)
2018-08-22 22:15:38 +08:00
2018-12-18 17:39:25 +08:00
- name : Ensure docker packages are installed
action : "{{ docker_package_info.pkg_mgr }}"
args :
name : "{{ item.name }}"
2019-05-03 05:24:21 +08:00
state : "{{ item.state | default('present') }}"
2018-12-18 17:39:25 +08:00
with_items : "{{ docker_package_info.pkgs }}"
register : docker_task_result
until : docker_task_result is succeeded
retries : 4
delay : "{{ retry_stagger | d(3) }}"
notify : restart docker
when : ansible_os_family in ["ClearLinux"]
2018-06-05 19:15:20 +08:00
# This is required to ensure any apt upgrade will not break kubernetes
2019-06-06 16:16:13 +08:00
- name : Tell Debian hosts not to change the docker version with apt upgrade
dpkg_selections :
2020-12-05 10:21:25 +08:00
name : "{{ item }}"
2019-06-06 16:16:13 +08:00
selection : hold
when : ansible_os_family in ["Debian"]
2020-12-05 10:21:25 +08:00
with_items :
- docker-ce
- docker-ce-cli
2018-06-05 19:15:20 +08:00
2019-04-03 16:37:44 +08:00
- name : ensure docker started, remove our config if docker start failed and try again
block :
- name : ensure service is started if docker packages are already present
service :
name : docker
state : started
when : docker_task_result is not changed
rescue :
- debug :
msg : "Docker start failed. Try to remove our config"
- name : remove kubespray generated config
file :
path : "{{ item }}"
state : absent
with_items :
- /etc/systemd/system/docker.service.d/http-proxy.conf
- /etc/systemd/system/docker.service.d/docker-options.conf
- /etc/systemd/system/docker.service.d/docker-dns.conf
- /etc/systemd/system/docker.service.d/docker-orphan-cleanup.conf
notify : restart docker
2018-04-26 17:52:06 +08:00
2017-12-12 05:57:26 +08:00
- name : flush handlers so we can wait for docker to come up
meta : flush_handlers
2019-07-08 21:44:35 +08:00
# Install each plugin using a looped include to make error handling in the included task simpler.
- include_tasks : docker_plugin.yml
loop : "{{ docker_plugins }}"
loop_control :
loop_var : docker_plugin
2016-11-05 05:40:14 +08:00
- name : Set docker systemd config
2018-01-29 19:37:48 +08:00
import_tasks : systemd.yml
2016-01-25 09:01:25 +08:00
2015-12-31 00:11:33 +08:00
- name : ensure docker service is started and enabled
service :
name : "{{ item }}"
enabled : yes
state : started
with_items :
2016-12-08 21:36:00 +08:00
- docker