[解決済み] Ansibleのロールのdefaultsとvarsの違いは何ですか?
質問
新しいAnsibleのロールを作成するとき、テンプレートでは
vars
と
defaults
ディレクトリに、空の
main.yml
ファイルを作成します。ロールを定義するときに、これらのどちらかに変数定義を置くことができ、それらは私のタスクで利用可能になります。
に定義するのと何が違うのでしょうか?
defaults
と
vars
? には何を入れるべきでしょうか?
defaults
を、そして何を
vars
? 同じデータに対して両方を使うのは意味があるのでしょうか?
両者の優先順位/プライオリティに違いがあることは承知していますが、何がどこに行くべきかを理解したいです。
例えば、私のロールがターゲットシステム上にディレクトリのリストを作成するとします。作成されるデフォルトのディレクトリのリストを提供したいのですが、ロールを使用する際にユーザーがそれらを上書きできるようにしたいと思います。
このような感じでしょうか。
---
- directories:
- foo
- bar
- baz
これを
defaults/main.yml
または
vars/main.yml
しかし、どこに入れるべきでしょうか?
どのように解決するのか?
のAnsibleドキュメントを参照してください。 変数の優先順位 がうまくまとめてくれています。
同じ名前の変数が別の場所に複数定義されている場合、一定の順序で勝つ、というものです。
- 余分な変数 (コマンドラインの -e) は常に勝ちます。
- インベントリで定義された接続変数 (ansible_ssh_user など) を使用します。
- それから、他のほとんどのもの"(コマンドラインスイッチ、プレイ中のバー、含まれるバー、役割のバーなど)が来る。
- そして、インベントリで定義された残りの変数が来る。
- 次に、システムに関して発見された事実
- そして、quot;role defaults"は、最もquot;defaulty"で、全てに対して優先順位で負けるものです。
例えば、多くのウェブホストに Tomcat をインストールするために使用する "tomcat" ロールがあるとして、いくつかのホストで異なるバージョンの tomcat が必要で、別のケースでは異なるユーザーとして実行する必要がある場合などです。 このような場合
defaults/main.yml
ファイルは、次のようなものです。
tomcat_version: 7.0.56
tomcat_user: tomcat
これらは単なるデフォルト値なので、これらの変数が問題のホストの他のどこにも定義されていない場合に使用されることを意味します。これらの変数に異なる値を指定するために extra-vars やインベントリファイルの facts などで上書きすることができます。
編集:上記のリストはAnsible 1.xのものです。Ansible 2.xではリストが拡張されました。 これまで通り Ansible ドキュメント 2.xの変数の優先順位の詳細については、こちらをご覧ください。
関連
-
Ansible はエラー 'module' オブジェクトに属性 'SSL_ST_INIT' ソリューションがないことに気づきました。
-
ansible共通モジュール
-
[解決済み] Ansibleの定義済み変数の一覧はどこで手に入りますか?
-
[解決済み] タスクまたはタスクのセットごとにユーザーを切り替えるには?
-
[解決済み] Ansible hosts ファイルに定義されている現在のマシンのホスト名を取得する方法は?
-
[解決済み] Ansible がホームディレクトリに .retry ファイルを作成しないようにするにはどうすればよいですか?
-
[解決済み] ansibleで変数が未定義のときにタスクを実行するには?
-
[解決済み] Ansible playbook の hosts 変数をコマンドラインからオーバーライドする
-
[解決済み] Ansible: 現在のターゲットホストの IP アドレスを取得する
-
[解決済み] Ansibleです。ファイルの内容に変数を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ansible共通モジュール
-
[解決済み] Ansibleのロールのdefaultsとvarsの違いは何ですか?
-
[解決済み] Ansible がホームディレクトリに .retry ファイルを作成しないようにするにはどうすればよいですか?
-
[解決済み] ansibleで変数が未定義のときにタスクを実行するには?
-
[解決済み] Ansible - 変数が定義されていない場合は、デフォルトを使用する
-
[解決済み] 現在実行中の ansible-playbook へのパスを持つ変数?
-
[解決済み] ansibleのインベントリファイルでhost_key_checking=falseを設定するには?
-
[解決済み] Ansible playbook の hosts 変数をコマンドラインからオーバーライドする
-
[解決済み] Ansible: 現在のターゲットホストの IP アドレスを取得する
-
[解決済み] Ansibleです。ファイルの内容に変数を設定する