タスクでansible_factsを使う
OS、メモリ、IPのFactsに応じて分岐します
「タスクでansible_factsを使う」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
データから判断へ
収集した facts は、それに基づいて処理して初めて役立ちます。ここでは ansible_facts から値を直接タスクに取り込みます。🌟
fact を参照する
通常の変数と同じ {{ }} 構文を使用します。波かっこの中に、ホストの distribution など、使用したい fact の名前を指定します。
- debug:
msg: "OS is {{ ansible_distribution }}"辞書からもアクセスできる
ブラケット記法で ansible_facts 辞書から facts を読み取ることもできます。どちらの書き方でも同じデータを参照できます。
{{ ansible_facts['distribution'] }}OS で分岐する
fact と when を組み合わせると、一致するホストでのみタスクを実行できます。たとえば、Debian 系システムだけにパッケージをインストールできます。
when: ansible_os_family == "Debian"適切なパッケージを選ぶ
facts を使えば、1 つのタスクで多くのディストリビューションに対応できます。playbook を 2 つ書く代わりに、OS ファミリーに応じて apache2 または httpd を選択できます。
name: "{{ 'apache2' if ansible_os_family == 'Debian' else 'httpd' }}"数値の facts を使う
ansible_memtotal_mb のような facts は数値なので、比較して、スペックが低すぎるホストでの処理をスキップできます。
when: ansible_memtotal_mb > 2048ネストされた値にアクセスする
ネストされた facts では、ドットでキーをつなぎます。デフォルトの IPv4 アドレスは、ansible_default_ipv4 の下にある address に格納されています。
{{ ansible_default_ipv4.address }}テンプレート内の facts
同じ fact 名を Jinja2 テンプレート内でも使用できます。ホストの hostname や IP を、生成する設定ファイルに直接埋め込めます。
server_name {{ ansible_hostname }};リスト型の facts をループする
ansible_interfaces のように、リストになっている facts もあります。これらをループして、ホストが持つすべてのネットワークインターフェイスに処理を行えます。
loop: "{{ ansible_interfaces }}"信頼する前に確認する
fact の正確な値が分からない場合は、まず debug で表示してから、その値に依存するロジックを作成してください。
- debug:
var: ansible_distribution_version1 つの playbook で多くのホストに対応する
facts はホストごとに異なるため、facts に基づくタスクを使えば、さまざまなマシンが混在する環境でも 1 つの playbook を正しく動作させられます。
簡単な確認
Debian 系のホストでのみタスクを実行するには、どうすればよいですか。
まとめ
{{ }} で facts を読み取り、when で分岐し、ネストされた値にアクセスし、リスト型の facts をループして、タスクを適応型にする方法を学びました。✨
よくある質問
「タスクでansible_factsを使う」レッスンは無料ですか?
はい。「タスクでansible_factsを使う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「タスクでansible_factsを使う」で何を学びますか?
OS、メモリ、IPのFactsに応じて分岐します ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「タスクでansible_factsを使う」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Factsとは何か、なぜ重要なのか
- setupモジュールでFactsを調べる
- タスクでansible_factsを使う
- 速度のためにFacts収集を無効にする