ファイルの特定の行をansibleに置き換えます。

ファイルの特定の行をansibleに置き換えます。

ansibleの交換モジュールを使用してファイルの文字列を置き換える方法を知っています。私が探しているのは、特定の行を置き換えることです。

複数の場所に同じ文字列を持つファイルがあり、そのインスタンスを1つだけ置き換えたいと思います。

Xインスタンスのみを交換または交換するための特定の行を提供する方法はありますか?

答え1

Xインスタンスのみを交換または交換するための特定の行を提供する方法はありますか?

私は、特定の行を変更するためにshellモジュールと標準呼び出しを使用します。sed以下の例では、sed4行目のみ変更しました。

---
- hosts: all 
  tasks:
    - name: "Run sed via ansible"
      shell: sed -i '4s/bike/car/' /home/maulinglawns/slask/sed_example

Ansible Playbookの古いファイルの例:

cat sed_example 
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane

スクリプトを実行します。

ansible-playbook sed_with_ansible.yml -i "localhost," -k
SSH password: 

PLAY [all] *********************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [Run sed via ansible] *****************************************************
changed: [localhost]
 [WARNING]: Consider using template or lineinfile module rather than running
sed


PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0  

スクリプト以降のファイル:

cat sed_example 
bike plane
bike plane
bike plane
car plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane

あなた可能このモジュールを使用してこれを達成することは可能ですlineinfileが、そのようなスイッチについては知らず、ドキュメントにもありません。

関連情報