Fe「ansible-galaxy init」を通じて、2つの役割(deploy_backとdeploy_front)を作成しました。
私もplaybook.ymlファイルを作成しました。
- name: Create cluster
become: yes
hosts: all
roles:
- deploy_front
- deploy_back
「ansible-playbook playbook.yml」から起動すると、両方のサーバーに2つの役割が展開されます。プレイブックのさまざまなサーバーにさまざまなキャラクターを配布する方法は?
playbook.ymlを書くと
- name: Create cluster
become: yes
hosts: front
roles:
- deploy_front
hosts: db
roles:
- deploy_db
すると出力は「...重複辞書キー発見(ホスト)...重複辞書キー発見(役割)...最後に定義された値のみが使用されます」。
答え1
あなたのhosts:
声明と他の声明を別のスクリプトに分ける必要があります。コードは次のようになります。
- name: Create front cluster
become: yes
hosts: front
roles:
- deploy_front
- name: Create db cluster
become: yes
remote_user: different-db-user
hosts: db
roles:
- deploy_db
答え2
「重複キー」メッセージが表示されるのは、YAMLの構造によるものです。
スクリプトは、順序付きリスト形式のスクリプトの集まりです。各再生は、一連のキーワード/値のペアで指定されます。一般的な遊ぶname
キーワードは、、、hosts
およびbecome
ですroles
。
YAMLでは、リスト内の他の項目を指定するためにダッシュ(-
)文字を使用できます。どちらのサンプルスクリプトもplaybook.xml
左端にダッシュ文字しかありません。これは、演劇または演劇のスクリプトには1つの項目リストしかないことを意味します。
hosts
2番目の例では、2番目の宣言の前にダッシュ文字を追加すると、playbook.yml
2つのプレイブックを含む有効なプレイブックが作成されます。
- name: Create cluster
become: yes
hosts: front
roles:
- deploy_front
- hosts: db
roles:
- deploy_db
元の2番目の例では、単一の再生のみが定義されています。またhosts
、roles
キーワードは 1 回の一致で 2 回定義されます。 YAMLは、hosts
キーワードと2つのroles
異なる定義があると文句を言います。