「【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" で秘密鍵を指定します。