2016年2月13日土曜日

[CentOS6][Ansible] Inventoryファイルを作らずにPlaybookを実行する


【Ansible】Inventoryファイルを利用せずにansibleコマンドを実行する」 という記事を参考にして、ansible-playbook コマンドでも同じことができるか試してみました。

インベントリファイルを作らずに ansible-palybook コマンドのコマンドラインでIPアドレスを指定して プレイブックを実行します。

テスト用のプレイブックは以下のようにしました。
hosts は all にします。

---
- hosts: all
  vars:
    myip_eth0: '{{ hostvars[inventory_hostname]["ansible_eth0"]["ipv4"]["address"] }}'
    myip_eth1: '{{ hostvars[inventory_hostname]["ansible_eth1"]["ipv4"]["address"] }}'

  tasks:
    - name: IPアドレス(eth0)
      debug: var=myip_eth0
    - name: IPアドレス(eth1)
      debug: var=myip_eth1

以下のようにして -i でIPアドレスを指定して プレイブック を実行します。
IPアドレスの最後にカンマをつけることで、ファイルではなくIPアドレスとして認識されるようです。
-u で ssh ユーザを指定し、 -k でsshユーザのパスワードを入力するようにします。

[user01@node01 ansible]$ export ANSIBLE_HOST_KEY_CHECKING=False
[user01@node01 ansible]$ ansible-playbook -i 192.168.56.11, -u user01 -k site.yml
SSH password:

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [192.168.56.11]

TASK [IPアドレス(eth0)] ************************************************************
ok: [192.168.56.11] => {
    "myip_eth0": "10.0.2.15"
}

TASK [IPアドレス(eth1)] ************************************************************
ok: [192.168.56.11] => {
    "myip_eth1": "192.168.56.11"
}

PLAY RECAP *********************************************************************
192.168.56.11              : ok=3    changed=0    unreachable=0    failed=0



環境変数のANSIBLE_HOST_KEY_CHECKINGにFalseを設定すると ssh の HostKeyChecking を無効にできます。

パスワードを入力したくない場合は、/etc/ansible/ansible.cfg でSSHの秘密鍵(private_key)を指定するか、ansible-playbookコマンドの "--private-key" で秘密鍵を指定します。