@@ -166,13 +166,28 @@ value: :code:`Setting={{ varname1 }}`
166166{{%- set lineinfile_items = "{{ " + dir_parameter + ".files }}" -%}}
167167{{%- set lineinfile_when = dir_parameter + ".matched" -%}}
168168{{%- set new_line = parameter + separator + value -%}}
169+ - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured
170+ ansible.builtin.find:
171+ paths:
172+ - {{{ config_file }}}
173+ - {{{ config_dir }}}
174+ contains: {{{ line_regex }}}
175+ register: _sshd_config_has_parameter
176+ - name: {{{ rule_title }}} - Check if the parameter {{{ parameter }}} is configured correctly
177+ ansible.builtin.find:
178+ paths:
179+ - {{{ config_file }}}
180+ - {{{ config_dir }}}
181+ contains: {{{ line_regex ~ value ~ "$" }}}
182+ register: _sshd_config_correctly
169183- name: '{{{ msg or rule_title }}}'
170184 block:
171185 {{{ ansible_lineinfile("Deduplicate values from " + config_file, config_file, regex=line_regex, insensitive=insensitive, create='no', state='absent')|indent }}}
172186 {{{ ansible_stat("Check if " + config_dir + " exists", path=config_dir, register=dir_exists)|indent }}}
173187 {{{ 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 }}}
174188 {{{ 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 }}}
175189 {{{ 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
176191{{%- endmacro %}}
177192
178193
@@ -222,6 +237,8 @@ value: :code:`Setting={{ varname1 }}`
222237 path: {{{ config_file }}}
223238 mode: '0600'
224239 state: touch
240+ modification_time: preserve
241+ access_time: preserve
225242{{%- else %}}
226243{{{ ansible_set_config_file(msg, "/etc/ssh/sshd_config", parameter, value=value, create="yes", prefix_regex='(?i)^\s*', validate="/usr/sbin/sshd -t -f %s", insert_before="BOF", rule_title=rule_title) }}}
227244{{%- endif %}}
0 commit comments