2016-09-26 3 views
3

私は.properties/.conf/.xml/.csvファイルを持っています。要件は、キーに一致し、そのキーがそのファイルに存在する場合にのみ値を置き換える必要があります。危険なLineinfile:キーを見つけ、値だけを置き換えてください

マイ.propertiesファイルには、以下

name=newname 
surname=newname 

、以下のようになります。私のkey_value.ymlファイル

以下
--- 
properties: 
- { name: name, value: jon} 
- { name: surname, value: miller } 

は同じことを行うための私のansibleタスクです。

--- 
- name: Find and replace 
    lineinfile: 
    dest: /tmp/example/example.properties 
    regexp: "{{ item.name }}" 
    line: "{{ item.value }}" 
    inserafter: '{{ item.name }}=' 
    backrefs: yes 
    state: present 
    with_items: 
    - "{{ properties }}" 

しかし、これは動作していないようです。その行全体が置き換えられます。助けてください!行のキーを含む

+1

[ドキュメント](http://docs.ansible.com/ansible/lineinfile_module.html)をよくお読みください。 'insertafter'と' line'はあなたが使う方法ではありません。私は[置換](http://docs.ansible.com/ansible/replace_module.html)モジュールを選択するべきだと思います。そして、裏返しを使用して交換ラインを作ります。 –

+0

"*。.properties/.conf/.xml/.csvファイル*"これは広すぎます。あなたはすべてのタイプの普遍的なタスクを取得しません。 – techraf

答えて

-1

試してみてください。

--- 
- name: Find and replace 
    lineinfile: 
    dest: /tmp/example/example.properties 
    regexp: "{{ item.name }}" 
    line: "{{ item.name }}={{ item.value }}" 
    backrefs: yes 
    state: present 
    with_items: 
    - "{{ properties }}" 
関連する問題