1

コードを 2 つのシステムにデプロイしたい....

group_vars/allさまざまな変数があります。

---
# group variable for webservers
username: abc

hosts私はWindowsグループと2つのマシンIPを持っています..

[webservers]
10.0.1.2

[databases]
10.0.1.3

role/tasks/playbook両方のマシンで実行されるプレイがあります...

---
- hosts: all
  roles:
    - base

現時点の:

  • すべてのフォルダーから var を取得し、jinja2 テンプレートに置き換えて、テンプレート情報に基づいてタスクを実行します。

必要:

  • ユーザー名のような1つのユーザー変数のみが2つのマシンで異なる必要がある状況にあります.....最後にusername=abc、1つのマシンとusername=xyz別のマシンで同じプレイブックと同じテンプレートを実行したい..

出来ますか?

4

2 に答える 2

3

のほかgroup_varshost_vars、ホストごとに個別の変数を定義できる場所があります。ホストに依存するものはすべてそこに保存する必要があり、ユーザー名はそこに収まるように見えます。

これら 2 つ以外のホストの場合は、テンプレートで定義された変数にフォールバックするgroup_varsか、テンプレートにデフォルト値を設定できます。

{{ username | default("AxelFoley")}}
于 2015-07-14T14:58:16.020 に答える
2

さまざまな場所にさまざまな変数を設定することができます。ansible の変数の優先順位に関するドキュメントを参照してください。

接続ユーザー名の最も一般的な場所は、hostsファイル内です。

[webservers]
10.0.1.2      ansible_ssh_user=vagrant

[databases]
10.0.1.3      ansible_ssh_user=ubuntu

変数を使用して一部のサービス コンシューマーを構成する場合usernameは、それをgroup_varsまたはに設定する必要がありhost_varsます。

---
# group variable for webservers
username: abc

---
# host variables for 10.0.1.2
username: xyz

または、デプロイしているアプリケーションをループする必要がある場合は、プレイブック レベルで実行できます。

---
- hosts: webservers
  vars:
    app1:
      username: abc
  roles:
    - { configure_application, app: app1 }

- hosts: databases
  vars:
    app2:
      username: xyz
  roles:
    - { configure_application, app: app2 }
于 2015-07-14T15:09:14.120 に答える