[stable-10] sysrc: Use shlex (#10400)

* Fix #10394 Use configparser.

* Fix #10394 configparser is in Python3 only.

* Fix #10394 return condition.

* Fix #10394 Use ConfigParser with Python2.

* Fix #10394 import configparser from ansible.module_utils.six.moves

* Add changelog fragment.

* Update changelogs/fragments/10400-sysrc.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Fix #10394 use shlex instead of configparser.

* Update fragment.

* Update changelogs/fragments/10400-sysrc.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/sysrc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Apply suggestions from code review.

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Copy tests from #10417.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
Vladimir Botka 2025-07-21 22:07:30 +02:00 committed by GitHub
commit 0be6e61b31
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 68 additions and 4 deletions

View file

@ -0,0 +1,7 @@
# 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
k1="v1"
jail_list="
foo
bar"

View file

@ -369,14 +369,67 @@
- "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
- name: Ensure that the defaults are not consulted
assert:
that:
- not 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
- name: Ensure that the default is not consulted
assert:
that:
- not sysrc_10004_value_absent.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
always:
- name: Restore /etc/rc.conf
copy:
content: "{{ cached_etc_rcconf_content }}"
content: "{{ cached_etc_rcconf_content.stdout }}"
dest: /etc/rc.conf
- name: Restore /boot/loader.conf
copy:
content: "{{ cached_boot_loaderconf_content }}"
content: "{{ cached_boot_loaderconf_content.stdout }}"
dest: /boot/loader.conf