運用しているシステムで2つのサーバ内に置いていますsample.txtがあります。
このsample.txtについて以下のようなコマンドをサーバ毎に設定記述を変更する事が目的です
これをansibleにして、他のシステムにも同じように適用させる場合について質問となります
'ssh user@server1 "echo AAA > target.txt"'
server1サーバでは、echo AAA
server2サーバでは、echo BBB
としたい
files/sample.txtを 置いていて、sample.txtの末尾に下記を記載することとしています
- '# ssh set' - 'ssh user@server1 "echo AAA > target.txt"'
sample.txt内の記述変更は
lineinfileモジュールを用いて
ec2のDNS名を条件にして、以下の「汎用性ないもの」のように記述して実行できるのですが
汎用性のあるものとしたい時
質問1
他システムにも汎用性を持たせるために、varsでホスト名を変数化して処理させる場合、
どのような設定をしていけばいいのでしょうか
質問2
条件判別するとき、inventory_hostname と ansible_hostname
どちらを使用していけば効率よくなるのでしょうか
質問3
lineinfileのwith_itemsを用いてコマンド処理実行するとき
'ssh user@server1 "echo AAA > target.txt"' 'ssh user@server2 "echo BBB > target.txt"'
のように実行コマンドそのまま書く事は汎用性がないかと思っていまして
汎用性になるために、「試作中内」の
set-target.yml
name: host1 apply
で記述しているような
'ssh user@hostname1 "echo AAA > target.txt"'
を
name: host2 apply
で記述しているような
replaceモジュールを使用して該当箇所だけ変更する形でいいのかと思っています
このようにサーバ単位でファイル内の記述を一部変更していくとき
replaceモジュールが最適なのでしょうか
他、最もよい記載方法がありましたら、ご教示ください
● 汎用性ないもの
tasks/set_target.yml
# host1 apply - name: host1 lineinfile: path: /tmp/target.txt line: "{{ item }}" with_items: - '# host1' - 'ssh user@server1 "echo AAA > target.txt"' when: inventory_hostname == 'server1' tags: add_target # host2 apply - name: host2 lineinfile: path: /tmp/target.txt line: "{{ item }}" with_items: - '# host2' - 'ssh user@server2 "echo BBB > target.txt"' when: inventory_hostname == 'server2' tags: add_target
● 汎用性になるための試作中
■ vars/host1.yml
host1: host: "server1"
■ vars/host2.yml
host2: host: "server2"
==================
■ set-target.yml
- name: include vars include_vars: host.yml # when: "'host1' in ansible_hostname - name: include vars include_vars: host.yml # when: "'host2' in ansible_hostname - name: host1 apply lineinfile: path: /tmp/target.txt line: "{{ item }}" with_items: - '# add-target' - 'ssh user@server1 "echo AAA > target.txt"' when: "'host1' in ansible_hostname tags: add_target - name: host2 apply replace: path: /tmp/target.txt regexp: '\server1' replace: line: ' server2' regexp: '\AAA' line: ' BBB' when: "'host2' in ansible_hostname tags: add_target
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/11 16:52