Skip to content

Commit 903c061

Browse files
authored
Docker CE support for hpc-rocky-linux-8 image (GoogleCloudPlatform#4867)
2 parents 071f031 + ecf3c9b commit 903c061

1 file changed

Lines changed: 92 additions & 43 deletions

File tree

Lines changed: 92 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2024 "Google LLC"
1+
# Copyright 2025 "Google LLC"
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.
@@ -21,39 +21,88 @@
2121
docker_daemon_config: ''
2222
enable_docker_world_writable: false
2323
tasks:
24+
- name: Gather distribution facts
25+
ansible.builtin.setup:
26+
gather_subset: platform
27+
2428
- name: Check if docker is installed
2529
ansible.builtin.stat:
2630
path: /usr/bin/docker
2731
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
4188
- name: Create Docker daemon configuration
4289
ansible.builtin.copy:
4390
dest: /etc/docker/daemon.json
91+
content: "{{ docker_daemon_config }}"
92+
owner: root
93+
group: root
4494
mode: '0644'
45-
content: '{{ docker_daemon_config }}'
4695
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+
5098
- name: Create Docker service override directory
5199
ansible.builtin.file:
52100
path: /etc/systemd/system/docker.service.d
53101
state: directory
54102
owner: root
55103
group: root
56104
mode: '0755'
105+
57106
- name: Create Docker service override configuration
58107
ansible.builtin.copy:
59108
dest: /etc/systemd/system/docker.service.d/data-root.conf
@@ -64,25 +113,29 @@
64113
RequiresMountsFor={{ docker_data_root }}
65114
{% endif %}
66115
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+
86139
- name: Delete Docker socket override configuration
87140
ansible.builtin.file:
88141
path: /etc/systemd/system/docker.socket.d/world-writable.conf
@@ -100,14 +153,10 @@
100153
ansible.builtin.service:
101154
name: docker.socket
102155
state: restarted
103-
- name: Restart Docker
104-
ansible.builtin.service:
105-
name: docker.service
106-
state: restarted
107156

108157
post_tasks:
109-
- name: Start Docker
158+
- name: Restart Docker
110159
ansible.builtin.service:
111160
name: docker.service
112-
state: started
161+
state: restarted
113162
enabled: true

0 commit comments

Comments
 (0)