0Pricing
DevOps Bootcamp · レッスン

タスクで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_version

1 つの 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Factsとは何か、なぜ重要なのか
  2. setupモジュールでFactsを調べる
  3. タスクでansible_factsを使う
  4. 速度のためにFacts収集を無効にする
← DevOps Bootcampに戻る