コマンドラインでのExtra Vars
-eで実行時に値を上書きします
「コマンドラインでのExtra Vars」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
実行時に値を指定する
値をファイルに埋め込むのではなく、playの起動時に選びたい場合があります。そのために使うのがextra varsです。🌟
-eフラグ
ansible-playbookの-e(または--extra-vars)フラグでextra varsを渡します。それぞれが実行全体で使える変数になります。
ansible-playbook site.yml -e "env=prod"複数のkey=valueペア
1つの引用符で囲んだ文字列の中で、複数の値を空白で区切ります。Ansibleが各key=valueペアを変数として解析します。
ansible-playbook site.yml -e "env=prod port=443"-eを繰り返し指定する
-eは複数回指定することもできます。指定するたびに独自の変数が追加されるため、長いコマンドでも読みやすく保てます。
ansible-playbook site.yml -e env=prod -e port=443複合型に対応する JSON
key=value では、すべてが文字列になります。数値、リスト、辞書を渡すには、代わりに extra vars の中で JSON を使用します。
ansible-playbook site.yml -e '{"port": 443}'ファイルから extra vars を読み込む
値の先頭に @ を付けると、YAML または JSON ファイルから変数を読み込めます。多くの上書き値を指定する場合に便利です。
ansible-playbook site.yml -e @overrides.ymlextra vars が優先される
extra var は、ほかのほぼすべての変数の取得元より優先されます。vars と CLI の両方で env を設定した場合は、コマンドラインの値が使用されます。
安全な上書きの既定値
extra vars と default フィルターを組み合わせると、上書き値が指定されていない場合でも play を動作させられます。
name: "{{ env | default('dev') }}"環境ごとに使い分ける
起動時に 1 つの extra var を変更するだけで、同じ playbook を dev、staging、prod のいずれにも適用できます。1 つのファイルで、多くの対象に対応できます。
ansible-playbook deploy.yml -e env=stagingフラグで動作を切り替える
extra vars はオンとオフの切り替えにも適しています。1 つの extra var を when 条件と組み合わせて、タスクを実行またはスキップできます。
when: run_migrations | default(false)空白を含む値は適切に引用する
値に空白が含まれる場合は、シェルによって分割されないよう、ペア全体を引用符で囲みます。シェルのクォートに注意してください。
ansible-playbook s.yml -e "motd=Hello there"簡単な確認
vars で port を設定し、さらに -e port=443 を渡しました。どちらの値が優先されますか。
まとめ
これで、起動時に -e で値を上書きし、JSON や @ファイルを渡し、extra vars がほかの取得元より優先されることを利用できるようになりました。✨
よくある質問
「コマンドラインでのExtra Vars」レッスンは無料ですか?
はい。「コマンドラインでのExtra Vars」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「コマンドラインでのExtra Vars」で何を学びますか?
-eで実行時に値を上書きします ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「コマンドラインでのExtra Vars」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Playでのvarsの定義と利用
- {{ }}置換構文
- コマンドラインでのExtra Vars
- 変数の出所と優先順位