diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f35b988fe..b8f7f493b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -72,3 +72,4 @@ include: - .gitlab-ci/shellcheck.yml - .gitlab-ci/terraform.yml - .gitlab-ci/packet.yml + - .gitlab-ci/vagrant.yml diff --git a/.gitlab-ci/vagrant.yml b/.gitlab-ci/vagrant.yml new file mode 100644 index 000000000..b374843a7 --- /dev/null +++ b/.gitlab-ci/vagrant.yml @@ -0,0 +1,16 @@ +--- + +molecule_tests: + tags: [vagrant] + only: [/^pr-.*$/] + except: ['triggers'] + image: quay.io/miouge/kubespray-vagrant + services: [] + stage: deploy-part1 + before_script: + - tests/scripts/rebase.sh + - apt-get update && apt-get install -y python3-pip + - update-alternatives --install /usr/bin/python python /usr/bin/python3 10 + - python -m pip install -r tests/requirements.txt + script: + - ./tests/scripts/molecule_run.sh diff --git a/roles/bootstrap-os/defaults/main.yml b/roles/bootstrap-os/defaults/main.yml index ad8b7aa8c..d0b328168 100644 --- a/roles/bootstrap-os/defaults/main.yml +++ b/roles/bootstrap-os/defaults/main.yml @@ -23,3 +23,5 @@ fedora_coreos_packages: ## General # Set the hostname to inventory_hostname override_system_hostname: true + +is_fedora_coreos: false \ No newline at end of file diff --git a/roles/bootstrap-os/molecule/default/molecule.yml b/roles/bootstrap-os/molecule/default/molecule.yml new file mode 100644 index 000000000..8c6c6bd28 --- /dev/null +++ b/roles/bootstrap-os/molecule/default/molecule.yml @@ -0,0 +1,44 @@ +--- +scenario: + name: default + test_sequence: + - lint + - destroy + - dependency + - syntax + - create + - prepare + - converge + # - idempotence # skip + - side_effect + - verify + - destroy +dependency: + name: galaxy +lint: + name: yamllint + options: + config-file: ../../.yamllint +driver: + name: vagrant + provider: + name: libvirt +platforms: + - name: ubuntu18 + box: generic/ubuntu1804 + cpus: 2 + memory: 2048 +provisioner: + name: ansible + lint: + name: ansible-lint + inventory: + group_vars: + all: + user: + name: foo + comment: My test comment +verifier: + name: testinfra + lint: + name: flake8 diff --git a/roles/bootstrap-os/molecule/default/playbook.yml b/roles/bootstrap-os/molecule/default/playbook.yml new file mode 100644 index 000000000..1f44ec9ca --- /dev/null +++ b/roles/bootstrap-os/molecule/default/playbook.yml @@ -0,0 +1,6 @@ +--- +- name: Converge + hosts: all + gather_facts: no + roles: + - role: bootstrap-os diff --git a/roles/bootstrap-os/molecule/default/tests/test_default.py b/roles/bootstrap-os/molecule/default/tests/test_default.py new file mode 100644 index 000000000..64c59dd15 --- /dev/null +++ b/roles/bootstrap-os/molecule/default/tests/test_default.py @@ -0,0 +1,11 @@ +import os + +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE'] +).get_hosts('all') + + +def test_python(host): + assert host.exists('python3') or host.exists('python') diff --git a/tests/requirements.txt b/tests/requirements.txt index 242d3a286..c9782264f 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -6,3 +6,5 @@ dopy==0.3.7 cryptography==2.8 ansible-lint==4.2.0 openshift==0.8.8 +molecule==2.22 +python-vagrant==0.5.15 diff --git a/tests/scripts/molecule_run.sh b/tests/scripts/molecule_run.sh new file mode 100755 index 000000000..deb064268 --- /dev/null +++ b/tests/scripts/molecule_run.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -euxo pipefail + +export LC_ALL=C.UTF-8 +export LANG=C.UTF-8 + +for d in $(find roles -name molecule -type d) +do + cd $(dirname $d) + molecule test --all + cd - +done \ No newline at end of file