実行したいプレイブックがあります。対象のシステムグループが指定されています。私はAniableプレイブックを実行するときにグループオプションが必要
ansible-playbook ./playbooks/setup.yml -l staging
を経由して(この例では、それは「ステージング」だ)グループを指定することができていますが-l staging
が削除された場合は、すべて実行します他のグループがあります。私は- hosts: "*"
がそれぞれのグループに変更されたグループごとに別のプレイブックを作ることができることを理解していますが、残りのプレイブックはすべて同じです。すべてを複製/コピー - パスタなしでこれを行う方法はありますか?ここで追加のコンテキストについては
は私の現在の設定パス構造
.
├── ansible.cfg
├── inventory
│ ├── group_vars
│ ├── host_vars
│ └── hosts
├── playbooks
│ └── setup.yml
└── roles
├── common
│ ├── README.md
│ ├── defaults
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ ├── main.yml
│ │ └── redhat.yml
│ └── templates
├── ...
│
└── ...
であり、これはsetup.yml
内容
---
- hosts: "*"
vars_prompt:
- name: ...
prompt: "..."
default: false
private: no
- name: "bar_a"
prompt: "..."
default: false
private: no
...
roles:
- { role: foobar, foo: 'bar', foo_a: bar_a}
の大まかな概要であり、ここで私のansible.cfg
ファイル
[defaults]
inventory = inventory
roles_path = roles:$PROJECT_HOME/roles
forks = 10
timeout = 15
host_key_checking = False
#log_path=./log/ansible.log
retry_files_enabled = False
callback_whitelist = profile_tasks
transport = smart
gathering = smart
fact_caching = jsonfile
fact_caching_connection = ./.factcache
fact_caching_timeout = 86400
[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o ForwardAgent=yes
pipelining = true
このケースでは、異なるインベントリを持ち、 '-i staging'でプレーブックを実行することになっています。 –
@ ConstantinSuvorov正しい行動様式に感謝します。回答の形で例を挙げてください。私は現在の設定で別のインベントリを作成し、あなたが言及したように指定しようとしましたが、 '[警告]:ホストファイルが見つかりません:ステージング' - 私は、重要。 – Marc
あなたは、特定のグループが指定されているときにのみ、プレイブックを実行させ、その後に「-lステージングが削除された場合には、他のグループが実行されます。これは、-l GROUP_NAMEが省略された場合、プレイブックの他の部分が実行されることを示唆しています。 – Petro026