1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

pkgng: add basic integration tests

Test installing a package
Test installing a package into a jail
This commit is contained in:
Ross Williams 2021-10-07 15:24:02 +00:00
parent 5aff694dc4
commit bfdaed0ce5
3 changed files with 212 additions and 0 deletions

View file

@ -0,0 +1,5 @@
shippable/posix/group1
needs/root
skip/docker
skip/osx
skip/rhel

View file

@ -0,0 +1,115 @@
---
- name: Test on FreeBSD VMs
when:
- ansible_facts.virtualization_type != 'docker'
- ansible_facts.distribution == 'FreeBSD'
block:
##
## pkgng - example - install single package
##
- name: Verify bash binary is not present
stat:
path: /usr/local/bin/bash
get_attributes: no
get_checksum: no
get_mime: no
register: pkgng_example1_stat_before
- name: Install bash
pkgng:
name: bash
register: pkgng_example1
- name: Remove bash (checkmode)
pkgng:
name: bash
state: absent
check_mode: yes
register: pkgng_example1_checkmode
- name: Install bash (idempotent)
pkgng:
name: bash
register: pkgng_example1_idempotent
- name: Verify bash binary is present
stat:
path: /usr/local/bin/bash
get_attributes: no
get_checksum: no
get_mime: no
register: pkgng_example1_stat_after
- name: Ensure pkgng installs package correctly
assert:
that:
- not pkgng_example1_stat_before.stat.exists
- pkgng_example1.changed
- pkgng_example1_checkmode.changed
- not pkgng_example1_idempotent.changed
- pkgng_example1_stat_after.stat.exists
- pkgng_example1_stat_after.stat.executable
##
## pkgng - example - Install bash in jail
##
- name: Test within jail
#
# NOTE: FreeBSD 12.0 test runner receives a "connection reset by peer" after ~20% downloaded so we are
# only running this on 12.1 or higher
#
when: ansible_distribution_version is version('12.01', '>=')
block:
- name: Setup testjail
include: setup-testjail.yml
- name: Verify bash binary is not present
stat:
path: /usr/jails/testjail/usr/local/bin/bash
get_attributes: no
get_checksum: no
get_mime: no
register: pkgng_example2_stat_before
- name: Install bash
pkgng:
name: bash
jail: testjail
register: pkgng_example2
- name: Remove bash (checkmode)
pkgng:
name: bash
state: absent
jail: testjail
check_mode: yes
register: pkgng_example2_checkmode
- name: Install bash (idempotent)
pkgng:
name: bash
jail: testjail
register: pkgng_example2_idempotent
- name: Verify bash binary is present
stat:
path: /usr/jails/testjail/usr/local/bin/bash
get_attributes: no
get_checksum: no
get_mime: no
register: pkgng_example2_stat_after
- name: Ensure pkgng installs package correctly
assert:
that:
- not pkgng_example2_stat_before.stat.exists
- pkgng_example2.changed
- pkgng_example2_checkmode.changed
- not pkgng_example2_idempotent.changed
- pkgng_example2_stat_after.stat.exists
- pkgng_example2_stat_after.stat.executable
always:
- name: Stop and remove testjail
failed_when: false
changed_when: false
command: "ezjail-admin delete -wf testjail"

View file

@ -0,0 +1,92 @@
---
#
# Instructions for setting up a jail
# https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/jails-ezjail.html
#
- name: Setup cloned interfaces
lineinfile:
dest: /etc/rc.conf
regexp: ^cloned_interfaces=lo1
line: cloned_interfaces=lo1
- name: Activate cloned interfaces
command: "service netif cloneup"
changed_when: false
- name: Add nat rule for cloned interfaces
copy:
dest: /etc/pf.conf
content: |
nat on {{ ansible_default_ipv4.interface }} from 127.0.1.0/24 -> {{ ansible_default_ipv4.interface }}:0
validate: "pfctl -nf %s"
- name: Start pf firewall
service:
name: pf
state: started
enabled: yes
- name: Install ezjail
pkgng:
name: ezjail
- name: Configure ezjail to use http
when: ansible_distribution_version is version('11.01', '>')
lineinfile:
dest: /usr/local/etc/ezjail.conf
regexp: ^ezjail_ftphost
line: ezjail_ftphost=http://ftp.freebsd.org
- name: Configure ezjail to use archive for old freebsd releases
when: ansible_distribution_version is version('11.01', '<=')
lineinfile:
dest: /usr/local/etc/ezjail.conf
regexp: ^ezjail_ftphost
line: ezjail_ftphost=http://ftp-archive.freebsd.org
- name: Start ezjail
ignore_errors: yes
service:
name: ezjail
state: started
enabled: yes
- name: Has ezjail
register: ezjail_base_jail
stat:
path: /usr/jails/basejail
- name: Setup ezjail base
when: not ezjail_base_jail.stat.exists
shell: "ezjail-admin install >> /tmp/ezjail.log"
changed_when: false
- name: Has testjail
register: ezjail_test_jail
stat:
path: /usr/jails/testjail
- name: Create testjail
when: not ezjail_test_jail.stat.exists
shell: "ezjail-admin create testjail 'lo1|127.0.1.1' >> /tmp/ezjail.log"
changed_when: false
- name: Configure testjail to use Cloudflare DNS
lineinfile:
dest: /usr/jails/testjail/etc/resolv.conf
regexp: "^nameserver[[:blank:]]+{{ item }}$"
line: "nameserver {{ item }}"
create: yes
loop:
- "1.1.1.1"
- "1.0.0.1"
- name: Is testjail running
shell: "jls | grep testjail"
changed_when: false
failed_when: false
register: is_testjail_up
- name: Start testjail
when: is_testjail_up.rc == 1
command: "ezjail-admin start testjail"