.htaccess 如何确保行存在并使用Ansible LineinFile取消注释?

.htaccess 如何确保行存在并使用Ansible LineinFile取消注释?,.htaccess,ansible,ansible-playbook,.htaccess,Ansible,Ansible Playbook,如何确保文件中存在特定行,并使用ansible的“lineinfile”取消注释 我要取消注释的行(在.htaccess中): 我使用了以下方法: - name: Make sure PHP Errors are turned on lineinfile: dest={{ www_path }}/.htaccess line="php_flag display_errors on" 实际上,您的示例的工作原理如下: .htaccess文件的内容: #php_flag display

如何确保文件中存在特定行,并使用ansible的“lineinfile”取消注释

我要取消注释的行(在
.htaccess
中):

我使用了以下方法:

  - name: Make sure PHP Errors are turned on
    lineinfile: dest={{ www_path }}/.htaccess line="php_flag display_errors on"

实际上,您的示例的工作原理如下:

.htaccess
文件的内容:

#php_flag display_errors on
ansible戏剧:

- name: Make sure PHP Errors are turned on
  lineinfile: 
    dest: "{{ www_path }}/.htaccess"
    line: "php_flag display_errors on"
此剧本的ansible剧本结果:

$ cat .htaccess
#php_flag display_errors on
php_flag display_errors on
如果文件以注释行开头,您将看到第二行未注释。要更正此问题,请使用与现有行匹配的regexp并替换它:

- lineinfile:
    dest: /Users/bwhaley/tmp/file
    regexp: '^#php_flag display_errors'
    line: 'php_flag display_errors'
    backrefs: yes

请注意,使用
backrefs:yes
时,如果要取消注释的行尚未出现并已注释,则该播放将不会进行任何更改

为什么不能对整个
.htaccess
文件使用配置管理?
- lineinfile:
    dest: /Users/bwhaley/tmp/file
    regexp: '^#php_flag display_errors'
    line: 'php_flag display_errors'
    backrefs: yes