ansibleの交換モジュールを使用してファイルの文字列を置き換える方法を知っています。私が探しているのは、特定の行を置き換えることです。
複数の場所に同じ文字列を持つファイルがあり、そのインスタンスを1つだけ置き換えたいと思います。
Xインスタンスのみを交換または交換するための特定の行を提供する方法はありますか?
答え1
Xインスタンスのみを交換または交換するための特定の行を提供する方法はありますか?
私は、特定の行を変更するためにshell
モジュールと標準呼び出しを使用します。sed
以下の例では、sed
4行目のみ変更しました。
---
- 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
が、そのようなスイッチについては知らず、ドキュメントにもありません。