0Pricing
Ansible Academy · レッスン

辞書のループ処理

キーと値のデータからユーザーを作成します。

「辞書のループ処理」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。

リストだけでは不十分

ユーザーの作成には名前だけでなく、group、shell、stateも必要です。単純なリストではこれらを保持できません。必要なのはディクショナリのリストです。🗂️

ディクショナリのリスト

リストの各要素は、キーと値のペアを持つ小さなディクショナリになります。これにより、1回のループで名前付きの複数のフィールドを扱えます。

loop:
  - { name: alice, group: admin }
  - { name: bob, group: dev }

item.keyでキーにアクセスする

itemがディクショナリの場合は、各フィールドをitem.fieldnameで読み取ります。たとえばitem.nameやitem.groupで、現在のエントリから値を取得できます。

- name: Add users
  ansible.builtin.user:
    name: "{{ item.name }}"
    group: "{{ item.group }}"
  loop:
    - { name: alice, group: admin }
    - { name: bob, group: dev }

読みやすい複数行形式

インラインの波括弧では窮屈になりがちです。キーが多いエントリでは、読みやすさのために各ディクショナリを複数行に分けて記述します。

loop:
  - name: alice
    group: admin
    shell: /bin/bash
  - name: bob
    group: dev
    shell: /bin/zsh

varsからリストを取得する

ディクショナリのリストを変数として定義し、それをループします。データを1か所にまとめられるため、タスクを短く再利用可能に保てます。

vars:
  users:
    - { name: alice, group: admin }
tasks:
  - ansible.builtin.user:
      name: "{{ item.name }}"
    loop: "{{ users }}"

実際のディクショナリをループする

キーと値のペアを持つ実際のdictを反復処理するには、dict2itemsフィルターを通します。各ペアがループ可能なitemになります。

loop: "{{ ports | dict2items }}"

item.keyとitem.value

dict2itemsの後は、各itemからitem.keyとitem.valueを取得できます。これは元のマッピングの名前と、そのデータを表します。

- ansible.builtin.debug:
    msg: "{{ item.key }} = {{ item.value }}"
  loop: "{{ settings | dict2items }}"

任意のキーが混在する場合

すべてのエントリにすべてのキーが必要とは限りません。ループとdefaultフィルターを組み合わせれば、存在しないフィールドに妥当なデフォルト値を適用できます。

shell: "{{ item.shell | default('/bin/sh') }}"

ディクショナリでデータを整理する

関連するフィールドを各itemにまとめると、データとロジックを分離できます。ユーザーを編集するときも、タスク自体ではなくデータだけを編集すれば済みます。

これでも完全に冪等

各ディクショナリのイテレーションは独立したモジュール呼び出しなので、ユーザーごとにchangedまたはokが報告されます。単純なリストの場合と同じです。

大量の設定に最適

ユーザー、仮想ホスト、ファイアウォールルールなど、1つのエントリに複数の属性があるものは、ディクショナリのリストにぴったり適しています。

クイックチェック

ディクショナリのリストをループしています。フィールドはどのように読み取りますか?

振り返り:ディクショナリのループ

ディクショナリのリストをループし、item.nameフィールドを読み取り、実際のマップにはdict2itemsを使いました。次はネストしたループです。🎉

よくある質問

「辞書のループ処理」レッスンは無料ですか?

はい。「辞書のループ処理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。

「辞書のループ処理」で何を学びますか?

キーと値のデータからユーザーを作成します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ansible Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「辞書のループ処理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAnsible Academyレッスンでコードを書いて実行できますか?

はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. リストに対する loop キーワード
  2. 辞書のループ処理
  3. subelements によるネストしたループ
  4. loop_control:label、index、pause
← Ansible Academyに戻る