72921


Ansibleでロールを作成する場合は、下記のようなディレクトリ構成にするようですが、  
目的は **どこに何が書いてあるかを分かり易くする（可読性を高める）** ことだけでしょうか？

[code]

    roles/
      ロール名/
        defaults/
        files/
        handlers/
        meta/
        tasks/
        templates/
        tests/
        vars/
    
[/code]

単一のファイルとしてではなく上記のように分割するからには、  
何か理由があると思っているのですが、いかがでしょうか？  
（例えば、より再利用性が高くなるような参照の仕方があるとか）  
手元の本ではそれが確認できずもやもやしております。


CC BY-SA 4.0
2020-11-05T04:28:07.450
71742
2020-12-27T11:04:25.297
36365
question
ansible
Ansibleのロールのディレクトリ構成の考え方について


それぞれが役割を持ったディレクトリとなっています  
・defaultsでロールの初期変数を司る  
・filesでcopyモジュールなどのsrcファイルを相対で指定した場合に最優先される検索先になる  
・handlersで実行したい処理をまとめたてタスクの最後に一度だけ実行  
・metaでGalaxyに登録して他の人が分かりやすい情報を記載  
・tasksでmain.ymlからinclude_varsでvars配下の変数ファイル読み込んだり、include_tasksでtasks内のタスクファイルを読み込んで実行する  
・templatesにtemplateモジュール実行時のsrcファイルを相対で指定した場合に最優先される検索先になる  
・testsにインベントリファイルやロールを呼び出すタスクファイルを配置し、ロールをゲットした人がとりあえず実行できるようにしておく  
・varsはinclude_varsでファイルを相対で指定した場合に最優先される検索先になる

とくにdefaultsとvars、filesとtemplatesは混同しがちかなと思いますが役割が違います  
・defautls デフォルトの変数、host変数やExtra変数で上書き可能  
・vars include_varsで読み込む変数、host変数やgroup変数では上書きできない、Extra変数で上書き可能

・files 配置したいファイルそのものを置く、バイナリなど  
・templates 設定ファイルなど、実行時に固有の値を埋め込みたいものを置く、テキストファイルが原則


CC BY-SA 4.0
2020-12-27T11:04:25.297
72921
2020-12-27T11:04:25.297
43305
71742
answer