リモートサーバーでAnsibleインベントリを定義する

リモートサーバーでAnsibleインベントリを定義する

testFile.txtAnsible PlayBookがからインポートServerBする方法を知るために、以下のコードで具体的にどのような変更が必要ですかServerA

これらはAmazon Linuxサーバーです。

ServerAと両方とも中央ServerBAnsibleサーバーで動作するリモートサーバー。

中央のAnsibleサーバーで作成されたプレイブックファイルは、Ansibleサーバーに戻るのではなく、ランタイムにServerB直接コピー/インポートする必要があります。ServerAServerB

ServerAまた、(IPごとに1つ)のマニフェストは、リモートサーバーまたはリモートサーバーではServerBなく、中央Ansibleサーバーで定義されています。 ServerAServerB

したがって、実行時にプレイブックは次の行に達すると次のエラーが発生します。

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。

関連情報