group_namesから最初の不可能なホスト名を見つける方法がわかりません。あなたはそれをどうやるのか、親切に私にアドバイスできますか?グループの最初のホスト名
ホスト
[webservers]
server1
server2
server3
[webserver-el7]
server4
server5
server6
と私は問題があることを、各ホストグループ
playbook1.yml
- name: deploy app
hosts: webservers
serial: 8
roles:
- roles1
playbook2.yml
- name: deploy app
hosts: webservers-el7
serial: 8
roles:
- roles1
のための2つの異なる脚本を持っています私 各グループの最初のホストに委任タスクを持っています。以前私はWebサーバグループを使用するので、私は、各グループの最初のものを選択することができますどのように、私は2つの異なるGROUP_NAMESをお持ちの場合は
- name: syncing web files to {{ version_dir }}
synchronize:
src: "{{ build_dir }}"
dest: "{{ version_dir }}"
rsync_timeout: 60
delegate_to: "{{ groups.webservers | first }}"
以下のタスクを使用して、はるかに簡単でしたか?よりダイナミックにすることができます
ちょうどプレイホストを試してみましたが、私はシリアルの展開を使用していなかった場合を除き、それは完璧に動作します。私はマスターホストを使用して同期しますが、次のシリアルプレイでは最初のplay_hostsが再び変更されます。現在、私のホストは単一のグループにしか属しません。 group_namesから最初のホスト名を取得する方法を知っていますか?私はすでにいくつかの変数を試しましたが、まだ運がありません。 – AlamHo
例を使って答えを更新しました。また、Ansible 2.2+を 'ansible_play_hosts'と一緒に使うことも考えられます - それはそれぞれのシリアル実行の完全なリストを含んでいます。 –
ニース。それは本当にうまくいく。 ansible_play_hostsも機能します。あなたの可能な専門知識のおかげで多くの – AlamHo