AnsiblePlaybookでループを使用する方法
サーバーのセットアップを自動化する場合、異なる値を使用して同じタスクの実行を繰り返す必要がある場合があります。 たとえば、複数のファイルのアクセス許可を変更したり、複数のユーザーを作成したりする必要がある場合があります。 プレイブックファイルでタスクを数回繰り返さないようにするには、代わりにループを使用することをお勧めします。
プログラミングでは、 loop を使用すると、通常、特定の条件が満たされるまで、命令を繰り返すことができます。 Ansibleはさまざまなループ方法を提供しており、loop
キーワードが長期的な互換性のための最も推奨されるオプションです。
次の例では、/tmp
の場所に3つの異なるファイルを作成します。 3つの異なる値を使用してループを実装するタスク内でfile
モジュールを使用します。
ansible-practice
ディレクトリにplaybook-06.yml
という名前の新しいファイルを作成します。
- 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
という名前のユーザーを使用していますが、それに応じてこれらの値を変更する必要があります。
- 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プレイブックを作成する際のループの使用方法の詳細については、公式ドキュメントを参照してください。