1. ホーム
  2. ansible

ansible playbookに別のロールのタスクを含める

2023-07-12 23:05:57

質問

私は、個々のタスクでプレイブックリブのようなものを設計しています。

というわけで、通常のロールレポには、以下のようなものがあります。

roles
├── common
│   └── tasks
│       ├── A.yml
│       ├── B.yml
│       ├── C.yml
│       ├── D.yml
│       ├── login.yml
│       ├── logout.yml
│       └── save.yml
├── custom_stuff_workflow
│   └── tasks
│       └── main.yml
└── other_stuff_workflow
    └── tasks
        └── main.yml

Custom_stuff_workflow にある私の main.yml は、次のような内容になっています。

---

- include: login.yml
- include: A.yml
- include: C.yml
- include: save.yml
- include: logout.yml

で、こちらは別のワークフローで

---

- include: login.yml
- include: B.yml
- include: A.yml
- include: D.yml
- include: save.yml
- include: logout.yml

自然な形で行う方法が見つかりません。 うまくいった方法は、すべてのタスクを1つのロールにして、custom_stuff_workflowを含めながら関連するタスクにタグ付けする方法です。

私が持っている問題は、タグは呼び出し側のプレイブックで設定できないことです。 私はこのansibleレポを社内の多くの人に配布しているので、コマンドラインでの呼び出しに頼ることはできません( #! ヘッダが処理されるようにymlで ansible-playbook コマンドで処理されます)。

各ワークフローに関連するタスク(上のツリーではcommonの中)をコピーすることもできますが、繰り返しにならないようにしたいので

異なるロール上でタスクを繰り返すことなく、私が望むものを達成するための解決策をどなたか教えてください。

私の問題の根幹は、私がタスクを個々に定義しており、ansibleではそれが不自然に見えることだと思います...。

どうもありがとうございます。

PS: ワークフローのタスクは特定の順序で実行する必要があり、抽象化するための唯一の自然なステップはログインと保存/ログアウトであることに注意してください。

PPS: 私はこの質問を見たことがあります Ansibleの他のロールの中からロールを呼び出すにはどうしたらいいですか? という質問がありましたが、これはロール内のタスクのサブセットではなく、完全なロールを呼び出しているため、私の問題を解決するものではありません。

どのように解決するのですか?

この問題にぶつかった人がいるかもしれないので、バージョン 2.2 は現在、Ansible の include_role .このようなことができるようになりました。

---
- name: do something
  include_role:
    name: common
    tasks_from: login

ドキュメントをチェックする ここで .