你如何确保一条线存在并且使用Ansible LineinFile取消注释?

时间:2015-10-17 07:40:19

标签: .htaccess ansible ansible-playbook

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

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

#php_flag display_errors on

我使用了以下内容:

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

1 个答案:

答案 0 :(得分:8)

实际上你的例子是这样的:

.htaccess文件的内容:

#php_flag display_errors on

ansible play:

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

有关此剧的ansible-playbook的结果:

$ cat .htaccess
#php_flag display_errors on
php_flag display_errors on

如果文件以注释行开头,您将看到第二行未注释。要更正此问题,请使用与现有行匹配的正则表达式并替换它:

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

请注意backrefs: yes,如果您想要取消注释的行尚未显示和评论,则该播放将完全不做任何更改。