私のプレイには3つのホストがあります。可能なターゲット固有のホスト(delegate_toではない)
[マシン]
- マシンA
- マシンB
- MachineC
MongoDBは、これらのサーバー上で実行されます。また、これらのサーバーの1つはMongoのMasterDBになることができます。
したがって、これらのマシンのそれぞれは「マスター」になることができます。これは、マシンがマスターである場合のみ、マシンAが目標とされ、この例では、事実を設定することによって決定されます。また、これはマシンBとMachineCのために行われる
- name: check if master
shell: 'shell command to check if master'
set_fact: MasterHost="machineA"
when: 'shell command to check if master'.stdout == "true"
。
ミッションを達成する: "MasterHost"という事実を持つマスターマシン上でのみコマンドを実行する。 私はdelegate_toモジュールを試してみましたが、delegate_toは、2台の他のマシンを使用しています:
- name: some task
copy: src=/tmp/test.txt dest=/tmp/test.txt
delegate_to: "{{ MasterHost }}"
私は私の脚本でマスターにそれをターゲットとだけ--limitを介してマスタ上ではなく、シェルでコマンドを実行したいですオプション。ある
- name: check if master
shell: 'shell command to check if master'
register: master_check
- name: some task
copy: src=/tmp/test.txt dest=/tmp/test.txt
when: master_check.stdout == "true"
を実行し、すべてのホスト上の遊びとのみ1:ホストがマスターであるかどうかを確認するには、コマンドの実行を想定し
は
'shell'と' set_fact'はモジュールなので、最初のタスクには構文エラーがあります。あなたの2番目のタスクの目的は完全に不明です。 master.stdout == "true" 'のようなときは必要ないようですが、あなたが望むものを指定しない限り、それは推測ゲームです。 – techraf
これは基本的な例であり、構文エラーはさておきました。 私はMasterHostでコマンドを実行し、プレイ中の他のホストを除外したいと考えています。 – Kevin