Browse Source

Convert containerd molecule to ansible verifier

pull/12302/head
Max Gautier 3 months ago
parent
commit
3f26203ed0
Failed to extract signature
4 changed files with 64 additions and 56 deletions
  1. 2
      roles/container-engine/containerd/molecule/default/molecule.yml
  2. 55
      roles/container-engine/containerd/molecule/default/tests/test_default.py
  3. 39
      roles/container-engine/containerd/molecule/default/verify.yml
  4. 24
      roles/container-engine/molecule/test_cri.yml

2
roles/container-engine/containerd/molecule/default/molecule.yml

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

55
roles/container-engine/containerd/molecule/default/tests/test_default.py

@ -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

39
roles/container-engine/containerd/molecule/default/verify.yml

@ -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)

24
roles/container-engine/molecule/test_cri.yml

@ -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
Loading…
Cancel
Save