2015-10-17 13 views
6

Come si fa a garantire una linea specifica esiste in un file e non sia commentata con del ansible `lineinfile'Come si garantisce che una linea esista e non sia commutata con Ansible LineinFile?

La linea che voglio non commentata (in .htaccess):

#php_flag display_errors on 

ho usato il seguente:

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

Perché non è possibile utilizzare la gestione della configurazione sull'intero file '.htaccess'? – tedder42

risposta

8

in realtà il vostro esempio come funziona è:

Contenuto del .htaccess del file:

#php_flag display_errors on 

Il gioco ansible:

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

Risultati di ansible-playbook con questo gioco:

$ cat .htaccess 
#php_flag display_errors on 
php_flag display_errors on 

Se il file inizia con la riga di commento vedrete un seconda linea non commentata. Per correggere questo, utilizzare un'espressione regolare che corrisponde alla linea esistente e sostituirlo:

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

Nota però che con backrefs: yes se la linea che si desidera non commentata non è già presente e ha commentato, il gioco farà alcun cambiamento a tutti .

Problemi correlati