過去問ドリル

LinuCレベル3 プラットフォームスペシャリスト プラットフォームの運用管理 問20

プラットフォームの運用管理/インフラプロビジョニングの自動化

AnsibleのRoleを作成している。Roleの利用者がPlaybookやインベントリの変数で簡単に上書きできる、優先順位の低い既定値を用意したい。変数を定義する場所として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「プラットフォームの運用管理」に対応。実際の試験問題ではありません)

正解:C

解説

Roleのdefaults/main.ymlに書いた変数は、Ansibleの変数の優先順位の中で最も低い位置にあります。そのため、インベントリのgroup_vars・host_varsやPlaybookのvars、コマンドラインの -e などで利用者が容易に上書きでき、Roleの既定値を置く場所に適しています。一方、vars/main.ymlの変数は優先順位が高く、インベントリの変数では上書きされないため、Role内部で固定したい値を置くのに向いています。ansible-galaxy role init でRoleの雛形を作ると、両方のディレクトリが用意されます。

選択肢ごとの解説

  • A誤り。vars/main.ymlの変数は優先順位が高く、インベントリの変数などでは上書きできないため、利用者が変える既定値の置き場には向きません。
  • B誤り。meta/main.ymlはRoleの作成者やサポートするプラットフォーム、依存するRoleなどのメタデータを記述するファイルです。
  • C正しい。defaults/main.ymlの変数は優先順位が最も低く、Roleの既定値として利用者が上書きしやすい場所です。
  • D誤り。handlers/main.ymlは、notifyで呼び出されるハンドラー(サービスの再起動など)を定義するファイルです。
LinuCレベル3 プラットフォームスペシャリストの問題を演習モードで解く