リストに対する loop キーワード
1つのタスクで多数のパッケージをインストールします。
「リストに対する loop キーワード」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
タスクのコピー&ペーストをやめる
3つのパッケージをインストールする必要がありますか?ほぼ同じタスクを3つ書くのは、面倒で間違いも起こりやすくなります。loopキーワードを使えば、1つのタスクをリストに対して繰り返し実行できます。🔁
loopの仕組み
タスクにloopを追加し、リストを指定します。Ansibleは各項目につき1回ずつタスクを実行し、それぞれの値をモジュールの引数に渡します。
item変数を知る
ループ中のタスクでは、現在のリストの値をitemとして利用できます。値が必要な場所では、{{ item }}で参照します。
- name: Show each fruit
ansible.builtin.debug:
msg: "{{ item }}"
loop:
- apple
- banana
- cherry複数のパッケージをインストールする
典型的な用途は、パッケージのリスト全体を1つのタスクでインストールすることです。それぞれの名前がitemを通じてpackageモジュールに渡されます。
- name: Install tools
ansible.builtin.package:
name: "{{ item }}"
state: present
loop:
- git
- curl
- vim変数のリストをループする
リストをインラインで指定する必要はありません。loopに変数を指定すれば、別の場所で定義した値に合わせて同じタスクを利用できます。
vars:
packages:
- git
- curl
tasks:
- name: Install
ansible.builtin.package:
name: "{{ item }}"
loop: "{{ packages }}"loopとwith_itemsの違い
古いplaybookではwith_itemsを使っていることがあります。現在も動作しますが、単純なリストにはloopが現代的で推奨される形式です。
1つのタスクで多くの結果
ループでは項目ごとにタスクが実行されるため、出力には各イテレーションにつき1行の結果が表示されます。どの値が変更されたのかを正確に確認できます。
ループでも冪等性を維持する
ループを使っても冪等性は失われません。パッケージがすでに存在する場合、そのイテレーションはokを報告し、新しいものだけがchangedを報告します。
多くのパッケージマネージャーは一括処理に対応
リストを直接受け取れるモジュールもあり、そのほうがさらに高速です。ただし、loopはほとんどすべてのモジュールで使える汎用的なパターンです。
数値もループする
リストに含められるのは文字列だけではありません。数値やその他のデータ型もループでき、itemにはリストが保持する値がそのまま入ります。
- name: Print ports
ansible.builtin.debug:
msg: "Port {{ item }}"
loop:
- 80
- 443
- 8080空のリストも安全
リストが空の場合、タスクは0回だけ実行されます。エラーも影響もありません。空になる可能性のある変数をループしても問題ありません。
クイックチェック
ループ中のタスクで、現在のリストの値はどのように参照しますか?
振り返り:ループを使える
繰り返しのタスクを1つのloopに置き換え、各値をitemで参照しながら、すべての処理で冪等性を維持しました。次はディクショナリのループです。🎉
よくある質問
「リストに対する loop キーワード」レッスンは無料ですか?
はい。「リストに対する loop キーワード」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「リストに対する loop キーワード」で何を学びますか?
1つのタスクで多数のパッケージをインストールします。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「リストに対する loop キーワード」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- リストに対する loop キーワード
- 辞書のループ処理
- subelements によるネストしたループ
- loop_control:label、index、pause