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.

181 lines
5.6 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. mode: 0644
  74. when: ansible_distribution == "Fedora" and not is_ostree
  75. - name: Configure docker repository on RedHat/CentOS/Oracle/AlmaLinux Linux
  76. template:
  77. src: "rh_docker.repo.j2"
  78. dest: "{{ yum_repo_dir }}/docker-ce.repo"
  79. mode: 0644
  80. when:
  81. - ansible_os_family == "RedHat"
  82. - ansible_distribution != "Fedora"
  83. - not is_ostree
  84. - name: Remove dpkg hold
  85. dpkg_selections:
  86. name: "{{ item }}"
  87. selection: install
  88. when: ansible_pkg_mgr == 'apt'
  89. changed_when: false
  90. with_items:
  91. - "{{ containerd_package }}"
  92. - docker-ce
  93. - docker-ce-cli
  94. - name: ensure docker packages are installed
  95. package:
  96. name: "{{ docker_package_info.pkgs }}"
  97. state: "{{ docker_package_info.state | default('present') }}"
  98. module_defaults:
  99. apt:
  100. update_cache: true
  101. dnf:
  102. enablerepo: "{{ docker_package_info.enablerepo | default(omit) }}"
  103. yum:
  104. enablerepo: "{{ docker_package_info.enablerepo | default(omit) }}"
  105. zypper:
  106. update_cache: true
  107. register: docker_task_result
  108. until: docker_task_result is succeeded
  109. retries: 4
  110. delay: "{{ retry_stagger | d(3) }}"
  111. notify: restart docker
  112. when:
  113. - not ansible_os_family in ["Flatcar Container Linux by Kinvolk"]
  114. - not is_ostree
  115. - docker_package_info.pkgs|length > 0
  116. # This is required to ensure any apt upgrade will not break kubernetes
  117. - name: Tell Debian hosts not to change the docker version with apt upgrade
  118. dpkg_selections:
  119. name: "{{ item }}"
  120. selection: hold
  121. when: ansible_pkg_mgr == 'apt'
  122. changed_when: false
  123. with_items:
  124. - "{{ containerd_package }}"
  125. - docker-ce
  126. - docker-ce-cli
  127. - name: ensure docker started, remove our config if docker start failed and try again
  128. block:
  129. - name: ensure service is started if docker packages are already present
  130. service:
  131. name: docker
  132. state: started
  133. when: docker_task_result is not changed
  134. rescue:
  135. - debug: # noqa unnamed-task
  136. msg: "Docker start failed. Try to remove our config"
  137. - name: remove kubespray generated config
  138. file:
  139. path: "{{ item }}"
  140. state: absent
  141. with_items:
  142. - /etc/systemd/system/docker.service.d/http-proxy.conf
  143. - /etc/systemd/system/docker.service.d/docker-options.conf
  144. - /etc/systemd/system/docker.service.d/docker-dns.conf
  145. - /etc/systemd/system/docker.service.d/docker-orphan-cleanup.conf
  146. notify: restart docker
  147. - name: flush handlers so we can wait for docker to come up
  148. meta: flush_handlers
  149. # Install each plugin using a looped include to make error handling in the included task simpler.
  150. - include_tasks: docker_plugin.yml
  151. loop: "{{ docker_plugins }}"
  152. loop_control:
  153. loop_var: docker_plugin
  154. - name: Set docker systemd config
  155. import_tasks: systemd.yml
  156. - name: ensure docker service is started and enabled
  157. service:
  158. name: "{{ item }}"
  159. enabled: yes
  160. state: started
  161. with_items:
  162. - docker