ロールでロールを再利用することは可能ですか?ロールのmeta/main.ymlファイルで依存関係を定義するのではなく、別のロールのtasks/main.ymlのロールを直接含むで定義するのではありませんか?
たとえば、ロールブックでいくつかの基本的なロールを定義し、ロールでいくつかのより高度なロールを定義します。特定のタスクに加えて、基本的な役割の一部を高レベルの役割に含めるようにします。
playbooks/
rolebooks/
some_role/
roles/
webtier/
tasks/
main.yml
プレイブック/roles/webtier/tasks/main.yml:
- Shell: echo 'hello'
- { role: rolebooks/some_role }
- Shell: echo 'still busy'
ありがとう
知りません、できません。これが依存関係の目的です。
依存関係を回避したい場合(たとえば、「ロールX」を2つのタスク間で実行したい場合)、タスクが関連していると思われる場合は、プレイブック自体でこれを実行できます。
roles/webtier/tasks/main.yml:
- Shell: echo 'hello'
- include: webtier.yml
- Shell: echo 'role done'
全体として、それはあなたが正確に何をしようとしているかに依存します。しかし、あなたの例では、「まだ忙しい」ということは、rolebooks/some_role
はまだ実行中ですが、これは不可能です(ここでは同時実行性はありません)。
もちろん、マスタープレイブックでロールをシーケンスすることもできます(これはおそらく既に行っていることです)。
- name: Polite foo stuff
hosts: foo_hosts
roles:
- say_hello
- rolebooks/some_role
- say_bye
- name: Unpolite foo stuff
hosts: !foo_hosts
roles:
- rolebooks/some_role
できませんが、似たようなことができます。
レイアウトの場合:
roles/
...
common/tasks/main.yml
nginx/tasks/main.yml
...
nginx/tasks/main.yml
、共通タスクを呼び出すことができます。
- name: Call the 'common' role to do some general setup
include: ../../common/tasks/main.yml
通常のインポート構造を使用していないため、以前に標準的な方法でロールを含めない限り、ロールのデフォルト変数にアクセスできないなどの「奇妙な」ことに遭遇する可能性があることに注意してください。
メタ依存関係を使用しないと言ったことに感謝しますが、私が思いついた最善の解決策は、onlyにmeta/dependency.ymlが含まれるロールを作成することです
これにより、任意の数のロールを正しい順序で含めることができます。
必ずallow_duplicatesを設定してください:yes
---
allow_duplicates: yes
dependencies:
- { role: app-install-rpms, tags: ['rpms'] }
- { role: app-Java-config, tags: ['config'] }
- { role: app-directories, tags: ['dirs'] }
- { role: app-config-site_management, tags: ['site_management'] }
- { role: app-config-initd, tags: ['initd'] }
- { role: Tomcat-boapp, tags: ['config'] }
これにより、本質的にロールからロールを呼び出すことができます。