You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
5.5 KiB

9 years ago
9 years ago
9 years ago
  1. ---
  2. - name: check if fedora coreos
  3. stat:
  4. path: /run/ostree-booted
  5. get_attributes: no
  6. get_checksum: no
  7. get_mime: no
  8. register: ostree
  9. - name: set is_ostree
  10. set_fact:
  11. is_ostree: "{{ ostree.stat.exists }}"
  12. - name: gather os specific variables
  13. include_vars: "{{ item }}"
  14. with_first_found:
  15. - files:
  16. - "{{ ansible_distribution|lower }}-{{ ansible_distribution_version|lower|replace('/', '_') }}.yml"
  17. - "{{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}-{{ host_architecture }}.yml"
  18. - "{{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}.yml"
  19. - "{{ ansible_distribution|lower }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.yml"
  20. - "{{ ansible_distribution|lower }}-{{ host_architecture }}.yml"
  21. - "{{ ansible_distribution|lower }}.yml"
  22. - "{{ ansible_os_family|lower }}-{{ host_architecture }}.yml"
  23. - "{{ ansible_os_family|lower }}.yml"
  24. - defaults.yml
  25. paths:
  26. - ../vars
  27. skip: true
  28. tags:
  29. - facts
  30. - name: Warn about Docker version on SUSE
  31. debug:
  32. msg: "SUSE distributions always install Docker from the distro repos"
  33. when: ansible_pkg_mgr == 'zypper'
  34. - include_tasks: set_facts_dns.yml
  35. when: dns_mode != 'none' and resolvconf_mode == 'docker_dns'
  36. tags:
  37. - facts
  38. - name: disable unified_cgroup_hierarchy in Fedora 31+
  39. command: grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
  40. when:
  41. - ansible_distribution == "Fedora"
  42. - (ansible_distribution_major_version | int) >= 31
  43. - ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] is not defined or ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] != '0'
  44. - name: reboot in Fedora 31+
  45. reboot:
  46. when:
  47. - ansible_distribution == "Fedora"
  48. - (ansible_distribution_major_version | int) >= 31
  49. - ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] is not defined or ansible_proc_cmdline['systemd.unified_cgroup_hierarchy'] != '0'
  50. - import_tasks: pre-upgrade.yml
  51. - name: ensure docker-ce repository public key is installed
  52. apt_key:
  53. id: "{{ item }}"
  54. url: "{{ docker_repo_key_info.url }}"
  55. state: present
  56. register: keyserver_task_result
  57. until: keyserver_task_result is succeeded
  58. retries: 4
  59. delay: "{{ retry_stagger | d(3) }}"
  60. with_items: "{{ docker_repo_key_info.repo_keys }}"
  61. environment: "{{ proxy_env }}"
  62. when: ansible_pkg_mgr == 'apt'
  63. - name: ensure docker-ce repository is enabled
  64. apt_repository:
  65. repo: "{{ item }}"
  66. state: present
  67. with_items: "{{ docker_repo_info.repos }}"
  68. when: ansible_pkg_mgr == 'apt'
  69. - name: Configure docker repository on Fedora
  70. template:
  71. src: "fedora_docker.repo.j2"
  72. dest: "{{ yum_repo_dir }}/docker.repo"
  73. when: ansible_distribution == "Fedora" and not is_ostree
  74. - name: Configure docker repository on RedHat/CentOS/Oracle Linux
  75. template:
  76. src: "rh_docker.repo.j2"
  77. dest: "{{ yum_repo_dir }}/docker-ce.repo"
  78. when: ansible_distribution in ["CentOS","RedHat","OracleLinux"] and not is_ostree
  79. - name: Remove dpkg hold
  80. dpkg_selections:
  81. name: "{{ item }}"
  82. selection: install
  83. when: ansible_pkg_mgr == 'apt'
  84. changed_when: false
  85. with_items:
  86. - "{{ containerd_package }}"
  87. - docker-ce
  88. - docker-ce-cli
  89. - name: ensure docker packages are installed
  90. package:
  91. name: "{{ docker_package_info.pkgs }}"
  92. state: "{{ docker_package_info.state | default('present') }}"
  93. module_defaults:
  94. apt:
  95. update_cache: true
  96. dnf:
  97. enablerepo: "{{ docker_package_info.enablerepo | default(omit) }}"
  98. yum:
  99. enablerepo: "{{ docker_package_info.enablerepo | default(omit) }}"
  100. zypper:
  101. update_cache: true
  102. register: docker_task_result
  103. until: docker_task_result is succeeded
  104. retries: 4
  105. delay: "{{ retry_stagger | d(3) }}"
  106. notify: restart docker
  107. when:
  108. - not ansible_os_family in ["Flatcar Container Linux by Kinvolk"]
  109. - not is_ostree
  110. - docker_package_info.pkgs|length > 0
  111. # This is required to ensure any apt upgrade will not break kubernetes
  112. - name: Tell Debian hosts not to change the docker version with apt upgrade
  113. dpkg_selections:
  114. name: "{{ item }}"
  115. selection: hold
  116. when: ansible_pkg_mgr == 'apt'
  117. changed_when: false
  118. with_items:
  119. - "{{ containerd_package }}"
  120. - docker-ce
  121. - docker-ce-cli
  122. - name: ensure docker started, remove our config if docker start failed and try again
  123. block:
  124. - name: ensure service is started if docker packages are already present
  125. service:
  126. name: docker
  127. state: started
  128. when: docker_task_result is not changed
  129. rescue:
  130. - debug:
  131. msg: "Docker start failed. Try to remove our config"
  132. - name: remove kubespray generated config
  133. file:
  134. path: "{{ item }}"
  135. state: absent
  136. with_items:
  137. - /etc/systemd/system/docker.service.d/http-proxy.conf
  138. - /etc/systemd/system/docker.service.d/docker-options.conf
  139. - /etc/systemd/system/docker.service.d/docker-dns.conf
  140. - /etc/systemd/system/docker.service.d/docker-orphan-cleanup.conf
  141. notify: restart docker
  142. - name: flush handlers so we can wait for docker to come up
  143. meta: flush_handlers
  144. # Install each plugin using a looped include to make error handling in the included task simpler.
  145. - include_tasks: docker_plugin.yml
  146. loop: "{{ docker_plugins }}"
  147. loop_control:
  148. loop_var: docker_plugin
  149. - name: Set docker systemd config
  150. import_tasks: systemd.yml
  151. - name: ensure docker service is started and enabled
  152. service:
  153. name: "{{ item }}"
  154. enabled: yes
  155. state: started
  156. with_items:
  157. - docker