@@ -163,31 +163,45 @@ value: :code:`Setting={{ varname1 }}`
163163{{%- set dir_parameter = var_dir + "_has_parameter" -%}}
164164{{%- set line_regex = prefix_regex + "{{ \"" + parameter + "\"| regex_escape }}" + separator_regex -%}}
165165{{%- set find_when = dir_exists + ".stat.isdir is defined and " + dir_exists + ".stat.isdir" -%}}
166- {{%- set lineinfile_items = "{{ " + dir_parameter + ".files }}" -%}}
166+ {{%- set lineinfile_items = "{{ " + dir_parameter + ".files | default( [] ) }}" -%}}
167167{{%- set lineinfile_when = dir_parameter + ".matched > 0" -%}}
168168{{%- set new_line = parameter + separator + value -%}}
169- - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured
169+ - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured in {{{ config_file }}}
170+ ansible.builtin.lineinfile:
171+ path: {{{ config_file }}}
172+ regexp: {{{ line_regex }}}
173+ state: absent
174+ check_mode: true
175+ changed_when: false
176+ register: _config_file_has_parameter
177+ - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured in {{{ config_dir }}}
170178 ansible.builtin.find:
171179 paths:
172- - {{{ config_file }}}
173180 - {{{ config_dir }}}
174181 contains: {{{ line_regex }}}
175- register: _sshd_config_has_parameter
176- - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured correctly
182+ register: _config_dir_has_parameter
183+ - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured correctly in {{{ config_file }}}
184+ ansible.builtin.lineinfile:
185+ path: {{{ config_file }}}
186+ regexp: {{{ line_regex ~ value ~ "$" }}}
187+ state: absent
188+ check_mode: true
189+ changed_when: false
190+ register: _config_file_correctly
191+ - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured correctly in {{{ config_dir }}}
177192 ansible.builtin.find:
178193 paths:
179- - {{{ config_file }}}
180194 - {{{ config_dir }}}
181195 contains: {{{ line_regex ~ value ~ "$" }}}
182- register: _sshd_config_correctly
196+ register: _config_dir_correctly
183197- name: '{{{ msg or rule_title }}}'
184198 block:
185199 {{{ ansible_lineinfile("Deduplicate values from " + config_file, config_file, regex=line_regex, insensitive=insensitive, create='no', state='absent')|indent }}}
186200 {{{ ansible_stat("Check if " + config_dir + " exists", path=config_dir, register=dir_exists)|indent }}}
187201 {{{ ansible_find("Check if the parameter " + parameter + " is present in " + config_dir, paths=config_dir, contains=line_regex, register=dir_parameter, when=find_when)|indent }}}
188202 {{{ ansible_lineinfile("Remove parameter from files in " + config_dir, path="{{ item.path }}", regex=line_regex, insensitive=insensitive, state="absent", with_items=lineinfile_items, when=lineinfile_when)|indent }}}
189203 {{{ ansible_lineinfile("Insert correct line to " + set_file, set_file, regex=line_regex, insensitive=insensitive, new_line=new_line, create=create, state='present', validate=validate, insert_after=insert_after, insert_before=insert_before)|indent }}}
190- when: _sshd_config_correctly. matched == 0 or _sshd_config_has_parameter. matched != 1
204+ when: (_config_file_correctly.found == 0 and _config_dir_correctly. matched == 0) or ((_config_file_has_parameter.found | int) + (_config_dir_has_parameter. matched | int)) != 1
191205{{%- endmacro %}}
192206
193207
0 commit comments