Ansible Documentation
ping – Try to connect to host, verify a usable python and return pong on success機能
- 管理サーバーから対象ホストへ ping を実行する
- 対象ホストが Ansible で操作が可能なときだけ ping が成功する
- TCP/IP - ICMP の ping とは名前が同じなだけで関係ない(TCP/IP - ICMP の ping の実行が成功しても、ping モジュールの実行が成功するとは限らない)
確認できること
ping モジュールを使用すると、- Ansible で対象ホストの管理が可能か
- inventory ファイル( host_vars / group_vars を含む)が正しいか
[ansibleman@ansiblesv ansible]$ ansible all -i hosts.yml -m ping
node-d0908 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.101.24 port 22: Connection refused",
"unreachable": true
}
node-u1810 | FAILED! => {
"changed": false,
"module_stderr": "Shared connection to 192.168.101.23 closed.\r\n",
"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 127
}
node-c0706 | SUCCESS => {
"changed": false,
"ping": "pong"
}
node-c0610 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.101.22 port 22: Connection timed out",
"unreachable": true
}
[ansibleman@ansiblesv ansible]$
node-d0908 は "Failed to connect to the host via ssh: ssh: connect to host 192.168.101.24 port 22: Connection refused" とあるので、 ssh(port 22) での接続が拒否されて接続が失敗したことがわかります。 このことから node-d0908 で ssh サーバーの機能が動作していないと推測できます。node-u1810 は "/usr/bin/python: not found" とあるので、 node-u1810 に python がインストールされていないと推測できます。
node-c0610 は "Failed to connect to the host via ssh: ssh: connect to host 192.168.101.22 port 22: Connection timed out" とあり、ssh(port 22) で接続しようとしたが時間切れで失敗したことがわかります。このことから node-c0610 が power off になっている、または、ネットワークに接続していないと推測できます。
node-c0706 は ping モジュールが正常に実行できたので、Ansible で管理できることがわかります。
パラメータ
パラメータ | 選択肢/ Default | 説明 |
---|---|---|
data | Default: pong | ping の戻り値 このパラメータに crash を設定すると例外が発生する |
例
data パラメータに crash を設定した場合です--- - hosts: node-c0706 gather_facts: no tasks: - name: 対象ホスト名へ ping ping: data: crash実行結果です。本来は正常に実行できるところが、例外(エラー)が発生しています。
[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml site.yml
PLAY [node-c0706] ****************************************************************************
TASK [対象ホスト名の表示] *****************************************************************************
fatal: [node-c0706]: FAILED! => {"changed": false, "module_stderr": "Shared connection to 192.168.101.21 closed.\r\n", "module_stdout": "Traceback (most recent call last):\r\n File \"/root/.ansible/tmp/ansible-tmp-1552888993.05-262432507252264/AnsiballZ_ping.py\", line 113, in \r\n _ansiballz_main()\r\n File \"/root/.ansible/tmp/ansible-tmp-1552888993.05-262432507252264/AnsiballZ_ping.py\", line 105, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File \"/root/.ansible/tmp/ansible-tmp-1552888993.05-262432507252264/AnsiballZ_ping.py\", line 48, in invoke_module\r\n imp.load_module('__main__', mod, module, MOD_DESC)\r\n File \"/tmp/ansible_ping_payload_cnOEak/__main__.py\", line 84, in \r\n File \"/tmp/ansible_ping_payload_cnOEak/__main__.py\", line 74, in main\r\nException: boom\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
to retry, use: --limit @/home/ansibleman/ansible/site.retry
PLAY RECAP ***********************************************************************************
node-c0706 : ok=0 changed=0 unreachable=0 failed=1
[ansibleman@ansiblesv ansible]$