# Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. --- - name: Ensuring docker and support packages are present become: yes package: name: - docker.io - runc update_cache: yes state: present - name: Ensure docker group exists group: name: docker state: present - name: Add user "{{ ansible_user }}" to docker group become: yes user: name: "{{ ansible_user }}" groups: - docker append: yes - name: Reset ssh connection to add docker group to user meta: reset_connection ignore_errors: true - block: - name: Create docker service directory file: path: /etc/systemd/system/docker.service.d/ state: directory mode: '0755' - name: Configure proxy for docker service if enabled template: src: http-proxy-conf.j2 dest: /etc/systemd/system/docker.service.d/http-proxy.conf when: proxy.enabled|bool == true become: yes - name: Create docker config directory file: path: "{{ docker_config_path }}" state: directory mode: '0755' become: yes - name: Debug zuul site mirror var debug: msg: - "zuul_site_mirror_fqdn: {{ zuul_site_mirror_fqdn | default('NONE') }}" ignore_errors: yes - name: Set docker_config variable set_fact: docker_config_file: "{{ docker_config_path }}/daemon.json" - name: Check if docker config file exists stat: path: "{{ docker_config_file }}" register: res # Avoid long if/then/else blocks here below, pretend that config exists - name: Create empty docker config if it doesn't exist copy: content: "{}" dest: "{{ docker_config_file }}" when: not res.stat.exists become: yes - name: Get current docker configuration command: "cat {{ docker_config_file }}" register: res - name: Get current docker configuration as json set_fact: default_docker_conf: "{{ res.stdout | from_json }}" - name: Debug current docker configuration debug: var: default_docker_conf - name: Merge default and custom configuration set_fact: merged_docker_config: "{{ default_docker_conf | combine(docker_config) }}" - name: Debug merged docker configuration debug: var: merged_docker_config - name: Add container images mirror configuration set_fact: merged_docker_config: "{{ merged_docker_config | combine({ 'registry-mirrors': [ 'http://' + zuul_site_mirror_fqdn + ':8082' ] })}}" when: zuul_site_mirror_fqdn is defined - name: Debug merged docker configuration debug: var: merged_docker_config - name: Save merged docker daemon configuration copy: content: "{{ merged_docker_config | to_nice_json }}" dest: "{{ docker_config_file }}" become: yes - name: Start docker become: yes systemd: name: docker state: restarted daemon_reload: yes enabled: true - name: Change group ownership on docker socket become: yes file: path: /var/run/docker.sock group: docker