inventory ファイルを使用しないで対象ホストに接続

2019/06/09

Ansible

 機能

  •  ansible-playbook コマンドの -i / --inventory オプションで inventory ファイルの代わりに対象ホストの IP アドレスを指定することができる
  • 指定する IP アドレスが 1 つのときはの最後に "," を付ける(最後に "," がないと inventory ファイルを指定したと解釈される)
  •  "," で区切って複数の対象ホストの指定が可能
  • 名前解決ができるなら IP アドレスの代わりにホスト名の指定も可能
  •  localhost の指定も可能

 例

今回の例で使用する play です。
---
- hosts: all

  tasks:
    - name: ホスト名
      debug:
        var: ansible_facts['hostname']
    - name: IP アドレス
      debug:
        var: ansible_facts['default_ipv4']['address']
    - name: メッセージ出力
      debug:
        msg: "最後"
 IP アドレスを指定した実行結果です。IP アドレスが 1 つだけなので最後に "," を付けます。-u オプションで対象ホストに接続するユーザー名( workman )を指定しています。
ansibleman@ubuntu-pc:~/ansible/eg$ ansible-playbook -i 192.168.101.21, -u workman site.yml

PLAY [all] ****************************************************************************************************************************

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

TASK [ホスト名] ***********************************************************************************************************************
****
ok: [192.168.101.21] => {
    "ansible_facts['hostname']": "node-c0706"
}

TASK [IP アドレス] ********************************************************************************************************************
****
ok: [192.168.101.21] => {
    "ansible_facts['default_ipv4']['address']": "192.168.101.21"
}

TASK [メッセージ出力] *****************************************************************************************************************
*******
ok: [192.168.101.21] => {
    "msg": "最後"
}

PLAY RECAP ****************************************************************************************************************************
192.168.101.21             : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/eg$ 
 IP アドレスを 2 つ指定した例です。今回は IP アドレスの最後に "," は不要です。
ansibleman@ubuntu-pc:~/ansible/eg$ ansible-playbook -i 192.168.101.21,192.168.101.22 -u workman site.yml

PLAY [all] ****************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************
ok: [192.168.101.21]
ok: [192.168.101.22]

TASK [ホスト名] ***********************************************************************************************************************
****
ok: [192.168.101.21] => {
    "ansible_facts['hostname']": "node-c0706"
}
ok: [192.168.101.22] => {
    "ansible_facts['hostname']": "node-u1804"
}

TASK [IP アドレス] ********************************************************************************************************************
****
ok: [192.168.101.21] => {
    "ansible_facts['default_ipv4']['address']": "192.168.101.21"
}
ok: [192.168.101.22] => {
    "ansible_facts['default_ipv4']['address']": "192.168.101.22"
}

TASK [メッセージ出力] *****************************************************************************************************************
*******
ok: [192.168.101.21] => {
    "msg": "最後"
}
ok: [192.168.101.22] => {
    "msg": "最後"
}

PLAY RECAP ****************************************************************************************************************************
192.168.101.21             : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.101.22             : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/eg$
 localhost に接続する例です。localhost に接続する場合、-c オプションでコネクションタイプの指定が必要です。
ansibleman@ubuntu-pc:~/ansible/eg$ ansible-playbook -i localhost, -c local site.yml

PLAY [all] ****************************************************************************************************************************

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

TASK [ホスト名] ***********************************************************************************************************************
****
ok: [localhost] => {
    "ansible_facts['hostname']": "ubuntu-pc"
}

TASK [IP アドレス] ********************************************************************************************************************
****
ok: [localhost] => {
    "ansible_facts['default_ipv4']['address']": "192.168.101.233"
}

TASK [メッセージ出力] *****************************************************************************************************************
*******
ok: [localhost] => {
    "msg": "最後"
}

PLAY RECAP ****************************************************************************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/eg$

カテゴリー

目次

QooQ