Skip to content

Commit c4b239e

Browse files
authored
Merge pull request #382 from stackhpc/upstream/master-2025-02-03
Synchronise master with upstream
2 parents d2deb56 + 9130dae commit c4b239e

File tree

80 files changed

+871
-294
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+871
-294
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from ansible.plugins.action import ActionBase
2+
3+
_engine_to_module = {
4+
'docker': 'community.docker.docker_container',
5+
'podman': 'containers.podman.podman_container'
6+
}
7+
8+
class ActionModule(ActionBase):
9+
def run(self, tmp=None, task_vars=None):
10+
super(ActionModule, self).run(tmp, task_vars)
11+
module_args = self._task.args.copy()
12+
engine = task_vars.get("container_engine", "docker")
13+
if engine == "podman":
14+
auto_remove = module_args.pop('cleanup', None)
15+
if auto_remove:
16+
module_args["auto_remove"] = True
17+
# TODO(wszumski): Drop unsupported arguments. In the future
18+
# we could emulate these options.
19+
module_args.pop('timeout', None)
20+
module_args.pop('comparisons', None)
21+
module = _engine_to_module.get(engine)
22+
module_return = self._execute_module(module_name=module,
23+
module_args=module_args,
24+
task_vars=task_vars, tmp=tmp)
25+
return module_return
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from ansible.errors import AnsibleError
2+
from ansible.plugins.action import ActionBase
3+
4+
_engine_to_module = {
5+
'docker': 'community.docker.docker_image',
6+
'podman': 'containers.podman.podman_image'
7+
}
8+
9+
class ActionModule(ActionBase):
10+
def run(self, tmp=None, task_vars=None):
11+
super(ActionModule, self).run(tmp, task_vars)
12+
module_args = self._task.args.copy()
13+
engine = task_vars.get("container_engine", "docker")
14+
if engine == "podman":
15+
# Translate from docker args
16+
source = module_args["source"]
17+
if source == "build":
18+
module_args["state"] = "build"
19+
elif source == "pull":
20+
module_args["pull"] = True
21+
else:
22+
raise AnsibleError(f'Unsupported source parameter: {source}')
23+
del module_args["source"]
24+
module = _engine_to_module.get(engine)
25+
module_return = self._execute_module(module_name=module,
26+
module_args=module_args,
27+
task_vars=task_vars, tmp=tmp)
28+
return module_return
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from ansible.plugins.action import ActionBase
2+
3+
_engine_to_module = {
4+
'docker': 'community.docker.docker_image_info',
5+
'podman': 'containers.podman.podman_image_info'
6+
}
7+
8+
class ActionModule(ActionBase):
9+
def run(self, tmp=None, task_vars=None):
10+
super(ActionModule, self).run(tmp, task_vars)
11+
module_args = self._task.args.copy()
12+
engine = task_vars.get("container_engine", "docker")
13+
module = _engine_to_module.get(engine)
14+
module_return = self._execute_module(module_name=module,
15+
module_args=module_args,
16+
task_vars=task_vars, tmp=tmp)
17+
return module_return
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from ansible.plugins.action import ActionBase
2+
3+
_engine_to_module = {
4+
'docker': 'community.docker.docker_login',
5+
'podman': 'containers.podman.podman_login'
6+
}
7+
8+
class ActionModule(ActionBase):
9+
def run(self, tmp=None, task_vars=None):
10+
super(ActionModule, self).run(tmp, task_vars)
11+
module_args = self._task.args.copy()
12+
engine = task_vars.get("container_engine", "docker")
13+
module = _engine_to_module.get(engine)
14+
if engine == "podman":
15+
# Drop unspported arguments
16+
module_args.pop("reauthorize", None)
17+
# Rename arguments that differ from docker
18+
if module_args.get("registry_url"):
19+
module_args["registry"] = module_args["registry_url"]
20+
del module_args["registry_url"]
21+
module_return = self._execute_module(module_name=module,
22+
module_args=module_args,
23+
task_vars=task_vars, tmp=tmp)
24+
return module_return
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from ansible.plugins.action import ActionBase
2+
3+
_engine_to_module = {
4+
'docker': 'community.docker.docker_volume',
5+
'podman': 'containers.podman.podman_volume'
6+
}
7+
8+
class ActionModule(ActionBase):
9+
def run(self, tmp=None, task_vars=None):
10+
super(ActionModule, self).run(tmp, task_vars)
11+
module_args = self._task.args.copy()
12+
engine = task_vars.get("container_engine", "docker")
13+
module = _engine_to_module.get(engine)
14+
module_return = self._execute_module(module_name=module,
15+
module_args=module_args,
16+
task_vars=task_vars, tmp=tmp)
17+
return module_return

ansible/container-engine.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
- name: Ensure docker is configured
3+
hosts: container-engine
4+
max_fail_percentage: >-
5+
{{ container_engine_max_fail_percentage |
6+
default(docker_max_fail_percentage) |
7+
default(host_configure_max_fail_percentage) |
8+
default(kayobe_max_fail_percentage) |
9+
default(100) }}
10+
tags:
11+
- docker
12+
- container-engine
13+
tasks:
14+
- include_role:
15+
name: docker
16+
vars:
17+
docker_daemon_mtu: "{{ public_net_name | net_mtu | default }}"
18+
docker_configure_for_zun: "{{ kolla_enable_zun | bool }}"
19+
docker_http_proxy: "{{ kolla_http_proxy }}"
20+
docker_https_proxy: "{{ kolla_https_proxy }}"
21+
docker_no_proxy: "{{ kolla_no_proxy | select | join(',') }}"
22+
when: container_engine == "docker"
23+
24+
- name: Ensure podman is configured
25+
hosts: container-engine
26+
max_fail_percentage: >-
27+
{{ container_engine_max_fail_percentage |
28+
default(host_configure_max_fail_percentage) |
29+
default(kayobe_max_fail_percentage) |
30+
default(100) }}
31+
tags:
32+
- podman
33+
- container-engine
34+
tasks:
35+
- include_role:
36+
name: openstack.kolla.podman
37+
when: container_engine == "podman"

ansible/container-image-build.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,16 @@
3434
group: "{{ ansible_facts.user_gid }}"
3535
become: True
3636

37-
- name: Login to docker registry
38-
docker_login:
37+
- name: Login to container registry
38+
kayobe_container_login:
3939
registry_url: "{{ kolla_docker_registry or omit }}"
4040
username: "{{ kolla_docker_registry_username }}"
4141
password: "{{ kolla_docker_registry_password }}"
4242
reauthorize: yes
4343
when:
4444
- kolla_docker_registry_username is truthy
4545
- kolla_docker_registry_password is truthy
46+
become: "{{ container_engine == 'podman' }}"
4647

4748
- name: Ensure Kolla container images are built
4849
shell:
@@ -51,6 +52,7 @@
5152
. {{ kolla_venv }}/bin/activate &&
5253
kolla-build
5354
--config-dir {{ kolla_build_config_path }}
55+
--engine {{ container_engine }}
5456
{% if kolla_docker_registry is not none %}--registry {{ kolla_docker_registry }}{% endif %}
5557
{% if push_images | bool %}--push{% endif %}
5658
{% if nocache | bool %}--nocache{% endif %}
@@ -59,3 +61,4 @@
5961
executable: /bin/bash
6062
with_items: "{{ container_image_sets }}"
6163
when: item.regexes != ''
64+
become: "{{ container_engine == 'podman' }}"

ansible/docker.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

ansible/infra-vm-host-configure.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121
- import_playbook: "mdadm.yml"
2222
- import_playbook: "luks.yml"
2323
- import_playbook: "lvm.yml"
24-
- import_playbook: "docker.yml"
24+
- import_playbook: "container-engine.yml"

ansible/inventory/group_vars/all/compute

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ compute_lvm_groups_default: "{{ [compute_lvm_group_data] if compute_lvm_group_da
8383
compute_lvm_groups_extra: []
8484

8585
# Whether a 'data' LVM volume group should exist on compute hosts. By default
86-
# this contains a 'docker-volumes' logical volume for Docker volume storage
86+
# this contains a 'docker-volumes' logical volume for container volume storage
87+
# if using the docker container engine, or a 'podman-volumes' logical volume
88+
# for container volume storage if using the podman container engine.
8789
# Default is false.
8890
compute_lvm_group_data_enabled: false
8991

@@ -100,25 +102,47 @@ compute_lvm_group_data:
100102
compute_lvm_group_data_disks:
101103
- changeme
102104

103-
# List of LVM logical volumes for the data volume group.
104-
compute_lvm_group_data_lvs:
105+
# List of LVM logical volumes for the data volume group when using docker.
106+
compute_lvm_group_data_docker_lvs:
105107
- "{{ compute_lvm_group_data_lv_docker_volumes }}"
106108

109+
# List of LVM logical volumes for the data volume group when using podman.
110+
compute_lvm_group_data_podman_lvs:
111+
- "{{ compute_lvm_group_data_lv_podman_volumes }}"
112+
113+
# List of LVM logical volumes for the data volume group.
114+
compute_lvm_group_data_lvs: "{{ compute_lvm_group_data_podman_lvs if container_engine == 'podman' else compute_lvm_group_data_docker_lvs }}"
115+
107116
# Docker volumes LVM backing volume.
108117
compute_lvm_group_data_lv_docker_volumes:
109118
lvname: docker-volumes
110119
size: "{{ compute_lvm_group_data_lv_docker_volumes_size }}"
111120
create: True
112121
filesystem: "{{ compute_lvm_group_data_lv_docker_volumes_fs }}"
113122
mount: True
114-
mntp: /var/lib/docker/volumes
123+
mntp: "{{ docker_volumes_path }}"
124+
125+
# Podman volumes LVM backing volume.
126+
compute_lvm_group_data_lv_podman_volumes:
127+
lvname: podman-volumes
128+
size: "{{ compute_lvm_group_data_lv_podman_volumes_size }}"
129+
create: True
130+
filesystem: "{{ compute_lvm_group_data_lv_podman_volumes_fs }}"
131+
mount: True
132+
mntp: "{{ podman_volumes_path }}"
115133

116134
# Size of docker volumes LVM backing volume.
117135
compute_lvm_group_data_lv_docker_volumes_size: 75%VG
118136

119137
# Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
120138
compute_lvm_group_data_lv_docker_volumes_fs: ext4
121139

140+
# Size of podman volumes LVM backing volume.
141+
compute_lvm_group_data_lv_podman_volumes_size: 75%VG
142+
143+
# Filesystem for podman volumes LVM backing volume. ext4 allows for shrinking.
144+
compute_lvm_group_data_lv_podman_volumes_fs: ext4
145+
122146
###############################################################################
123147
# Compute node sysctl configuration.
124148

0 commit comments

Comments
 (0)