---
# System prepended metadata

title: ping & gather_facts - module 4
tags: [Ansible module]

---


# ping & gather_facts - module 4

使用command line執行



``` shell script
# 確認主機網路連線狀況
ansible -i inventory/hosts all -m ping 

# 收集主機資訊存入facts資料夾
ansible -i inventory/hosts all -m gather_facts --tree ./facts
```
:::info
針對我要執行的機器跑 ping 
確保我的機器狀況連接是正常，
有時候可以透過這個動作提早發生網路跟執行問題。
:::


```yaml
  - name: ping & gather_facts
    hosts: all # inventory中的名稱
    tasks:
    - name: test ping
      ping:
```

:::info
因為 Ansible執行程式預設一開始會先去收集 host 上的環境資訊 (e.g. IP, hostnmae, OS version…)，
但管理的機器太多的時候，
發現到收集的時間過長，
可以選擇把 gather_facts: false
:::


:::info
- setup
:::

:::danger
Ansible 執行 Playbooks 時，
預設會自動執行 setup module 收集各個 Managed node 的 facts。
如同系統變數般的存在，從 IP 位址、作業系統、CPU 等資訊應有盡有。
如果不需要自動蒐集訊息, Playbooks gather_facts 參數設定為 false 即可。
:::
:+1: 

### 搭配 filter 將發行版本 (distribution) 的資訊給過濾出來
```shell=
ansible -i inventory/hosts all -m setup -a 'filter=ansible_distribution*'
```

``` json
vagrant2 | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "Ubuntu",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/os-release",
        "ansible_distribution_file_variety": "Debian",
        "ansible_distribution_major_version": "14",
        "ansible_distribution_release": "trusty",
        "ansible_distribution_version": "14.04",
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false
}

```

###### tags: `Ansible module`