AnsiblePlaybookで変数を使用する方法
Ansibleは、変数の使用をサポートして、タスクとプレイブックの実行をより適切にカスタマイズします。 このように、異なるターゲットと環境で同じプレイブックを使用することが可能です。
変数は、プレイブックファイル自体や、プレイブックにインポートされた外部変数ファイルなど、さまざまなソースから取得できます。 特別な優先ルールは、同じ名前の変数を定義する複数の変数ソースを操作する場合に適用されます。
変数が実際にどのように機能するかを確認するために、username
とhome_dir
の2つの変数の値を出力する新しいテストプレイブックを作成します。 ansible-practice
ディレクトリにplaybook-02.yml
という名前の新しいファイルを作成します。
nano ~/ansible-practice/playbook-02.yml
次に、新しいプレイブックファイルに次の行を追加します。
〜/ ansible-practice / playbook-02.yml
--- - hosts: all vars: - username: sammy - home: /home/sammy tasks: - name: print variables debug: msg: "Username: {{ username }}, Home dir: {{ home }}"
編集が完了したら、ファイルを保存して閉じます。
プレイブックのvars
セクションは、そのプレイのスコープに挿入される変数のリストを定義します。 すべてのタスク、およびプレイブックに含まれている可能性のあるファイルまたはテンプレートは、これらの変数にアクセスできます。
インベントリファイルからサーバーでこのプレイブックを試すには、最初の例を実行したときに以前に使用したのと同じ接続引数を使用してansible-playbook
を実行します。 ここでも、inventory
という名前のインベントリファイルとsammyユーザーを使用してリモートサーバーに接続します。
ansible-playbook -i inventory playbook-02.yml -u sammy
次のような出力が表示されます。
Output PLAY [all] *********************************************************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************************************************** ok: [203.0.113.10] TASK [print variables] *********************************************************************************************************************************************************************** ok: [203.0.113.10] => { "msg": "Username: sammy, Home dir: /home/sammy" } PLAY RECAP *********************************************************************************************************************************************************************************** 203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
print variables
タスクは、debug
モジュールを使用して、プレイブックのvars
セクションで定義した2つの変数の値を出力します。