サーバーのセットアップを自動化する場合、異なる値を使用して同じタスクの実行を繰り返す必要がある場合があります。 たとえば、複数のファイルのアクセス許可を変更したり、複数のユーザーを作成したりする必要がある場合があります。 プレイブックファイルでタスクを数回繰り返さないようにするには、代わりにループを使用することをお勧めします。

プログラミングでは、 loop を使用すると、通常、特定の条件が満たされるまで、命令を繰り返すことができます。 Ansibleはさまざまなループ方法を提供しており、loopキーワードが長期的な互換性のための最も推奨されるオプションです。

次の例では、/tmpの場所に3つの異なるファイルを作成します。 3つの異なる値を使用してループを実装するタスク内でfileモジュールを使用します。

ansible-practiceディレクトリにplaybook-06.ymlという名前の新しいファイルを作成します。

  1. nano ~/ansible-practice/playbook-06.yml

次に、次の行を新しいプレイブックファイルに追加します。

〜/ ansible-practice / playbook-06.yml
---
- hosts: all
  tasks:
    - name: creates users files
      file:
        path: /tmp/ansible-{{ item }}
        state: touch
      loop:
        - sammy
        - erika
        - brian

完了したら、ファイルを保存して閉じます。

次に、前の例と同じ接続引数を使用してansible-playbookを実行します。 ここでも、inventoryという名前のインベントリファイルとsammyという名前のユーザーを使用していますが、それに応じてこれらの値を変更する必要があります。

  1. ansible-playbook -i inventory playbook-06.yml -u sammy

次のような出力が得られ、ループ内で使用された個々のアイテムの値が表示されます。

Output
... TASK [creates users files] ****************************************************************************** changed: [203.0.113.10] => (item=sammy) changed: [203.0.113.10] => (item=erika) changed: [203.0.113.10] => (item=brian) ...

Ansibleプレイブックを作成する際のループの使用方法の詳細については、公式ドキュメントを参照してください。