管理対象システムには常に多くの違いがあります。このため、Ansible変数の操作方法を学ぶ必要があります。
このチュートリアルでは、変数Ansibleを定義および参照する方法を学習します。また、Ansibleファクトを使用して管理対象ノードの情報を取得する方法についても学習します。
さらに、レジスタを使用してタスク出力をキャプチャする方法も学習します。
ここが初めての場合は、このシリーズの前の章をご覧ください:
- Ansible RHCE#1:導入とインストール
- Ansible RHCE#1:アドホックコマンドの実行
- Ansible RHCE#1:プレイブックを理解する
パート1:Ansibleでの変数の操作
まず変数から始めましょう。これはすべてYMLファイルに書き込まれることに注意してください。
varsを使用できます プレイブック内で直接変数を定義するキーワード。
たとえば、 fav_colorを定義できます 変数を変更し、その値を次のように黄色に設定します。
---
- name: Working with variables
hosts: all
vars:
fav_color: yellow
では、 fav_color をどのように使用(参照)しますか? 変数? Ansibleは、Jinja2テンプレートシステムを使用して変数を処理します。このシリーズではJinja2について説明する専用のチュートリアルがありますが、今のところは非常に基本的なことを知っている必要があります。
fav_colorの値を取得するには 変数;次のように、中かっこで囲む必要があります。
My favorite color is {{ fav_color }}
変数が行の最初の要素(または唯一の要素)である場合は、次のように引用符を使用する必要があることに注意してください。
"{{ fav_color }} is my favorite color."
それでは、 variables-playbook.ymlという名前のプレイブックを作成しましょう。 これをすべてまとめます:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
fav_color: yellow
tasks:
- name: Show me fav_color value
debug:
msg: My favorite color is {{ fav_color }}.
デバッグを使用しました モジュールとmsg fav_colorの値を出力するモジュールオプション 変数。
プレイブックを実行すると、次のようにお気に入りの色が表示されます。
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Show me fav_color value] *************************************************
ok: [node1] => {
"msg": "My favorite color is yellow."
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
リストとディクショナリを使用して、複数値の変数を定義することもできます。たとえば、 port_numsという名前のリストを定義できます。 値を次のように設定します:
vars:
port_nums: [21,22,23,25,80,443]
次の方法を使用してport_numsを定義することもできます。 これは同等です:
vars:
port_nums:
- 21
- 22
- 23
- 25
- 80
- 443
port_numsのすべての値を出力できます 次のように:
All the ports {{ port_nums }}
特定のリスト要素にアクセスすることもできます:
First port is {{ port_nums[0] }}
リスト要素にアクセスするためにインデックス(位置)を使用していることに注意してください。
usersという名前の辞書を定義することもできます 次のように:
vars:
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
辞書要素にアクセスするために使用できる2つの異なる方法があります:
- dict_name ['key']-> users ['bob'] ['shell']
- dict_name.key-> users.bob.shell
キーを使用して辞書要素にアクセスしていることに注意してください。
これで、変数-playbook.ymlを編集できます 動作中のリストと辞書を表示するためのプレイブック:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
tasks:
- name: Show 2nd item in port_nums
debug:
msg: SSH port is {{ port_nums[1] }}
- name: Show the uid of bob
debug:
msg: UID of bob is {{ users.bob.uid }}
これで、プレイブックを実行して、 port_numsの2番目の要素を表示できます。 ボブのuidを表示します:
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Show 2nd item in port_nums] **********************************************
ok: [node1] => {
"msg": "SSH port is 22"
}
TASK [Show the uid of bob] *****************************************************
ok: [node1] => {
"msg": "UID of bob is 1122"
}
プレイブックにタスクをインポート(または含める)できるのと同じように。変数でも同じことができます。つまり、プレイブックでは、外部ファイルで定義された変数を含めることができます。
実例を示すために、 myvars.ymlという名前のファイルを作成しましょう。 port_numsが含まれています リストとユーザー 辞書:
[[email protected] plays]$ cat myvars.yml
---
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
全文を読む
記事の残りの部分は、LHBメンバーのみが利用できます。今すぐ無料でサインアップして、この記事の残りの部分と、すべてのメンバー限定の投稿にアクセスできます。また、隔週で開催されるLinuxニュースレターを購読することもできます。
購読すでにアカウントをお持ちですか?サインイン