Playbook分割編Tweet前回はAnsibleやYAMLの基本的な使い方について書きましたが、今回はPlaybookを分割する方法について取り上げます。「Apacheをインストールするタスク集」「MySQLを設定するタスク集」などを作っておけば、必要なファイルをチョイスするだけで環境が構築できるというわけです。参考ページPlaybookを分割するこのまま1つのPlaybookで運用することもできますが、次第に以下のような欲求が出てきます。特定の定形処理をPlaybook化したい複数のPlaybookを作成すると重複する変数やタスクが出てくる重複する部分をなくして管理を楽にしたい!Ansibleには外部のファイルにあるタスクや変数を読み込む機能がありますのでこいつを利用してやります。taskを別ファイルにする以下のファイルのtaskを別のファイルにしてみます。ansible.txtタスクを保存したファイルを格納するtasksという名前のディレクトリを作成し、各タスク毎にファイルを分割しました。★tasks/write-date.yml現在の日時を出力します。ansible.txttasks/write-memory.ymlこちらは現在のメモリ使用量を記録します。ansible.txtplaybook.ymlinclude_tasksで外部のタスクを読み込んで、そのまま実行することができます。tasks/write-memory.yml変数を別ファイルにするタスクだけではなく変数も外部から読み込んでくることができます。今度は以下のPlaybookを分割します。}}変数を保存したファイルを格納するvarsという名前のディレクトリを作成し、external_vars.ymlというファイルに変数を外出ししてみます。★vars/external_vars.ymlこちらはそのまま変数を書いてあげるだけです。ansible.txtplaybook.yml変数を呼び出したいPlaybookでvars_filesにファイルのパスを書いてあげれば完了です。}}ご覧の通りvars_filesは配列となってますので、同様の書式で一度に複数のファイルを読み込むことが可能です。taskの外部ファイルへ変数を渡すinclude_tasksで読み込んだファイルへは、これまで紹介したvarsやvars_filesで渡すことができます。include_tasksの箇所で直接変数を定義することも可能です。Cなお同じ変数名を複数箇所で定義した場合、優先順位の強い物に上書きされます。上記の例の場合は以下のようになります(上にあるほど優先順位が高い)。CBA実際にそれぞれのファイル名を変更して実験してみるとわかると思います。variable?の項目を参照ください。個人的にはAよりもBの方が強いのが意外でした。notifyとhandler編https://blog.katsubemakito.net/ansible/ansible-1st-3前回はPlaybookの分割に挑戦しました。今回は特定のタスクが完了した場合に後続処理を定義する方法についてまとめます。自宅警備がてらゲームのお仕事や講師などしてご飯を食べてます。ご質問やリクエストなどお気軽に。メールアドレスの入力は任意です。書き込みが反映されるまで時間がかかります。コメントデータの処理方法の詳細はこちらをご覧ください。ブログをメールで購読メールアドレスを記入して購読すれば、更新をメールで受信できます。