Convert containerd molecule to ansible verifier

This commit is contained in:
Max Gautier
2025-06-13 15:41:29 +02:00
parent a5ede2a5c7
commit 3f26203ed0
4 changed files with 64 additions and 56 deletions

View File

@@ -37,4 +37,4 @@ provisioner:
create: ../../../../../tests/cloud_playbooks/create-kubevirt.yml
prepare: ../../../molecule/prepare.yml
verifier:
name: testinfra
name: ansible

View File

@@ -1,55 +0,0 @@
import os
import pytest
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
def test_service(host):
svc = host.service("containerd")
assert svc.is_running
assert svc.is_enabled
def test_version(host):
crictl = "/usr/local/bin/crictl"
path = "unix:///var/run/containerd/containerd.sock"
with host.sudo():
cmd = host.command(crictl + " --runtime-endpoint " + path + " version")
assert cmd.rc == 0
assert "RuntimeName: containerd" in cmd.stdout
@pytest.mark.parametrize('image, dest', [
('quay.io/kubespray/hello-world:latest', '/tmp/hello-world.tar')
])
def test_image_pull_save_load(host, image, dest):
nerdctl = "/usr/local/bin/nerdctl"
dest_file = host.file(dest)
with host.sudo():
pull_cmd = host.command(nerdctl + " pull " + image)
assert pull_cmd.rc ==0
with host.sudo():
save_cmd = host.command(nerdctl + " save -o " + dest + " " + image)
assert save_cmd.rc == 0
assert dest_file.exists
with host.sudo():
load_cmd = host.command(nerdctl + " load < " + dest)
assert load_cmd.rc == 0
@pytest.mark.parametrize('image', [
('quay.io/kubespray/hello-world:latest')
])
def test_run(host, image):
nerdctl = "/usr/local/bin/nerdctl"
with host.sudo():
cmd = host.command(nerdctl + " -n k8s.io run " + image)
assert cmd.rc == 0
assert "Hello from Docker" in cmd.stdout

View File

@@ -0,0 +1,39 @@
---
- name: Test containerd CRI
import_playbook: ../../../molecule/test_cri.yml
vars:
container_manager: containerd
cri_socket: unix:///var/run/containerd/containerd.sock
cri_name: containerd
- name: Test nerdctl
hosts: all
gather_facts: false
become: true
tasks:
- name: Get kubespray defaults
import_role:
name: ../../../../../kubespray_defaults
- name: Test nerdctl commands
command: "{{ bin_dir }}/nerdctl {{ item | join(' ') }}"
vars:
image: quay.io/kubespray/hello-world:latest
loop:
- - pull
- "{{ image }}"
- - save
- -o
- /tmp/hello-world.tar
- "{{ image }}"
- - load
- -i
- /tmp/hello-world.tar
- - -n
- k8s.io
- run
- "{{ image }}"
register: nerdctl
- name: Check log from running a container
assert:
that:
- ('Hello from Docker' in nerdctl.results[3].stdout)

View File

@@ -0,0 +1,24 @@
---
- name: Test container manager
hosts: all
gather_facts: false
become: true
tasks:
- name: Get kubespray defaults
import_role:
name: ../../kubespray_defaults
- name: Collect services facts
ansible.builtin.service_facts:
- name: Check container manager service is running
assert:
that:
- ansible_facts.services[container_manager + '.service'].state == 'running'
- ansible_facts.services[container_manager + '.service'].status == 'enabled'
- name: Check runtime version
command: "{{ bin_dir }}/crictl --runtime-endpoint {{ cri_socket }} version"
register: cri_version
failed_when: >
cri_version is failed or
("RuntimeName: " + cri_name) not in cri_version.stdout