|
1 | | -# Copyright 2024 "Google LLC" |
| 1 | +# Copyright 2025 "Google LLC" |
2 | 2 | # |
3 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
4 | 4 | # you may not use this file except in compliance with the License. |
|
21 | 21 | docker_daemon_config: '' |
22 | 22 | enable_docker_world_writable: false |
23 | 23 | tasks: |
| 24 | + - name: Gather distribution facts |
| 25 | + ansible.builtin.setup: |
| 26 | + gather_subset: platform |
| 27 | + |
24 | 28 | - name: Check if docker is installed |
25 | 29 | ansible.builtin.stat: |
26 | 30 | path: /usr/bin/docker |
27 | 31 | register: docker_binary |
28 | | - - name: Download Docker Installer |
29 | | - ansible.builtin.get_url: |
30 | | - url: https://get.docker.com |
31 | | - dest: /tmp/get-docker.sh |
32 | | - owner: root |
33 | | - group: root |
34 | | - mode: '0644' |
35 | | - when: not docker_binary.stat.exists |
36 | | - - name: Install Docker |
37 | | - ansible.builtin.command: sh /tmp/get-docker.sh |
38 | | - register: docker_installed |
39 | | - changed_when: docker_installed.rc != 0 |
40 | | - when: not docker_binary.stat.exists |
| 32 | + |
| 33 | + # Rocky Linux specific installation |
| 34 | + - name: Install Docker on Rocky Linux |
| 35 | + when: |
| 36 | + - ansible_distribution == "Rocky" |
| 37 | + - not docker_binary.stat.exists |
| 38 | + block: |
| 39 | + - name: Add Docker GPG key |
| 40 | + ansible.builtin.rpm_key: |
| 41 | + state: present |
| 42 | + key: https://download.docker.com/linux/rhel/gpg |
| 43 | + register: add_docker_key |
| 44 | + retries: 30 |
| 45 | + delay: 10 |
| 46 | + until: add_docker_key is succeeded |
| 47 | + |
| 48 | + - name: Add Docker repository for Rocky Linux |
| 49 | + ansible.builtin.get_url: |
| 50 | + url: https://download.docker.com/linux/rhel/docker-ce.repo |
| 51 | + dest: /etc/yum.repos.d/docker-ce.repo |
| 52 | + mode: '0644' |
| 53 | + owner: root |
| 54 | + group: root |
| 55 | + |
| 56 | + - name: Install Docker Engine Community Edition |
| 57 | + ansible.builtin.dnf: |
| 58 | + name: |
| 59 | + - docker-ce |
| 60 | + - docker-ce-cli |
| 61 | + - containerd.io |
| 62 | + - docker-buildx-plugin |
| 63 | + - docker-compose-plugin |
| 64 | + state: present |
| 65 | + update_cache: yes |
| 66 | + |
| 67 | + # Other distributions installation |
| 68 | + - name: Install Docker on other distributions |
| 69 | + when: |
| 70 | + - ansible_distribution != "Rocky" |
| 71 | + - not docker_binary.stat.exists |
| 72 | + block: |
| 73 | + - name: Download Docker Installer |
| 74 | + ansible.builtin.get_url: |
| 75 | + url: https://get.docker.com |
| 76 | + dest: /tmp/get-docker.sh |
| 77 | + owner: root |
| 78 | + group: root |
| 79 | + mode: '0755' |
| 80 | + |
| 81 | + - name: Install Docker Engine Community Edition |
| 82 | + ansible.builtin.command: sh /tmp/get-docker.sh |
| 83 | + register: docker_installed |
| 84 | + changed_when: docker_installed.rc == 0 |
| 85 | + failed_when: docker_installed.rc != 0 |
| 86 | + |
| 87 | + # Common tasks for all distributions |
41 | 88 | - name: Create Docker daemon configuration |
42 | 89 | ansible.builtin.copy: |
43 | 90 | dest: /etc/docker/daemon.json |
| 91 | + content: "{{ docker_daemon_config }}" |
| 92 | + owner: root |
| 93 | + group: root |
44 | 94 | mode: '0644' |
45 | | - content: '{{ docker_daemon_config }}' |
46 | 95 | validate: /usr/bin/dockerd --validate --config-file %s |
47 | | - when: docker_daemon_config |
48 | | - notify: |
49 | | - - Restart Docker |
| 96 | + when: docker_daemon_config | length > 0 |
| 97 | + |
50 | 98 | - name: Create Docker service override directory |
51 | 99 | ansible.builtin.file: |
52 | 100 | path: /etc/systemd/system/docker.service.d |
53 | 101 | state: directory |
54 | 102 | owner: root |
55 | 103 | group: root |
56 | 104 | mode: '0755' |
| 105 | + |
57 | 106 | - name: Create Docker service override configuration |
58 | 107 | ansible.builtin.copy: |
59 | 108 | dest: /etc/systemd/system/docker.service.d/data-root.conf |
|
64 | 113 | RequiresMountsFor={{ docker_data_root }} |
65 | 114 | {% endif %} |
66 | 115 | After=mount-localssd-raid.service |
67 | | - - name: Create Docker socket override directory |
68 | | - ansible.builtin.file: |
69 | | - path: /etc/systemd/system/docker.socket.d |
70 | | - state: directory |
71 | | - owner: root |
72 | | - group: root |
73 | | - mode: '0755' |
74 | | - when: enable_docker_world_writable |
75 | | - - name: Create Docker socket override configuration |
76 | | - ansible.builtin.copy: |
77 | | - dest: /etc/systemd/system/docker.socket.d/world-writable.conf |
78 | | - mode: '0644' |
79 | | - content: | |
80 | | - [Socket] |
81 | | - SocketMode=0666 |
82 | | - when: enable_docker_world_writable |
83 | | - notify: |
84 | | - - Reload SystemD |
85 | | - - Recreate Docker socket |
| 116 | + notify: Reload SystemD |
| 117 | + |
| 118 | + - when: enable_docker_world_writable |
| 119 | + block: |
| 120 | + - name: Create Docker socket override directory |
| 121 | + ansible.builtin.file: |
| 122 | + path: /etc/systemd/system/docker.socket.d |
| 123 | + state: directory |
| 124 | + owner: root |
| 125 | + group: root |
| 126 | + mode: '0755' |
| 127 | + |
| 128 | + - name: Create Docker socket override configuration |
| 129 | + ansible.builtin.copy: |
| 130 | + dest: /etc/systemd/system/docker.socket.d/world-writable.conf |
| 131 | + mode: '0644' |
| 132 | + content: | |
| 133 | + [Socket] |
| 134 | + SocketMode=0666 |
| 135 | + notify: |
| 136 | + - Reload SystemD |
| 137 | + - Recreate Docker socket |
| 138 | + |
86 | 139 | - name: Delete Docker socket override configuration |
87 | 140 | ansible.builtin.file: |
88 | 141 | path: /etc/systemd/system/docker.socket.d/world-writable.conf |
|
100 | 153 | ansible.builtin.service: |
101 | 154 | name: docker.socket |
102 | 155 | state: restarted |
103 | | - - name: Restart Docker |
104 | | - ansible.builtin.service: |
105 | | - name: docker.service |
106 | | - state: restarted |
107 | 156 |
|
108 | 157 | post_tasks: |
109 | | - - name: Start Docker |
| 158 | + - name: Restart Docker |
110 | 159 | ansible.builtin.service: |
111 | 160 | name: docker.service |
112 | | - state: started |
| 161 | + state: restarted |
113 | 162 | enabled: true |
0 commit comments