タスクを複数回繰り返したい場合があります。たとえば、複数のユーザーを作成したり、複数のサービスを開始/停止したり、管理対象ホスト上の複数のファイルの所有権を変更したりすることができます。
このチュートリアルでは、Ansibleループを使用して、タスク全体を何度も書き直すことなく、タスクを複数回繰り返す方法を学習します。
Ansibleのループを見る前に、このAnsibleチュートリアルシリーズの他の章を読んだことを願っています。 Ansibleプレイブックの概念を理解し、アドホックコマンドを認識し、リストや辞書などのAnsibleに関連する基本的な用語を知っている必要があります。
YAMLの基本を知っていることも高く評価されています。
Ansibleはキーワードloopを使用します リストの要素を反復処理します。実例を示すために、 print-list.ymlという名前の非常に単純なプレイブックを作成しましょう。 リスト内の要素を印刷する方法を示しています:
[[email protected] plays]$ cat print-list.yml
---
- name: print list
hosts: node1
vars:
prime: [2,3,5,7,11]
tasks:
- name: Show first five prime numbers
debug:
msg: "{{ item }}"
loop: "{{ prime }}"
アイテムを使用していることに注意してください Ansibleループを持つ変数。タスクは5回実行されます。これは、プライムの要素の数に相当します。 リスト。
最初の実行では、アイテム 変数は、素数配列(2)の最初の要素に設定されます。 2回目の実行では、item変数は素数配列(3)の2番目の要素に設定されます。
プレイブックを実行して、プライムのすべての要素を確認してください。 表示されるリスト:
[[email protected] plays]$ ansible-playbook print-list.yml
PLAY [print list] **************************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Show first five prime numbers] *******************************************
ok: [node1] => (item=2) => {
"msg": 2
}
ok: [node1] => (item=3) => {
"msg": 3
}
ok: [node1] => (item=5) => {
"msg": 5
}
ok: [node1] => (item=7) => {
"msg": 7
}
ok: [node1] => (item=11) => {
"msg": 11
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=0 unreachable=0 failed=0
次に、実際のアプリケーションにループを適用します。たとえば、 add-users.ymlを作成できます dbservers内のすべてのホストに複数のユーザーを追加するプレイブック グループ:
[[email protected] plays]$ cat add-users.yml
---
- name: Add multiple users
hosts: dbservers
vars:
dbusers:
- username: brad
pass: pass1
- username: david
pass: pass2
- username: jason
pass: pass3
tasks:
- name: Add users
user:
name: "{{ item.username }}"
password: "{{ item.pass | password_hash('sha512') }}"
loop: "{{ dbusers }}"
私は最初にdbusersを作成しました 基本的にハッシュ/辞書のリストであるリスト。次に、ユーザーを使用しました モジュールとループ dbusers でユーザーを追加し、すべてのユーザーのパスワードを設定します リスト。
ドット付き表記item.usernameも使用していることに注意してください およびitem.pass dbusersのハッシュ/ディクショナリ内のキー値にアクセスするには リスト。
password_hash('sha512')を使用したことも注目に値します。 sha512を使用してユーザーパスワードを暗号化するためのフィルター ユーザーとしてのハッシュアルゴリズム モジュールでは、暗号化されていないユーザーパスワードを設定できません。
RHCE試験のヒント:試験のdocs.ansible.comページにアクセスできます。これは、特に「よくある質問」セクションの下にある非常に貴重なリソースです。回答と説明が記載されたハウツーの質問が多数あります。それでは、 add-users.ymlを実行してみましょう。 プレイブック:
全文を読む
記事の残りの部分は、LHBメンバーのみが利用できます。今すぐ無料でサインアップして、この記事の残りの部分と、すべてのメンバー限定の投稿にアクセスできます。また、隔週で開催されるLinuxニュースレターを購読することもできます。
購読すでにアカウントをお持ちですか?サインイン