True の場合のみタスクを実行する
ブール条件でタスクの実行を制御します。
「True の場合のみタスクを実行する」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。
条件で動くタスク
タスクを特定の場合にだけ実行したいことがあります。whenキーワードを使うと、指定した条件によってタスクの実行を制御できます。🚦
whenキーワード
任意のタスクにwhenを追加します。式がtrueならタスクが実行され、falseならAnsibleはそのタスクをスキップして先に進みます。
- name: Reboot the box
ansible.builtin.reboot:
when: reboot_required波括弧は不要
whenの中には、式をそのまま記述します。文字列の場合とは異なり、whenはすでにJinja2のコンテキストなので二重波括弧は不要です。
when: ansible_distribution == "Ubuntu"真と評価される変数
単純なブール変数はそのまま使えます。install_extrasがtrueならタスクが実行され、それ以外の場合は静かにスキップされます。
- name: Add extra tools
ansible.builtin.package:
name: htop
when: install_extras比較
条件では値を比較できます。==、!=、<、>などの演算子を使って、数値や文字列に基づいてタスクの実行を制御できます。⚖️
when: app_version == "2.0"スキップと失敗の違い
スキップされたタスクは失敗ではありません。実行結果にはokやchangedの代わりにskippingと表示され、playは続行されます。
条件を否定する
notを使うと、判定結果を反転できます。このタスクは、サービスがまだインストールされていない場合にだけ実行されます。
when: not service_installed定義済みかどうか
変数が存在するかどうかを確認できます。is definedテストを使うと、未定義の変数によるエラーを防げます。
when: custom_port is definedwhenはホストごとに実行される
各ホストは個別に評価されます。同じplayの中でも、あるサーバーでは条件がtrueになり、別のサーバーではfalseになることがあります。
条件をシンプルに保つ
読みやすい条件は、信頼性の高い条件でもあります。whenが長くなった場合は、ロジックを分割するか、意図を表す変数を使ってください。
条件宣言であり命令ではない
whenによってplaybookを宣言的に保てます。条件を記述すれば、Ansibleがホストごとに判断します。ifブロックや分岐スクリプトは必要ありません。🎯
クイックチェック
whenの動作を確認しましょう。
振り返り
whenキーワードを使うと、式がtrueの場合にだけタスクが実行されます。falseの場合は失敗ではなくスキップになり、ホストごとに評価されます。✅
よくある質問
「True の場合のみタスクを実行する」レッスンは無料ですか?
はい。「True の場合のみタスクを実行する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。
「True の場合のみタスクを実行する」で何を学びますか?
ブール条件でタスクの実行を制御します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ansible Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「True の場合のみタスクを実行する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAnsible Academyレッスンでコードを書いて実行できますか?
はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- True の場合のみタスクを実行する
- OS ファミリーの Fact による分岐
- and / or による条件の組み合わせ
- 結果を登録してから判断する