ping モジュール

2019/03/18

Ansible

 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
説明
dataDefault:
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]$

カテゴリー

目次

QooQ