From 066d6daa6a1747c693abb3a60190b00f146b3d44 Mon Sep 17 00:00:00 2001 From: dannc Date: Fri, 5 Aug 2022 09:38:26 +0700 Subject: [PATCH] add molecule testing against centos:7 --- .yamllint | 33 +++++++++++++++++++++++++ molecule/default/Dockerfile.j2 | 42 +++++++++++++++++++++++++++++++ molecule/default/converge.yml | 7 ++++++ molecule/default/molecule.yml | 45 ++++++++++++++++++++++++++++++++++ molecule/default/verify.yml | 8 ++++++ 5 files changed, 135 insertions(+) create mode 100644 .yamllint create mode 100644 molecule/default/Dockerfile.j2 create mode 100644 molecule/default/converge.yml create mode 100644 molecule/default/molecule.yml create mode 100644 molecule/default/verify.yml diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..8827676 --- /dev/null +++ b/.yamllint @@ -0,0 +1,33 @@ +--- +# Based on ansible-lint config +extends: default + +rules: + braces: + max-spaces-inside: 1 + level: error + brackets: + max-spaces-inside: 1 + level: error + colons: + max-spaces-after: -1 + level: error + commas: + max-spaces-after: -1 + level: error + comments: disable + comments-indentation: disable + document-start: disable + empty-lines: + max: 3 + level: error + hyphens: + level: error + indentation: disable + key-duplicates: enable + line-length: disable + new-line-at-end-of-file: disable + new-lines: + type: unix + trailing-spaces: disable + truthy: disable diff --git a/molecule/default/Dockerfile.j2 b/molecule/default/Dockerfile.j2 new file mode 100644 index 0000000..724a979 --- /dev/null +++ b/molecule/default/Dockerfile.j2 @@ -0,0 +1,42 @@ +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} +FROM {{ item.image }} +{% endif %} + +{% if item.env is defined %} +{% for var, value in item.env.items() %} +{% if value %} +ENV {{ var }} {{ value }} +{% endif %} +{% endfor %} +{% endif %} + + + +RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y apt-transport-https gnupg2 python3-minimal python3-apt man systemd systemd-sysv rsyslog sudo bash ca-certificates iproute2 && apt-get clean; \ + elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes upgrade && dnf --assumeyes install python3 sudo python3-devel python*-dnf bash iproute && dnf clean all; \ + elif [ $(command -v yum) ]; then sed -i 's/^\(tsflags=*\)/# \1/g' /etc/yum.conf && yum makecache fast && yum upgrade -y && yum makecache fast && yum install -y sudo python3 systemd rsyslog man yum-plugin-ovl bash iproute && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ + elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml iproute2 && zypper clean -a; \ + elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ + elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates iproute2 && xbps-remove -O; fi + +RUN set -xe \ + && groupadd -r ${ANSIBLE_USER} \ + && groupadd -r ${DEPLOY_GROUP} \ + && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ + && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ + && echo "%${DEPLOY_GROUP} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible + +RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ + systemd-tmpfiles-setup.service ] || rm -f $i; done); \ + rm -rf /lib/systemd/system/multi-user.target.wants/*;\ + rm -rf /etc/systemd/system/*.wants/*;\ + rm -rf /lib/systemd/system/local-fs.target.wants/*; \ + rm -rf /lib/systemd/system/sockets.target.wants/*udev*; \ + rm -rf /lib/systemd/system/sockets.target.wants/*initctl*; \ + rm -rf /lib/systemd/system/basic.target.wants/*;\ + rm -rf /lib/systemd/system/anaconda.target.wants/*; + +VOLUME [ "/sys/fs/cgroup" ] +CMD ["{{ item.command | default('/usr/sbin/init') }}"] diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml new file mode 100644 index 0000000..1fca7d6 --- /dev/null +++ b/molecule/default/converge.yml @@ -0,0 +1,7 @@ +--- +- name: Converge + hosts: all + tasks: + - name: "Include netology_devops_vector" + ansible.builtin.include_role: + name: "dannc.netology_devops_vector" diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml new file mode 100644 index 0000000..140d746 --- /dev/null +++ b/molecule/default/molecule.yml @@ -0,0 +1,45 @@ +--- +dependency: + name: galaxy +driver: + name: docker + +lint: | + yamllint . + ansible-lint +platforms: + - name: centos_7 + image: centos:7 + privileged: true + command: /usr/sbin/init + capabilities: + - SYS_ADMIN + tmpfs: + - /run + - /tmp + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup + env: + ANSIBLE_USER: ansible + SUDO_GROUP: wheel + DEPLOY_GROUP: deployer + container: docker +provisioner: + name: ansible +verifier: + name: ansible + +scenario: + name: default + test_sequence: + - lint + - destroy + # - dependency + - syntax + - create + # - prepare + - converge + - idempotence + # - side_effect + - verify + - destroy diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml new file mode 100644 index 0000000..3cd4ec3 --- /dev/null +++ b/molecule/default/verify.yml @@ -0,0 +1,8 @@ +--- +- name: Verify + hosts: all + gather_facts: false + tasks: + - name: Example assertion + ansible.builtin.assert: + that: true