mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-08-08 15:14:20 -07:00
Some checks are pending
EOL CI / EOL Sanity (Ⓐ2.16) (push) Waiting to run
EOL CI / EOL Units (Ⓐ2.16+py2.7) (push) Waiting to run
EOL CI / EOL Units (Ⓐ2.16+py3.11) (push) Waiting to run
EOL CI / EOL Units (Ⓐ2.16+py3.6) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/1/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/2/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/3/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/1/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/2/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/3/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/1/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/2/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/3/) (push) Waiting to run
nox / Run extra sanity tests (push) Waiting to run
* sysrc: refactor * sysrc: refactor changelog fragment * sysrc: forgot the os import * sysrc: update test to edit the correct file * sysrc: Added copyright info to the test conf file * sysrc: Added full copyright info to the test conf file * sysrc: Detect permission denied when using sysrc * sysrc: Fixed the permission check and 2.7 compatibility * sysrc: Fix typo of import * sysrc: Fix err.find check * sysrc: Add bugfixes changelog fragment * sysrc: Use `StateModuleHelper` * sysrc: updated imports * sysrc: remove re import and set errno.EACCES on the OSError * sysrc: format code properly * sysrc: fix Python 2.7 compatibility and set changed manually * sysrc: add missing name format check Also use `self.module.fail_json` through out * sysrc: Removed os import by accident * sysrc: updated per review, and the way the existing value is retrieved
447 lines
13 KiB
YAML
447 lines
13 KiB
YAML
---
|
|
# Copyright (c) Ansible Project
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
- name: Test on FreeBSD VMs
|
|
when:
|
|
- ansible_facts.virtualization_type != 'docker'
|
|
- ansible_facts.distribution == 'FreeBSD'
|
|
block:
|
|
- name: Cache original contents of /etc/rc.conf
|
|
shell: "cat /etc/rc.conf"
|
|
register: cached_etc_rcconf_content
|
|
|
|
- name: Cache original contents of /boot/loader.conf
|
|
shell: "cat /boot/loader.conf"
|
|
register: cached_boot_loaderconf_content
|
|
|
|
##
|
|
## sysrc - example - set mysqlpidfile
|
|
##
|
|
- name: Configure mysql pid file
|
|
sysrc:
|
|
name: mysql_pidfile
|
|
value: /tmp/mysql.pid
|
|
register: sysrc_example1
|
|
|
|
- name: Configure mysql pid file (checkmode)
|
|
sysrc:
|
|
name: mysql_pidfile
|
|
value: checkmode
|
|
check_mode: true
|
|
register: sysrc_example1_checkmode
|
|
|
|
- name: Configure mysql pid file (idempotent)
|
|
sysrc:
|
|
name: mysql_pidfile
|
|
value: /tmp/mysql.pid
|
|
register: sysrc_example1_idempotent
|
|
|
|
- name: Get file content
|
|
shell: "cat /etc/rc.conf | egrep -v ^\\#"
|
|
register: sysrc_example1_content
|
|
|
|
- name: Ensure sysrc updates rc.conf properly
|
|
assert:
|
|
that:
|
|
- sysrc_example1.changed
|
|
- sysrc_example1_checkmode.changed
|
|
- not sysrc_example1_idempotent.changed
|
|
- "'mysql_pidfile=\"/tmp/mysql.pid\"' in sysrc_example1_content.stdout_lines"
|
|
- "'mysql_pidfile=\"checkmode\"' not in sysrc_example1_content.stdout_lines"
|
|
|
|
##
|
|
## sysrc - example - Enable accf_http kld in /boot/loader.conf
|
|
##
|
|
- name: Enable accf_http kld in /boot/loader.conf
|
|
sysrc:
|
|
name: accf_http_load
|
|
state: present
|
|
value: "YES"
|
|
path: /boot/loader.conf
|
|
register: sysrc_example2
|
|
|
|
- name: Enable accf_http kld in /boot/loader.conf (checkmode)
|
|
sysrc:
|
|
name: accf_http_load
|
|
state: present
|
|
value: "NO"
|
|
path: /boot/loader.conf
|
|
check_mode: true
|
|
register: sysrc_example2_checkmode
|
|
|
|
- name: Enable accf_http kld in /boot/loader.conf (idempotent)
|
|
sysrc:
|
|
name: accf_http_load
|
|
state: present
|
|
value: "YES"
|
|
path: /boot/loader.conf
|
|
register: sysrc_example2_idempotent
|
|
|
|
- name: Get file content
|
|
shell: "cat /boot/loader.conf | egrep -v ^\\#"
|
|
register: sysrc_example2_content
|
|
|
|
- name: Ensure sysrc did not change the file, but marked as changed
|
|
assert:
|
|
that:
|
|
- sysrc_example2.changed
|
|
- sysrc_example2_checkmode.changed
|
|
- not sysrc_example2_idempotent.changed
|
|
- "'accf_http_load=\"YES\"' in sysrc_example2_content.stdout_lines"
|
|
- "'accf_http_load=\"NO\"' not in sysrc_example2_content.stdout_lines"
|
|
|
|
##
|
|
## sysrc - example - Add gif0 interface
|
|
##
|
|
- name: Set cloned_interfaces
|
|
sysrc:
|
|
name: cloned_interfaces
|
|
value: "lo0"
|
|
|
|
- name: Add gif0 interface
|
|
sysrc:
|
|
name: cloned_interfaces
|
|
state: value_present
|
|
value: "gif0"
|
|
register: sysrc_example3
|
|
|
|
- name: Add gif1 interface (checkmode)
|
|
sysrc:
|
|
name: cloned_interfaces
|
|
state: value_present
|
|
value: "gif1"
|
|
check_mode: true
|
|
register: sysrc_example3_checkmode
|
|
|
|
- name: Add gif0 interface (idempotent)
|
|
sysrc:
|
|
name: cloned_interfaces
|
|
state: value_present
|
|
value: "gif0"
|
|
register: sysrc_example3_idempotent
|
|
|
|
- name: Get file content
|
|
shell: "cat /etc/rc.conf | egrep -v ^\\#"
|
|
register: sysrc_example3_content
|
|
|
|
- name: Ensure sysrc did not change the file, but marked as changed
|
|
assert:
|
|
that:
|
|
- sysrc_example3.changed
|
|
- sysrc_example3_checkmode.changed
|
|
- not sysrc_example3_idempotent.changed
|
|
- "'cloned_interfaces=\"lo0 gif0\"' in sysrc_example3_content.stdout_lines"
|
|
|
|
##
|
|
## sysrc - example - Enable nginx in testjail
|
|
##
|
|
- name: Test within jail
|
|
#
|
|
# NOTE: currently fails with FreeBSD 12 with minor version less than 4
|
|
# NOTE: currently fails with FreeBSD 13 with minor version less than 4
|
|
# NOTE: currently fails with FreeBSD 14 with minor version less than 2
|
|
#
|
|
when: >-
|
|
ansible_distribution_version is version('12.4', '>=') and ansible_distribution_version is version('13', '<')
|
|
or ansible_distribution_version is version('13.4', '>=') and ansible_distribution_version is version('14', '<')
|
|
or ansible_distribution_version is version('14.2', '>=')
|
|
block:
|
|
- name: Setup testjail
|
|
include_tasks: setup-testjail.yml
|
|
|
|
- name: Enable nginx in test jail
|
|
sysrc:
|
|
name: nginx_enable
|
|
value: "YES"
|
|
jail: testjail
|
|
register: sysrc_example4
|
|
|
|
- name: Enable nginx in test jail (checkmode)
|
|
sysrc:
|
|
name: nginx_enable
|
|
value: "NO"
|
|
jail: testjail
|
|
check_mode: true
|
|
register: sysrc_example4_checkmode
|
|
|
|
- name: Enable nginx in test jail (idempotent)
|
|
sysrc:
|
|
name: nginx_enable
|
|
value: "YES"
|
|
jail: testjail
|
|
register: sysrc_example4_idempotent
|
|
|
|
- name: Get file content
|
|
shell: "cat /usr/jails/testjail/etc/rc.conf | grep nginx_enable"
|
|
register: sysrc_example4_content
|
|
|
|
- name: Ensure sysrc worked in testjail
|
|
assert:
|
|
that:
|
|
- sysrc_example4.changed
|
|
- sysrc_example4_checkmode.changed
|
|
- not sysrc_example4_idempotent.changed
|
|
- "'nginx_enable=\"YES\"' in sysrc_example4_content.stdout_lines"
|
|
always:
|
|
- name: Stop and remove testjail
|
|
failed_when: false
|
|
changed_when: false
|
|
command: "ezjail-admin delete -wf testjail"
|
|
|
|
##
|
|
## sysrc - Test Absent
|
|
##
|
|
- name: Set sysrc_absent to test removal
|
|
sysrc:
|
|
name: sysrc_absent
|
|
value: test
|
|
|
|
- name: Remove sysrc_absent (checkmode)
|
|
sysrc:
|
|
name: sysrc_absent
|
|
state: absent
|
|
check_mode: true
|
|
register: sysrc_absent_checkmode
|
|
|
|
- name: Remove sysrc_absent
|
|
sysrc:
|
|
name: sysrc_absent
|
|
state: absent
|
|
register: sysrc_absent
|
|
|
|
- name: Remove sysrc_absent (idempotent)
|
|
sysrc:
|
|
name: sysrc_absent
|
|
state: absent
|
|
register: sysrc_absent_idempotent
|
|
|
|
- name: Get file content
|
|
shell: "cat /etc/rc.conf | egrep -v ^\\#"
|
|
register: sysrc_absent_content
|
|
|
|
- name: Ensure sysrc did as intended
|
|
assert:
|
|
that:
|
|
- sysrc_absent_checkmode.changed
|
|
- sysrc_absent.changed
|
|
- not sysrc_absent_idempotent.changed
|
|
- "'sysrc_absent=\"test\"' not in sysrc_absent_content.stdout_lines"
|
|
|
|
##
|
|
## sysrc - Test alternate delimiter
|
|
##
|
|
- name: Set sysrc_delim to known value
|
|
sysrc:
|
|
name: sysrc_delim
|
|
value: "t1,t2"
|
|
|
|
- name: Add to value with delimiter (not-exists)
|
|
sysrc:
|
|
name: sysrc_delim_create
|
|
state: value_present
|
|
delim: ","
|
|
value: t3
|
|
register: sysrc_delim_create
|
|
|
|
- name: Add to value with delimiter
|
|
sysrc:
|
|
name: sysrc_delim
|
|
state: value_present
|
|
delim: ","
|
|
value: t3
|
|
register: sysrc_delim
|
|
|
|
- name: Add to value with delimiter (checkmode)
|
|
sysrc:
|
|
name: sysrc_delim
|
|
state: value_present
|
|
delim: ","
|
|
value: t4
|
|
check_mode: true
|
|
register: sysrc_delim_checkmode
|
|
|
|
- name: Add to value with delimiter (idempotent)
|
|
sysrc:
|
|
name: sysrc_delim
|
|
state: value_present
|
|
delim: ","
|
|
value: t3
|
|
register: sysrc_delim_idempotent
|
|
|
|
- name: Get file content
|
|
shell: "cat /etc/rc.conf | egrep -v ^\\#"
|
|
register: sysrc_delim_content
|
|
|
|
- name: Ensure sysrc did as intended
|
|
assert:
|
|
that:
|
|
- sysrc_delim_create.changed
|
|
- sysrc_delim.changed
|
|
- sysrc_delim_checkmode.changed
|
|
- not sysrc_delim_idempotent.changed
|
|
- "'sysrc_delim=\"t1,t2,t3\"' in sysrc_delim_content.stdout_lines"
|
|
- "'sysrc_delim_create=\"t3\"' in sysrc_delim_content.stdout_lines"
|
|
|
|
##
|
|
## sysrc - value_absent
|
|
##
|
|
- name: Remove value (when not exists)
|
|
sysrc:
|
|
name: sysrc_value_absent_delete
|
|
state: value_absent
|
|
delim: ","
|
|
value: t3
|
|
register: sysrc_value_absent_ignored
|
|
|
|
- name: Remove value from sysrc_delim
|
|
sysrc:
|
|
name: sysrc_delim
|
|
state: value_absent
|
|
value: t3
|
|
delim: ","
|
|
register: sysrc_value_absent
|
|
|
|
- name: Remove value from sysrc_delim (checkmode)
|
|
sysrc:
|
|
name: sysrc_delim
|
|
state: value_absent
|
|
value: t2
|
|
delim: ","
|
|
check_mode: true
|
|
register: sysrc_value_absent_checkmode
|
|
|
|
- name: Remove value from sysrc_delim (idempotent
|
|
sysrc:
|
|
name: sysrc_delim
|
|
state: value_absent
|
|
value: t3
|
|
delim: ","
|
|
register: sysrc_value_absent_idempotent
|
|
|
|
- name: Get file content
|
|
shell: "cat /etc/rc.conf | egrep -v ^\\#"
|
|
register: sysrc_delim_content
|
|
|
|
- name: Ensure sysrc did as intended with value_absent
|
|
assert:
|
|
that:
|
|
- not sysrc_value_absent_ignored.changed
|
|
- sysrc_value_absent.changed
|
|
- sysrc_value_absent_checkmode.changed
|
|
- not sysrc_value_absent_idempotent.changed
|
|
- "'sysrc_delim=\"t1,t2\"' in sysrc_delim_content.stdout_lines"
|
|
- "'sysrc_delim_delete' not in sysrc_delim_content.stdout_lines"
|
|
|
|
##
|
|
## sysrc - value contains equals sign
|
|
##
|
|
- name: Value contains equals sign
|
|
vars:
|
|
value_1: "-u spamd -x --allow-tell --max-spare=1 --listen=*"
|
|
value_2: "-u spamd -x --allow-tell --max-spare=1 --listen=localhost"
|
|
block:
|
|
|
|
- name: Add spamd_flags
|
|
sysrc:
|
|
name: spamd_flags
|
|
value: "{{ value_1 }}"
|
|
register: sysrc_equals_sign_1
|
|
|
|
- name: Change spamd_flags
|
|
sysrc:
|
|
name: spamd_flags
|
|
value: "{{ value_2 }}"
|
|
register: sysrc_equals_sign_2
|
|
|
|
- name: Get file content
|
|
command: sysrc -a
|
|
register: sysrc_content
|
|
|
|
- name: Ensure sysrc did as intended with values that contains equals sign
|
|
vars:
|
|
conf: "{{ sysrc_content.stdout | from_yaml }}"
|
|
assert:
|
|
that:
|
|
- "value_1 == sysrc_equals_sign_1.value"
|
|
- sysrc_equals_sign_2.changed
|
|
- "value_2 == sysrc_equals_sign_2.value"
|
|
- "value_2 == conf.spamd_flags"
|
|
|
|
##
|
|
## sysrc - #10004 state=absent when using default settings will report `changed=true`
|
|
##
|
|
- name: Test that a key from /etc/defaults/rc.conf is not used to mark changed
|
|
sysrc:
|
|
name: dumpdev
|
|
state: absent
|
|
path: /tmp/10004.conf
|
|
register: sysrc_10004_absent
|
|
failed_when: sysrc_10004_absent.changed
|
|
|
|
- name: Test that a delimited key from /etc/defaults/rc.conf is not used to mark changed
|
|
sysrc:
|
|
name: rc_conf_files
|
|
state: value_absent
|
|
path: /tmp/10004.conf
|
|
register: sysrc_10004_value_absent
|
|
failed_when: sysrc_10004_value_absent.changed
|
|
|
|
- name: Test that a key from /etc/defaults/rc.conf is not used to mark changed without a path
|
|
sysrc:
|
|
name: static_routes
|
|
state: absent
|
|
register: sysrc_absent_default
|
|
failed_when: sysrc_absent_default.changed
|
|
|
|
##
|
|
## sysrc - #10394 Ensure that files with multi-line values work
|
|
##
|
|
- name: Copy 10394.conf
|
|
copy:
|
|
src: 10394.conf
|
|
dest: /tmp/10394.conf
|
|
|
|
- name: Change value for k1
|
|
sysrc:
|
|
name: k1
|
|
value: v2
|
|
path: /tmp/10394.conf
|
|
register: sysrc_10394_changed
|
|
|
|
- name: Get file content
|
|
shell: "cat /tmp/10394.conf"
|
|
register: sysrc_10394_content
|
|
|
|
- name: Ensure sysrc changed k1 from v1 to v2
|
|
assert:
|
|
that:
|
|
- sysrc_10394_changed.changed
|
|
- >
|
|
'k1="v2"' in sysrc_10394_content.stdout_lines
|
|
|
|
##
|
|
## sysrc - additional tests
|
|
##
|
|
- name: Ensure failure on OID style name since sysrc does not support them
|
|
sysrc:
|
|
name: not.valid.var
|
|
value: test
|
|
register: sysrc_name_check
|
|
failed_when:
|
|
- sysrc_name_check is not failed
|
|
- >
|
|
'Name may only contain alpha-numeric and underscore characters' != sysrc_name_check.msg
|
|
|
|
always:
|
|
|
|
- name: Restore /etc/rc.conf
|
|
copy:
|
|
content: "{{ cached_etc_rcconf_content.stdout }}"
|
|
dest: /etc/rc.conf
|
|
|
|
- name: Restore /boot/loader.conf
|
|
copy:
|
|
content: "{{ cached_boot_loaderconf_content.stdout }}"
|
|
dest: /boot/loader.conf
|