2022.01.10  

ansible-playbookコマンドの引数からplaybookに値(変数)を渡す

Ansible    

ansible-playbookコマンドを実行する際に、playbookに値を渡す方法を記載します。

結論から言えば、ansible-playbook -e "変数名=値"とすればplaybookに値を渡すことができます。

-e--extra-varsと書き換えても実行可能です。

playbook内では、"{{ 変数名 }}"と記載すれば、引数で設定した値を取得できます。

実行例

この例ではAWS(EC2:CentOS7)にechoコマンドを実行し、ansible-playbook -eで指定した文字列を出力してみます。

hostsファイルはIP11.22.333.444のES2サーバーに対してcentosユーザーでログインする設定をしています。ログイン用の鍵はmykey.pemを使用します。

hosts
[group1]
11.22.333.444

[group1:vars]
ansible_user='centos'
ansible_ssh_private_key_file='~/.ssh/mykey.pem'

playbook.ymlでは、接続先サーバーの情報と実行コマンドを設定しています。
hosts: グループ名とすると、hostsファイルに定義されているグループのサーバー情報が読み込まれます。

playbook.yml
- hosts: group1

  tasks:
  - name: echo_task
    command: echo "{{ arg1 }}"
    register: command_result
  - name: result
    debug:
      msg: "{{ command_result.stdout }}"

tasks以降にはサーバーで実行するコマンドを記載します。
nameは任意のコメントを設定します。(なんでも良い)
commandにはサーバーで実行するコマンドを設定します。

echo "{{ arg1 }}"とすることで、ansible-playbook -e arg1="値"コマンド実行時に、"値"部分が"{{ arg1 }}"に設定されます。

register: command_resultはコマンドの実行結果を、command_resultに格納します。

debug: ~ msg:はコマンドの実行結果を出力するモジュールです。

この設定でansible-playbookコマンドを実行してみます。

ansible-playbook -i hosts playbook.yml -e "arg1=hoge"
PLAY [group1] ******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [11.22.333.444]

TASK [echo_task] ***************************************************************
changed: [11.22.333.444]

TASK [result] ******************************************************************
ok: [11.22.333.444] => {
    "msg": "hoge"
}

PLAY RECAP *********************************************************************
11.22.333.444              : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

"msg": "hoge"となっているため、echoコマンドでhogeが出力されていることを確認できました。

Udemy動画

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信