特定のファイルで、特定の文字列が最初に表示される部分を置き換える必要があります。
このためにAnsibleの交換モジュールを使用したいと思います。
- hosts: abc
tasks:
- name: Replace first occurence of specific string
replace:
path: /etc/config/abc_host/application.yml
regexp: 'Unix'
replace: "Linux"
Unix
これにより、この特定の.ymlファイル内のすべてのエントリがwithに置き換えられます。Linux
しかし、他のホスト(def_host、ghi_hostなど)があり、最初のホストUnix
のみLinux
。
もしそうなら、解決する必要がある2つの問題があります。
まず、ホスト名をパスの変数として使用します。私が望むのは、abc_host.ymlハードコーディングのようなものではありませんpath: /etc/config/($host)_host/application.yml
。
次に、特定の文字列の最初の項目のみを変更したい(他の後続の項目は除く)。
ベストアンサー1
ホスト変数の場合は、必要な名前の数に応じて、Inventory_hostnameまたはInventory_hostname_shortを使用できます。 Inventory_hostnameにはフルネームがあり、ショートネームには最初のピリオドがあります。
Ansibleでは試していませんが、機能することもできます。
replace:
regexp: '^(.*?\.)Unix([.\n]*)$'
replace: '\1Linux\2'