7

可能なバージョン: 2.1.0

私のansible hostsファイルは次のとおりです。

[PM]
xyz.example.com ansible_connection=ssh

[ND]
pqr.example.com ansible_connection=ssh

[CM]
xyz.example.com ansible_connection=ssh
pqr.example.com ansible_connection=ssh

そして、プレイブックは次のとおりです。

- hosts: PM:ND:CM
   remote_user: root
   tasks:
    {some thing}

- hosts: PM
   remote_user: root
   tasks:
    {some thing}

 - hosts: ND
   remote_user: root
   tasks:
    {some thing}

- hosts: CM
   remote_user: root
   tasks:
    {some thing}

そして、次のコマンドでプレイブックを実行しています:

ansible-playbook --limit 'PM' akana-installation.yml

しかし、それでも Playbook はすべてのホストで再生されています。つまり、

Play 'PM:ND:CM'
Play 'PM'
Play 'ND'
Play 'CM'

それらのすべての演劇が演奏されています。これを解決するのを手伝ってください。

私が必要としているのは、プレイブックの実行中にグループ名を指定することです。そのグループのみが再生する必要があるため、他の方法があることをお知らせください。

4

3 に答える 3

4

元の質問は次のとおりでした: --limit オプションが機能していません

呼び出すansible-playbook --limit 'PM' akana-installation.ymlことにより、サーバーを PM グループにあるホストに制限するように ansible に指示します。
あなたの場合は になりますxyz.example.com
このサーバーが複数のグループに属している場合、そのサーバーは引き続きそのグループのメンバーであることに注意してください。
限定在庫は次のようになります。

[PM]
xyz.example.com ansible_connection=ssh

[ND]

[CM]
xyz.example.com ansible_connection=ssh

ansible-playbook は、asma.example.com に適用可能なプレイブック内のすべてのプレイを実行します。
あなたの場合:

Play 'PM:ND:CM'
[xyz.example.com]
Play 'PM'
[xyz.example.com]
Play 'ND'
skipping: no hosts matched
Play 'CM'
[xyz.example.com]
于 2016-07-12T09:47:43.400 に答える
0

これは、前の回答に追加することです。質問を誤解していたら申し訳ありませんが、あなたの例のプレイブックには説明がありませんでした。

スキップされたホストのクリーンアップ:
グループ 'ND' は (前述のように) どのホストとも一致しません。また、プレイから出力を削除したい場合は、Callback プラグインを使用する必要があります。次のGistを使用します。

制限する別の方法:求めている方法で制限するには、 TAGS
を使用する必要があります。これにより、ホスト リストではなく、プレイによって制限することができます (これはあなたがやりたいと思われることです)。

これを行うには、プレイにタグを追加します。

...
- hosts: PM
  remote_user: root
  tags: pmtag
  tasks:
    {some thing}

次に、必要に応じて新しいタグを除外または含めて Playbook を実行します。

ansible-playbook --limit 'PM' akana-installation.yml --tags pmtag

これにより、PM 実行中のホストのみが pmtag でタグ付けされた再生のみを実行するようになります。

于 2016-07-18T19:15:48.650 に答える