From a88f5f8ae0bd14d9ec16241e7be621c5f61c6ac0 Mon Sep 17 00:00:00 2001 From: satken2 Date: Thu, 10 Jun 2021 23:42:18 +0900 Subject: [PATCH 1/8] sysctl: Fixed sysctl to work on symlinks(#111) --- plugins/modules/sysctl.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/modules/sysctl.py b/plugins/modules/sysctl.py index 542b3c5..7914e9d 100644 --- a/plugins/modules/sysctl.py +++ b/plugins/modules/sysctl.py @@ -366,7 +366,7 @@ class SysctlModule(object): # Completely rewrite the sysctl file def write_sysctl(self): # open a tmp file - fd, tmp_path = tempfile.mkstemp('.conf', '.ansible_m_sysctl_', os.path.dirname(self.sysctl_file)) + fd, tmp_path = tempfile.mkstemp('.conf', '.ansible_m_sysctl_', os.path.dirname(os.path.realpath(self.sysctl_file))) f = open(tmp_path, "w") try: for l in self.fixed_lines: @@ -377,7 +377,7 @@ class SysctlModule(object): f.close() # replace the real one - self.module.atomic_move(tmp_path, self.sysctl_file) + self.module.atomic_move(tmp_path, os.path.realpath(self.sysctl_file)) # ============================================================== From 55ea4ba1de74aceb8c33f5aec128c34aeb215caf Mon Sep 17 00:00:00 2001 From: satken2 Date: Fri, 11 Jun 2021 23:57:09 +0900 Subject: [PATCH 2/8] sysctl: Fixed sysctl to work on symlinks(#111) --- .../206_fix_sysctl_to_work_on_symlinks.yml | 3 ++ .../integration/targets/sysctl/tasks/main.yml | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 changelogs/fragments/206_fix_sysctl_to_work_on_symlinks.yml diff --git a/changelogs/fragments/206_fix_sysctl_to_work_on_symlinks.yml b/changelogs/fragments/206_fix_sysctl_to_work_on_symlinks.yml new file mode 100644 index 0000000..703a6a2 --- /dev/null +++ b/changelogs/fragments/206_fix_sysctl_to_work_on_symlinks.yml @@ -0,0 +1,3 @@ +--- +bugfixes: +- sysctl - fix sysctl to work properly on symlinks (https://github.com/ansible-collections/ansible.posix/issues/111). diff --git a/tests/integration/targets/sysctl/tasks/main.yml b/tests/integration/targets/sysctl/tasks/main.yml index 249bde1..db92788 100644 --- a/tests/integration/targets/sysctl/tasks/main.yml +++ b/tests/integration/targets/sysctl/tasks/main.yml @@ -332,3 +332,36 @@ that: - sysctl_invalid_set1 is failed - "'vm.mmap_rnd_bits' not in sysctl_invalid_conf_content.stdout" + + # Test sysctl: sysctl_file is symlink + - name: Create link source + copy: + content: | + # Testing Ansible Sysctl module on symlink. + dest: /tmp/ansible_sysctl_test.conf + + - name: Create symlink to the conf file + file: + src: /tmp/ansible_sysctl_test.conf + dest: /tmp/ansible_sysctl_test_symlink.conf + state: link + + - name: Use sysctl module with symlink sysctl file + sysctl: + name: 'kernel.randomize_va_space' + value: '1' + sysctl_file: /tmp/ansible_sysctl_test_symlink.conf + state: present + sysctl_set: false + reload: false + + - Stat sysctl file + stat: + path: /tmp/ansible_sysctl_test_symlink.conf + register: stat_result + + - Ensure the sysctl file remains a symlink + assert: + that: + - stat_result.stat.islnk is defined and stat_result.stat.islnk + - stat_result.stat.lnk_source == /tmp/ansible_sysctl_test.conf From 97dcdee6706d35759c0389f2b28508a35f3c6536 Mon Sep 17 00:00:00 2001 From: satken2 Date: Sat, 12 Jun 2021 00:33:20 +0900 Subject: [PATCH 3/8] sysctl: Fixed sysctl to work on symlinks(#111) --- tests/integration/targets/sysctl/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/targets/sysctl/tasks/main.yml b/tests/integration/targets/sysctl/tasks/main.yml index db92788..772be9d 100644 --- a/tests/integration/targets/sysctl/tasks/main.yml +++ b/tests/integration/targets/sysctl/tasks/main.yml @@ -355,7 +355,7 @@ sysctl_set: false reload: false - - Stat sysctl file + - name: Stat sysctl file stat: path: /tmp/ansible_sysctl_test_symlink.conf register: stat_result From a842e5f96a3445301df885008b596c99486748ae Mon Sep 17 00:00:00 2001 From: satken2 Date: Sat, 12 Jun 2021 00:33:39 +0900 Subject: [PATCH 4/8] sysctl: Fixed sysctl to work on symlinks(#111) --- tests/integration/targets/sysctl/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/targets/sysctl/tasks/main.yml b/tests/integration/targets/sysctl/tasks/main.yml index 772be9d..3781109 100644 --- a/tests/integration/targets/sysctl/tasks/main.yml +++ b/tests/integration/targets/sysctl/tasks/main.yml @@ -360,7 +360,7 @@ path: /tmp/ansible_sysctl_test_symlink.conf register: stat_result - - Ensure the sysctl file remains a symlink + - name: Ensure the sysctl file remains a symlink assert: that: - stat_result.stat.islnk is defined and stat_result.stat.islnk From 9064ff7eb28e827f17dea7dad07e05603af08237 Mon Sep 17 00:00:00 2001 From: satken2 Date: Sat, 12 Jun 2021 01:03:28 +0900 Subject: [PATCH 5/8] sysctl: Fixed sysctl to work on symlinks(#111) --- .../integration/targets/sysctl/tasks/main.yml | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/tests/integration/targets/sysctl/tasks/main.yml b/tests/integration/targets/sysctl/tasks/main.yml index 3781109..249bde1 100644 --- a/tests/integration/targets/sysctl/tasks/main.yml +++ b/tests/integration/targets/sysctl/tasks/main.yml @@ -332,36 +332,3 @@ that: - sysctl_invalid_set1 is failed - "'vm.mmap_rnd_bits' not in sysctl_invalid_conf_content.stdout" - - # Test sysctl: sysctl_file is symlink - - name: Create link source - copy: - content: | - # Testing Ansible Sysctl module on symlink. - dest: /tmp/ansible_sysctl_test.conf - - - name: Create symlink to the conf file - file: - src: /tmp/ansible_sysctl_test.conf - dest: /tmp/ansible_sysctl_test_symlink.conf - state: link - - - name: Use sysctl module with symlink sysctl file - sysctl: - name: 'kernel.randomize_va_space' - value: '1' - sysctl_file: /tmp/ansible_sysctl_test_symlink.conf - state: present - sysctl_set: false - reload: false - - - name: Stat sysctl file - stat: - path: /tmp/ansible_sysctl_test_symlink.conf - register: stat_result - - - name: Ensure the sysctl file remains a symlink - assert: - that: - - stat_result.stat.islnk is defined and stat_result.stat.islnk - - stat_result.stat.lnk_source == /tmp/ansible_sysctl_test.conf From d49bd27fae0cda7a7a0466205cf3e12b81a985ec Mon Sep 17 00:00:00 2001 From: Jill Rouleau Date: Tue, 7 May 2024 14:42:04 -0700 Subject: [PATCH 6/8] Revert "sysctl: Fixed sysctl to work on symlinks(#111)" This reverts commit 34b467719e0dab10d062813cdef11b49f3925ed6. --- .../integration/targets/sysctl/tasks/main.yml | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/integration/targets/sysctl/tasks/main.yml b/tests/integration/targets/sysctl/tasks/main.yml index 249bde1..3781109 100644 --- a/tests/integration/targets/sysctl/tasks/main.yml +++ b/tests/integration/targets/sysctl/tasks/main.yml @@ -332,3 +332,36 @@ that: - sysctl_invalid_set1 is failed - "'vm.mmap_rnd_bits' not in sysctl_invalid_conf_content.stdout" + + # Test sysctl: sysctl_file is symlink + - name: Create link source + copy: + content: | + # Testing Ansible Sysctl module on symlink. + dest: /tmp/ansible_sysctl_test.conf + + - name: Create symlink to the conf file + file: + src: /tmp/ansible_sysctl_test.conf + dest: /tmp/ansible_sysctl_test_symlink.conf + state: link + + - name: Use sysctl module with symlink sysctl file + sysctl: + name: 'kernel.randomize_va_space' + value: '1' + sysctl_file: /tmp/ansible_sysctl_test_symlink.conf + state: present + sysctl_set: false + reload: false + + - name: Stat sysctl file + stat: + path: /tmp/ansible_sysctl_test_symlink.conf + register: stat_result + + - name: Ensure the sysctl file remains a symlink + assert: + that: + - stat_result.stat.islnk is defined and stat_result.stat.islnk + - stat_result.stat.lnk_source == /tmp/ansible_sysctl_test.conf From e5733c5e4937adefcead6dba49d2c83aa8351649 Mon Sep 17 00:00:00 2001 From: Jill Rouleau Date: Tue, 7 May 2024 14:53:38 -0700 Subject: [PATCH 7/8] Quote string in test assertion --- tests/integration/targets/sysctl/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/targets/sysctl/tasks/main.yml b/tests/integration/targets/sysctl/tasks/main.yml index 3781109..4b0c5db 100644 --- a/tests/integration/targets/sysctl/tasks/main.yml +++ b/tests/integration/targets/sysctl/tasks/main.yml @@ -364,4 +364,4 @@ assert: that: - stat_result.stat.islnk is defined and stat_result.stat.islnk - - stat_result.stat.lnk_source == /tmp/ansible_sysctl_test.conf + - stat_result.stat.lnk_source == '/tmp/ansible_sysctl_test.conf' From 83c4d2abd1b23e378885528067fc85459f62721c Mon Sep 17 00:00:00 2001 From: Jill Rouleau Date: Thu, 9 May 2024 11:58:24 -0700 Subject: [PATCH 8/8] lint fixes --- tests/integration/targets/sysctl/tasks/main.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/integration/targets/sysctl/tasks/main.yml b/tests/integration/targets/sysctl/tasks/main.yml index 4b0c5db..ef5b86f 100644 --- a/tests/integration/targets/sysctl/tasks/main.yml +++ b/tests/integration/targets/sysctl/tasks/main.yml @@ -335,19 +335,20 @@ # Test sysctl: sysctl_file is symlink - name: Create link source - copy: + ansible.builtin.copy: content: | # Testing Ansible Sysctl module on symlink. dest: /tmp/ansible_sysctl_test.conf + mode: "0644" - name: Create symlink to the conf file - file: + ansible.builtin.file: src: /tmp/ansible_sysctl_test.conf dest: /tmp/ansible_sysctl_test_symlink.conf state: link - name: Use sysctl module with symlink sysctl file - sysctl: + ansible.posix.sysctl: name: 'kernel.randomize_va_space' value: '1' sysctl_file: /tmp/ansible_sysctl_test_symlink.conf @@ -356,12 +357,12 @@ reload: false - name: Stat sysctl file - stat: + ansible.builtin.stat: path: /tmp/ansible_sysctl_test_symlink.conf register: stat_result - name: Ensure the sysctl file remains a symlink - assert: + ansible.builtin.assert: that: - stat_result.stat.islnk is defined and stat_result.stat.islnk - stat_result.stat.lnk_source == '/tmp/ansible_sysctl_test.conf'