diff --git a/molecule/centos-7-build/molecule.yml b/molecule/centos-7-build/molecule.yml index 0360b8cc2206c8e5c8ba696028262159d0d62040..a9a71d95f5a66aeb73976bb7e273d25608370259 100644 --- a/molecule/centos-7-build/molecule.yml +++ b/molecule/centos-7-build/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: diff --git a/molecule/centos-7/molecule.yml b/molecule/centos-7/molecule.yml index 0603e267605af13ec94cd328829cf256e7f690b5..2903631796cbccdc9d13eeed22b0d2e4f5e3193e 100644 --- a/molecule/centos-7/molecule.yml +++ b/molecule/centos-7/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: diff --git a/molecule/centos-8-build/molecule.yml b/molecule/centos-8-build/molecule.yml index a7ffacdfa8caa09d62e66fade483224a561bddc6..e19fe11a826af2f6992e603b9aef2102f2f2c01c 100644 --- a/molecule/centos-8-build/molecule.yml +++ b/molecule/centos-8-build/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: diff --git a/molecule/centos-8/molecule.yml b/molecule/centos-8/molecule.yml index 4e1ab7930258cd43312471abb3e5ca6776f567bf..eba21c6a5a42d5cedcba711d102ecbd4090ec7cb 100644 --- a/molecule/centos-8/molecule.yml +++ b/molecule/centos-8/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: diff --git a/molecule/fedora-latest-build/Dockerfile b/molecule/fedora-latest-build/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f3c2ef6281d6bd7a1abd6641191c91c71f3e04c8 --- /dev/null +++ b/molecule/fedora-latest-build/Dockerfile @@ -0,0 +1,30 @@ +FROM fedora:latest +ENV container=docker + +RUN rm -fv /var/cache/dnf/metadata_lock.pid; \ +dnf makecache; \ +dnf --assumeyes install \ + /usr/bin/python3 \ + /usr/bin/python3-config \ + /usr/bin/dnf-3 \ + sudo \ + bash \ + systemd \ + procps-ng \ + iproute && \ +dnf clean all; \ +(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ +rm -f /lib/systemd/system/multi-user.target.wants/*;\ +rm -f /etc/systemd/system/*.wants/*;\ +rm -f /lib/systemd/system/local-fs.target.wants/*; \ +rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ +rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ +rm -f /lib/systemd/system/basic.target.wants/*;\ +rm -f /lib/systemd/system/anaconda.target.wants/*; \ +rm -rf /var/cache/dnf/; + +STOPSIGNAL RTMIN+3 + +VOLUME ["/sys/fs/cgroup"] + +CMD ["/usr/sbin/init"] diff --git a/molecule/fedora-latest-build/molecule.yml b/molecule/fedora-latest-build/molecule.yml new file mode 100644 index 0000000000000000000000000000000000000000..624d99f2e7a7a3351504d7a9a4752e610e7d42c5 --- /dev/null +++ b/molecule/fedora-latest-build/molecule.yml @@ -0,0 +1,18 @@ +--- +driver: + name: docker +platforms: + - name: fedora-latest-build + image: fedora-latest + dockerfile: Dockerfile + hostname: ipaserver.test.local + dns_servers: + - 8.8.8.8 + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + command: /usr/sbin/init + privileged: true +provisioner: + name: ansible + playbooks: + prepare: ../resources/playbooks/prepare-build.yml diff --git a/molecule/fedora-latest/molecule.yml b/molecule/fedora-latest/molecule.yml new file mode 100644 index 0000000000000000000000000000000000000000..af6fd8d6e25b3d1759377e8c86fc9768ac14e3c0 --- /dev/null +++ b/molecule/fedora-latest/molecule.yml @@ -0,0 +1,18 @@ +--- +driver: + name: docker +platforms: + - name: fedora-latest + image: quay.io/ansible-freeipa/upstream-tests:fedora-latest + pre_build_image: true + hostname: ipaserver.test.local + dns_servers: + - 127.0.0.1 + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + command: /usr/sbin/init + privileged: true +provisioner: + name: ansible + playbooks: + prepare: ../resources/playbooks/prepare.yml diff --git a/molecule/resources/playbooks/prepare-build.yml b/molecule/resources/playbooks/prepare-build.yml index 784fe7e3b27d2374ff528ed7c2a7c8dc0e99696f..d65236990d75f241286f4a2c1d4029beff5e2d16 100644 --- a/molecule/resources/playbooks/prepare-build.yml +++ b/molecule/resources/playbooks/prepare-build.yml @@ -2,34 +2,7 @@ - name: Converge hosts: all tasks: - - name: Ensure IPv6 is ENABLED - sysctl: - name: "{{ item.name }}" - value: "{{ item.value }}" - sysctl_set: yes - state: present - reload: yes - with_items : - - name: net.ipv6.conf.all.disable_ipv6 - value: 0 - - name: net.ipv6.conf.lo.disable_ipv6 - value: 0 - - name: net.ipv6.conf.eth0.disable_ipv6 - value: 1 - - - name: stat protected_regular - stat: - path: /proc/sys/fs/protected_regular - register: result - - - name: Ensure fs.protected_regular is disabled - sysctl: - name: fs.protected_regular - value: 0 - sysctl_set: yes - state: present - reload: yes - when: result.stat.exists + - include_tasks: prepare-common.yml - name: Ensure sudo package is installed package: diff --git a/molecule/resources/playbooks/prepare-common.yml b/molecule/resources/playbooks/prepare-common.yml new file mode 100644 index 0000000000000000000000000000000000000000..3a950157728cb37cc49b44f609e9ae76a72de335 --- /dev/null +++ b/molecule/resources/playbooks/prepare-common.yml @@ -0,0 +1,29 @@ +- name: Ensure IPv6 is ENABLED + sysctl: + name: "{{ item.name }}" + value: "{{ item.value }}" + sysctl_set: yes + state: present + reload: yes + with_items : + - name: net.ipv6.conf.all.disable_ipv6 + value: 0 + - name: net.ipv6.conf.lo.disable_ipv6 + value: 0 + - name: net.ipv6.conf.eth0.disable_ipv6 + value: 1 + +- name: stat protected_regular + stat: + path: /proc/sys/fs/protected_regular + register: result + +- name: Ensure fs.protected_regular is disabled + sysctl: + name: fs.protected_regular + value: 0 + sysctl_set: yes + state: present + reload: yes + when: result.stat.exists + diff --git a/molecule/resources/playbooks/prepare.yml b/molecule/resources/playbooks/prepare.yml index fc564d0115f1b21df4a3b7293eac1c1ee7ea3c27..74abef819be5a5bf5805cd5cc8c400d1ecceefbd 100644 --- a/molecule/resources/playbooks/prepare.yml +++ b/molecule/resources/playbooks/prepare.yml @@ -2,12 +2,14 @@ - name: Converge hosts: all tasks: + - include_tasks: prepare-common.yml + - name: Ensure lock dirs for DS exists file: state: directory owner: dirsrv group: dirsrv - path: "{{ item }} " + path: "{{ item }}" loop: - /var/lock/dirsrv/ - /var/lock/dirsrv/slapd-TEST-LOCAL/ diff --git a/tests/azure/build-containers.yml b/tests/azure/build-containers.yml new file mode 100644 index 0000000000000000000000000000000000000000..2f987809dc1d8c7772fcc0150fac95aea0f851c9 --- /dev/null +++ b/tests/azure/build-containers.yml @@ -0,0 +1,31 @@ +--- + +schedules: +- cron: "0 0 * * *" + displayName: Daily midnight build + branches: + include: + - master + +pool: + vmImage: 'ubuntu-18.04' + +jobs: + +- template: templates/build_container.yml + parameters: + job_name_suffix: Centos7 + container_name: centos-7 + build_scenario_name: centos-7-build + +- template: templates/build_container.yml + parameters: + job_name_suffix: Centos8 + container_name: centos-8 + build_scenario_name: centos-8-build + +- template: templates/build_container.yml + parameters: + job_name_suffix: FedoraLatest + container_name: fedora-latest + build_scenario_name: fedora-latest-build diff --git a/tests/azure/templates/build_container.yml b/tests/azure/templates/build_container.yml new file mode 100644 index 0000000000000000000000000000000000000000..8649a336f3d776f486ec8e88615db9630e190979 --- /dev/null +++ b/tests/azure/templates/build_container.yml @@ -0,0 +1,35 @@ + +parameters: + - name: job_name_suffix + type: string + - name: container_name + type: string + - name: build_scenario_name + type: string + +jobs: +- job: BuildTestImage${{ parameters.job_name_suffix }} + displayName: Build ${{ parameters.container_name }} test container + steps: + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.6' + + - script: python -m pip install --upgrade pip setuptools wheel + displayName: Install tools + + - script: pip install molecule[docker] + displayName: Install molecule + + - script: molecule create -s ${{ parameters.build_scenario_name }} + displayName: Create test container + + - script: | + docker stop ${{ parameters.build_scenario_name }} + docker commit ${{ parameters.build_scenario_name }} quay.io/ansible-freeipa/upstream-tests:${{ parameters.container_name }} + docker login -u="$QUAY_ROBOT_USERNAME" -p="$QUAY_ROBOT_TOKEN" quay.io + docker push quay.io/ansible-freeipa/upstream-tests:${{ parameters.container_name }} + displayName: Save image and upload + env: + # Secrets needs to be mapped as env vars to work properly + QUAY_ROBOT_TOKEN: $(QUAY_ROBOT_TOKEN)