変数の出所と優先順位
変数の出所を示す基本的な見取り図を学びます
「変数の出所と優先順位」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。
あまりにも多い取得元
同じ変数を、インベントリ、play vars、ファイル、CLI など、さまざまな場所で設定できます。それでは、実際にはどの値が優先されるのでしょうか。🌟
優先順位で決まる
Ansible には、変数の優先順位と呼ばれる固定された順序があります。同じ名前が 2 回設定された場合は、優先度の高い取得元が低い取得元を上書きします。
ロールの既定値は最も低い
ロールの defaults フォルダーにある値は、優先順位の最下位に位置します。ほかのほぼすべての設定で簡単に上書きできるようにするためのものです。
# roles/web/defaults/main.yml
http_port: 80インベントリ変数
group_vars や host_vars など、インベントリで設定した変数は、ロールの既定値より上位ですが、play レベルの vars より下位です。
# group_vars/web.yml
http_port: 8080play vars はより上位
play の vars キーにある変数は、インベントリの値より優先されます。ここで値を定義すると、group_vars にある値よりも優先されます。
- hosts: web
vars:
http_port: 9090task vars は限定的
1 つのタスクに vars を付けることもできます。その値はそのタスクでのみ適用され、より広い範囲の play vars より上位になります。
- debug:
var: http_port
vars:
http_port: 1234register と set_fact
register で取得した値や、実行中に set_fact で設定した値は、extra vars のすぐ下という高い順位に位置します。
- set_fact:
http_port: 7000extra vars が最上位
コマンドラインの extra vars は、ほかのすべての設定より優先されます。-e で渡した値が、その実行における最終的な値になります。
ansible-playbook site.yml -e http_port=443同じ順位では最後の定義が優先される
2 つの取得元が同じレベルにある場合は、最後に読み込まれたものが有効になります。まず優先順位で決まり、同順位の場合は読み込み順で決まります。
シンプルに保つ
優先順位の一覧をすべて暗記する必要はほとんどありません。defaults に妥当な値を置き、意図的に上書きし、同じ名前をあちこちで設定するのは避けてください。
実際の値をデバッグする
どの値が優先されたか分からない場合は、debug で表示し、本番環境で使用する前に解決後の値を確認してください。
- debug:
var: http_port簡単な確認
変数の取得元のうち、最も優先順位が高いのはどれですか。
まとめ
優先順位の階層を確認しました。最下位が defaults、続いてインベントリ、play と task の vars、set_fact の順で、最上位が extra vars です。✨
よくある質問
「変数の出所と優先順位」レッスンは無料ですか?
はい。「変数の出所と優先順位」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。
「変数の出所と優先順位」で何を学びますか?
変数の出所を示す基本的な見取り図を学びます ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ansible Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「変数の出所と優先順位」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAnsible Academyレッスンでコードを書いて実行できますか?
はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。