プレイブックを使用してさまざまなサーバーにさまざまなキャラクターを配布する

プレイブックを使用してさまざまなサーバーにさまざまなキャラクターを配布する

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つの項目リストしかないことを意味します。

hosts2番目の例では、2番目の宣言の前にダッシュ文字を追加すると、playbook.yml2つのプレイブックを含む有効なプレイブックが作成されます。

- name: Create cluster
  become: yes

  hosts: front
  roles:
  - deploy_front

- hosts: db
  roles:
  - deploy_db

元の2番目の例では、単一の再生のみが定義されています。またhostsrolesキーワードは 1 回の一致で 2 回定義されます。 YAMLは、hostsキーワードと2つのroles異なる定義があると文句を言います。

関連情報