Ansibleで複数のプレイブックを順番に実行する方法は?


16

私は、新しいサーバーインスタンスを起動するために、いくつかのAnsibleプレイブックに取り組んでいます。サーバーを正常に起動するには、特定の順序で実行する必要がある約15の異なるプレイブックがあります。

私の最初の考えは、実行するansible-playbook playbook_name.yml必要がある各プレイブックに対して1つのエントリを実行して複製するシェルスクリプトを記述することでした。

マスタープレイブックを使用してこれを行うより賢明な/より良い方法があり、もしそうならどのようになりますか(例を高く評価します)。

すべてを実行する1つのモノリシックプレイブックを作成することもできますが、最初にルートとして実行され、後でsudoユーザーとして実行される一部のプレイがあります。



1
rootとして実行してからsudoユーザーとして実行するケースを処理するには、ブロック機能を使用できます- become:各ブロックの最後にパーツを配置します。ただし、接続ユーザーをrootからsudoユーザーに切り替えるには、新しいplayを作成する必要があります。
-RichVel

回答:


15

多くのサブプレイブックを構築し、includeステートメントを介してそれらを集約します。

- include: playbook-one.yml
- include: playbook-two.yml

プレイブックを順番に実行する必要があり、それらすべてが必須である場合は、メインプレイブックを作成し、タスクを含むファイルを含めます。プレイブックは常にクローズドプロセスである必要があります。


2
答えの最後の部分について詳しく説明していただけますか?「プレイブックは常にクローズドプロセスであるべきです」とはどういう意味ですか。?
マイク・ベリャ

1
正規表現を使用してすべてのプレイブックを指定する方法はありますか?例:- include : books/*.yml
blueskin

8
include廃止予定のようです。docs.ansible.com/ansible/latest/playbooks_reuse.htmlimport_playbook: foo行くのが正しい方法だと思いますが、あまり経験がありません。
アンドリュー

11

Ansilbeの新しいバージョンでは、多くのサブプレイブックを構築し、import_playbookステートメントを使用してそれらを集約できます。

---
- import_playbook: A-systemd-networkd.yml
- import_playbook: B-fail2ban-ssh.yml
- import_playbook: C-enable-watchdog.yml
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.