testFile.txt
Ansible PlayBookがからインポートServerB
する方法を知るために、以下のコードで具体的にどのような変更が必要ですかServerA
?
これらはAmazon Linuxサーバーです。
ServerA
と両方とも中央ServerB
Ansibleサーバーで動作するリモートサーバー。
中央のAnsibleサーバーで作成されたプレイブックファイルは、Ansibleサーバーに戻るのではなく、ランタイムにServerB
直接コピー/インポートする必要があります。ServerA
ServerB
ServerA
また、(IPごとに1つ)のマニフェストは、リモートサーバーまたはリモートサーバーではServerB
なく、中央Ansibleサーバーで定義されています。 ServerA
ServerB
したがって、実行時にプレイブックは次の行に達すると次のエラーが発生します。
fatal: [ip.of.server.b]: FAILED! => {
"msg": "'ServerA' is undefined"
}
ServerA
それでは、実行時にコードを定義するには、次のコードで具体的にどのような変更が必要ですか?
スクリプトは次のとおりです。
# Then create a file on ServerB and copy/pull that file into ServerA
- name: File transfer example
hosts: ServerB
remote_user: server-b-user
become: true
become_method: sudo
become_user: root
tasks:
- name: Create a test file to copy
shell:
cmd: |
cat <<EOF > /path/on/ServerB/testFile.txt
this is a test file.
EOF
sudo: true
sudo_user: server-b-user
- name: Transfer conf file from master to admin
synchronize:
src: /path/on/ServerB/testFile.txt
dest: /path/on/ServerA/
mode: pull
delegate_to: "{{ ServerA }}"
答え1
それでは、実行時にServerAを定義するには、次のコードで具体的にどのような変更が必要ですか?
- hosts: ServerB
vars:
ServerA: 192.168.0.0
ServerA
変数が定義されていないことを示すエラーメッセージを解決する必要があります。
コードから変数を呼び出しています。サーバーA。変数を定義しておらず、Ansibleがその名前に「true」を登録していないので、定義されておらず、コントローラはユーザーが何を参照しているのかわかりません。
アンサーブル文書delegate_to:
IPアドレスへの直接呼び出しのサポートを示します。欲しいなら変数の使用これにはあなたが必要ですコードで直接宣言してください。、または動的在庫の事実のいずれかを使用してください。
これは次の方法で行うこともできます。マジック変数 inventory_hostname
事実を確認してください。 YMMV。