systemcontainer_docker.yml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. ---
  2. # If docker_options are provided we should fail. We should not install docker and ignore
  3. # the users configuration. NOTE: docker_options == inventory:openshift_docker_options
  4. - name: Fail quickly if openshift_docker_options are set
  5. assert:
  6. that:
  7. - docker_options is defined
  8. - docker_options != ""
  9. msg: |
  10. Docker via System Container does not allow for the use of the openshift_docker_options
  11. variable. If you want to use openshift_docker_options you will need to use the
  12. traditional docker package install. Otherwise, comment out openshift_docker_options
  13. in your inventory file.
  14. # Used to pull and install the system container
  15. - name: Ensure atomic is installed
  16. package:
  17. name: atomic
  18. state: present
  19. when: not openshift.common.is_atomic | bool
  20. # At the time of writing the atomic command requires runc for it's own use. This
  21. # task is here in the even that the atomic package ever removes the dependency.
  22. - name: Ensure runc is installed
  23. package:
  24. name: runc
  25. state: present
  26. when: not openshift.common.is_atomic | bool
  27. # If we are on atomic, set http_proxy and https_proxy in /etc/atomic.conf
  28. - block:
  29. - name: Add http_proxy to /etc/atomic.conf
  30. lineinfile:
  31. path: /etc/atomic.conf
  32. line: "http_proxy={{ openshift.common.http_proxy | default('') }}"
  33. when:
  34. - openshift.common.http_proxy is defined
  35. - openshift.common.http_proxy != ''
  36. - name: Add https_proxy to /etc/atomic.conf
  37. lineinfile:
  38. path: /etc/atomic.conf
  39. line: "https_proxy={{ openshift.common.https_proxy | default('') }}"
  40. when:
  41. - openshift.common.https_proxy is defined
  42. - openshift.common.https_proxy != ''
  43. when: openshift.common.is_atomic | bool
  44. - block:
  45. - name: Set to default prepend
  46. set_fact:
  47. l_docker_image_prepend: "gscrivano"
  48. - name: Use Red Hat Registry for image when distribution is Red Hat
  49. set_fact:
  50. l_docker_image_prepend: "registry.access.redhat.com/openshift3"
  51. when: ansible_distribution == 'RedHat'
  52. - name: Use Fedora Registry for image when distribution is Fedora
  53. set_fact:
  54. l_docker_image_prepend: "registry.fedoraproject.org"
  55. when: ansible_distribution == 'Fedora'
  56. # For https://github.com/openshift/openshift-ansible/pull/4049#discussion_r114478504
  57. - name: Use a testing registry if requested
  58. set_fact:
  59. l_docker_image_prepend: "{{ openshift_docker_systemcontainer_image_registry_override }}"
  60. when:
  61. - openshift_docker_systemcontainer_image_registry_override is defined
  62. - openshift_docker_systemcontainer_image_registry_override != ""
  63. - name: Set the full image name
  64. set_fact:
  65. l_docker_image: "{{ l_docker_image_prepend }}/{{ openshift.docker.service_name }}:latest"
  66. - name: Pre-pull Container Enginer System Container image
  67. command: "atomic pull --storage ostree {{ l_docker_image }}"
  68. changed_when: false
  69. # Make sure docker is disabled Errors are ignored as docker may not
  70. # be installed.
  71. - name: Disable Docker
  72. systemd:
  73. name: docker
  74. enabled: no
  75. state: stopped
  76. daemon_reload: yes
  77. ignore_errors: True
  78. - name: Ensure docker.service.d directory exists
  79. file:
  80. path: "{{ docker_systemd_dir }}"
  81. state: directory
  82. - name: Ensure /etc/docker directory exists
  83. file:
  84. path: "{{ docker_conf_dir }}"
  85. state: directory
  86. - name: Install Container Enginer System Container
  87. oc_atomic_container:
  88. name: "{{ openshift.docker.service_name }}"
  89. image: "{{ l_docker_image }}"
  90. state: latest
  91. values:
  92. - "system-package=no"
  93. - name: Configure Container Engine Service File
  94. template:
  95. dest: "{{ docker_systemd_dir }}/custom.conf"
  96. src: systemcontainercustom.conf.j2
  97. # Set local versions of facts that must be in json format for daemon.json
  98. # NOTE: When jinja2.9+ is used the daemon.json file can move to using tojson
  99. - set_fact:
  100. l_docker_insecure_registries: "{{ docker_insecure_registries | default([]) | to_json }}"
  101. l_docker_log_options: "{{ docker_log_options | default({}) | to_json }}"
  102. l_docker_additional_registries: "{{ docker_additional_registries | default([]) | to_json }}"
  103. l_docker_blocked_registries: "{{ docker_blocked_registries | default([]) | to_json }}"
  104. l_docker_selinux_enabled: "{{ docker_selinux_enabled | default(true) | to_json }}"
  105. # Configure container-engine using the daemon.json file
  106. - name: Configure Container Engine
  107. template:
  108. dest: "{{ docker_conf_dir }}/daemon.json"
  109. src: daemon.json
  110. # Enable and start the container-engine service
  111. - name: Start the Container Engine service
  112. systemd:
  113. name: "{{ openshift.docker.service_name }}"
  114. enabled: yes
  115. state: started
  116. daemon_reload: yes
  117. register: start_result
  118. - set_fact:
  119. docker_service_status_changed: start_result | changed
  120. - meta: flush_handlers