mirror of
https://github.com/containers/ansible-podman-collections.git
synced 2026-02-04 07:11:49 +00:00
* Add quadlet file mode option Signed-off-by: ghoudmon <guillaume@houdmon.com> * Fix file mode only change test Signed-off-by: ghoudmon <guillaume@houdmon.com> --------- Signed-off-by: ghoudmon <guillaume@houdmon.com>
332 lines
9 KiB
YAML
332 lines
9 KiB
YAML
- name: Test podman play kube
|
|
block:
|
|
|
|
- name: Discover podman version
|
|
shell: podman version | grep "^Version:" | awk {'print $2'}
|
|
register: podman_v
|
|
|
|
- name: Discover cgroups version
|
|
shell: podman info | grep cgroupVersion | awk {'print $2'}
|
|
register: cgroups
|
|
|
|
- name: Set cgroups version
|
|
set_fact:
|
|
cgroups_version: "{{ cgroups.stdout }}"
|
|
|
|
- name: Copy files to known place
|
|
copy:
|
|
src: "{{ item }}"
|
|
dest: "/tmp/{{ item }}"
|
|
remote_src: false
|
|
loop:
|
|
- play1.yaml
|
|
- play3.yaml
|
|
- play-root1.yaml
|
|
- play-root3.yaml
|
|
- envdata.yaml
|
|
|
|
- name: Delete all pods leftovers from tests
|
|
containers.podman.podman_pod:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- web-deploy
|
|
- web-deploy-pod
|
|
- web-deploy-pod-0
|
|
|
|
- name: Play kube file
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /tmp/play1.yaml
|
|
state: started
|
|
register: play1
|
|
|
|
- name: Play same kube file again
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /tmp/play1.yaml
|
|
state: started
|
|
register: play2
|
|
|
|
- name: Check info
|
|
assert:
|
|
that:
|
|
- play1 is changed
|
|
- play2 is not changed
|
|
|
|
- name: Recreate play
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /tmp/play1.yaml
|
|
state: started
|
|
recreate: true
|
|
register: play3
|
|
|
|
- name: Check info
|
|
assert:
|
|
that:
|
|
- play3 is changed
|
|
|
|
- name: Check 'created' after 'started'
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /tmp/play1.yaml
|
|
state: created
|
|
register: play4
|
|
|
|
- name: Check info
|
|
assert:
|
|
that:
|
|
- play4 is not changed
|
|
|
|
- name: Run with configmap
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /tmp/play3.yaml
|
|
debug: true
|
|
state: started
|
|
recreate: true
|
|
configmap:
|
|
- /tmp/envdata.yaml
|
|
register: play5
|
|
|
|
- name: Check info
|
|
assert:
|
|
that:
|
|
- play5 is changed
|
|
|
|
- name: Check if pod is running well
|
|
containers.podman.podman_pod_info:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
name: web-deploy-pod
|
|
register: info1
|
|
|
|
- name: Check pod info
|
|
assert:
|
|
that:
|
|
- info1['pods'][0]['State'] == 'Running'
|
|
|
|
- name: Remove pods created by kube play
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /tmp/play3.yaml
|
|
state: absent
|
|
register: remove_pod
|
|
|
|
- name: Check if the pod was removed as expected
|
|
assert:
|
|
that:
|
|
- remove_pod is changed
|
|
|
|
- name: Get deleted pod info
|
|
containers.podman.podman_pod_info:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
name: web-deploy-pod
|
|
register: nonexist
|
|
|
|
- name: Check if the result is as expected
|
|
assert:
|
|
that:
|
|
- nonexist.pods == []
|
|
|
|
|
|
- name: Create a Quadlet for kube with filename
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /home/kubeuser/tmp/multipod.yaml
|
|
state: quadlet
|
|
quadlet_dir: /tmp
|
|
quadlet_filename: customfile
|
|
quadlet_file_mode: '0644'
|
|
|
|
- name: Check if files exists
|
|
stat:
|
|
path: /tmp/customfile.kube
|
|
register: quadlet_file_custom
|
|
|
|
- name: Fail if no file is present or wrong mode
|
|
assert:
|
|
that:
|
|
- quadlet_file_custom.stat.exists
|
|
- quadlet_file_custom.stat.mode == '0644'
|
|
|
|
- name: Create a kube quadlet without filename
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /home/kubeuser/tmp/multipod.yaml
|
|
state: quadlet
|
|
quadlet_dir: /tmp
|
|
register: quadlet_file_no_name
|
|
ignore_errors: true
|
|
|
|
- name: Check that task failed
|
|
assert:
|
|
that:
|
|
- quadlet_file_no_name is failed
|
|
|
|
- name: Create a kube quadlet
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /home/kubeuser/tmp/multipod.yaml
|
|
state: quadlet
|
|
userns: keep-id:uid=200,gid=210
|
|
log_driver: journald
|
|
network: host
|
|
configmap:
|
|
- /tmp/configmap1
|
|
- /tmp/configmap2
|
|
debug: true
|
|
quadlet_dir: /tmp
|
|
quadlet_filename: quadlet
|
|
quadlet_options:
|
|
- "PodmanArgs=--annotation=key1=value1"
|
|
- "PodmanArgs=--context-dir /my/path"
|
|
- |
|
|
[Install]
|
|
WantedBy=default.target
|
|
|
|
- name: Check if files exists
|
|
stat:
|
|
path: /tmp/quadlet.kube
|
|
register: quadlet_file
|
|
|
|
- name: Check output is correct for Quadlet container in /tmp/quadlet.kube file
|
|
assert:
|
|
that:
|
|
- quadlet_file.stat.exists
|
|
|
|
- name: Check for the existence of lines in /tmp/quadlet.kube
|
|
lineinfile:
|
|
path: /tmp/quadlet.kube
|
|
line: "{{ item }}"
|
|
state: present
|
|
check_mode: yes
|
|
register: line_check
|
|
loop:
|
|
- "[Kube]"
|
|
- "ConfigMap=/tmp/configmap1"
|
|
- "ConfigMap=/tmp/configmap2"
|
|
- "LogDriver=journald"
|
|
- "Network=host"
|
|
- "Yaml=/home/kubeuser/tmp/multipod.yaml"
|
|
- "UserNS=keep-id:uid=200,gid=210"
|
|
- "GlobalArgs=--log-level debug"
|
|
- "WantedBy=default.target"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
|
|
- name: Fail the task if any line is not present
|
|
fail:
|
|
msg: "The following line is not present in /tmp/quadlet.kube: {{ item.item }}"
|
|
when: item.changed
|
|
loop: "{{ line_check.results }}"
|
|
loop_control:
|
|
label: "{{ item.item }}"
|
|
|
|
- name: Create a kube quadlet - same
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /home/kubeuser/tmp/multipod.yaml
|
|
state: quadlet
|
|
userns: keep-id:uid=200,gid=210
|
|
log_driver: journald
|
|
network: host
|
|
configmap:
|
|
- /tmp/configmap1
|
|
- /tmp/configmap2
|
|
debug: true
|
|
quadlet_dir: /tmp
|
|
quadlet_filename: quadlet.kube
|
|
quadlet_options:
|
|
- "PodmanArgs=--annotation=key1=value1"
|
|
- "PodmanArgs=--context-dir /my/path"
|
|
- |
|
|
[Install]
|
|
WantedBy=default.target
|
|
register: quad2
|
|
|
|
- name: Check if quadlet changed
|
|
assert:
|
|
that:
|
|
- quad2 is not changed
|
|
|
|
- name: Create a kube quadlet - different
|
|
containers.podman.podman_play:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
kube_file: /home/kubeuser/tmp/multipod.yaml
|
|
state: quadlet
|
|
userns: keep-id:uid=200,gid=210
|
|
log_driver: journald
|
|
network: host
|
|
configmap:
|
|
- /tmp/configmap55
|
|
- /tmp/configmap2
|
|
debug: true
|
|
quadlet_dir: /tmp
|
|
quadlet_filename: quadlet.kube
|
|
quadlet_options:
|
|
- "PodmanArgs=--annotation=key1=value1"
|
|
- "PodmanArgs=--context-dir /my/path"
|
|
- |
|
|
[Install]
|
|
WantedBy=default.target
|
|
register: quad3
|
|
|
|
- name: Print diff
|
|
debug:
|
|
var: quad3.diff
|
|
|
|
- name: Check if changed and diff
|
|
assert:
|
|
that:
|
|
- quad3 is changed
|
|
- "'configmap55' in quad3.diff.after"
|
|
|
|
always:
|
|
|
|
- name: Delete all pods leftovers from tests
|
|
containers.podman.podman_pod:
|
|
executable: "{{ test_executable | default('podman') }}"
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- web-deploy
|
|
- web-deploy-pod
|
|
- web-deploy-pod-0
|
|
- web-deploy-pod-1
|
|
- web-deploy-pod-2
|
|
|
|
- name: Test idempotency for root pods
|
|
include_tasks: root-play.yml
|
|
vars:
|
|
ansible_python_interpreter: "/usr/bin/python"
|
|
args:
|
|
apply:
|
|
become: true
|
|
|
|
- name: Test play kube with on-demand image build
|
|
include_tasks: play-with-build.yml
|
|
vars:
|
|
ansible_python_interpreter: "/usr/bin/python"
|
|
|
|
- name: Test play kube options
|
|
include_tasks: play-with-options.yml
|
|
vars:
|
|
ansible_python_interpreter: "/usr/bin/python"
|
|
target_pod: web-deploy
|
|
target_container: web-deploy-alpinex
|
|
log_opt:
|
|
path: /tmp/mycontainer.json
|
|
size: 10mb
|
|
userns: host
|
|
kube_dir: /tmp
|
|
kube_file: play-pod.yaml
|
|
|
|
- name: Test play kube with multi doc yaml
|
|
include_tasks: play-multi-yaml.yml
|
|
vars:
|
|
ansible_python_interpreter: "/usr/bin/python"
|
|
kube_dir: /tmp
|
|
kube_file: multi-yaml.yml
|
|
target_container: foobar-container-1
|