2016-09-19 3 views
0

Ich versuche, mehrere Zeilen in einer Datei mit lineinfile hinzufügen oder bearbeiten, aber nicht funktioniert. Ich verwende Code unten ohne Glück Ref: ansible: lineinfile for several lines?Ansible Fileinline funktioniert nicht mit Schleife

# vim /etc/ansible/playbook/test-play.yml 

- hosts: tst.wizvision.com 
    tasks: 
    - name: change of line 
    lineinfile: 
     dest: /root/test.txt 
     regexp: "{{ item.regexp }}" 
     line: "{{ item.line }}" 
     backrefs: yes 
     with_items: 
     - { regexp: '^# line one', line: 'NEW LINE ONE' } 
     - { regexp: '^# line two', line: 'NEW LINE TWO' } 

ansible Fehler:

# ansible-playbook test-2.yml 

TASK [Wechsel line] ************** ********************************************

fatal: [localhost]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'item' is undefined\n\nThe error appears to have been in '/etc/ansible/playbook/test-2.yml': line 3, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: change of line\n^here\n"}

Antwort

2

Ihre with_items ist innerhalb der Aufgabe nicht korrekt eingerückt.

with_items sollte auf der Ebene des Moduls sein, nicht als Parameter für das Modul selbst. In Ihrem Fall übergeben Sie with_items als Parameter an lineinfile Modul, und ansible beschwert sich, dass es keinen Parameter wie with_items für lineinfile Modul gibt.

sollte Ihre Aufgabe wie folgt aussehen -

tasks: 
- name: change of line 
    lineinfile: 
    dest: /root/test.txt 
    regexp: "{{ item.regexp }}" 
    line: "{{ item.line }}" 
    backrefs: yes 
    with_items: 
    - { regexp: '^# line one', line: 'NEW LINE ONE' } 
    - { regexp: '^# line two', line: 'NEW LINE TWO' } 
+0

Vielen Dank. Es funktioniert jetzt. Es hat viel meiner Zeit verschwendet .... –

+0

Kein Problem, froh, dass es für Sie gearbeitet hat! :) – rk2