GNU/Linux >> Linux の 問題 >  >> Linux

RHCE Ansibleシリーズ#5:Ansibleループ

タスクを複数回繰り返したい場合があります。たとえば、複数のユーザーを作成したり、複数のサービスを開始/停止したり、管理対象ホスト上の複数のファイルの所有権を変更したりすることができます。

このチュートリアルでは、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ニュースレターを購読することもできます。

購読すでにアカウントをお持ちですか?サインイン
Linux
  1. ISPConfig3.1.11にタイプリストがありません

  2. RHCE Ansibleシリーズ#8:AnsibleVaultを使用したコンテンツの暗号化

  3. RHCE Ansibleシリーズ#7:Jinja2テンプレート

  1. RHCE Ansibleシリーズ#6:Ansibleでの意思決定

  2. RHCE Ansibleシリーズ#5:Ansibleループ

  3. RHCE Ansibleシリーズ#4:Ansible変数、ファクト、レジスタ

  1. RHCE Ansibleシリーズ#11:Ansibleを使用したシステムの管理

  2. RHCE Ansibleシリーズ#10:RHELシステムの役割

  3. RHCE Ansibleシリーズ#9:Ansibleの役割