关于ansible的setup,具体说明在http: //docs.ansible.com/ansible/setup_module.html

其实类似saltstack的grains静态信息收集,收集一些主机硬件信息或者以及其他如fqdn等等


db是我在hosts中定义的组名也可以是主机ip

[root@ansible ~]# ansible db -m setup
db | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "192.168.33.137", 
            "172.17.42.1"
        ], 
        "ansible_all_ipv6_addresses": [
            "fe80::20c:29ff:fe14:cc24", 
            "fe80::3c17:8bff:fe88:6e2b"
        ], 
        "ansible_architecture": "x86_64", 
        "ansible_bios_date": "05/20/2014", 
        "ansible_bios_version": "6.00", 
        "ansible_cmdline": {
            "KEYBOARDTYPE": "pc", 
            "KEYTABLE": "us", 
            "LANG": "en_US.UTF-8", 
            "SYSFONT": "latarcyrheb-sun16", 
            "quiet": true, 
            "rd_LVM_LV": "VolGroup/lv_root", 
            "rd_NO_DM": true, 
            "rd_NO_LUKS": true, 
            "rd_NO_MD": true, 
            "rhgb": true, 
            "ro": true, 
            "root": "/dev/mapper/VolGroup-lv_root"
        }, 
        "ansible_date_time": {
            "date": "2016-05-02", 
            "day": "02", 
            "epoch": "1462151488", 
            "hour": "09", 
            "iso8601": "2016-05-02T01:11:28Z", 
            "iso8601_basic": "20160502T091128125057", 
            "iso8601_basic_short": "20160502T091128", 
            "iso8601_micro": "2016-05-02T01:11:28.125158Z", 
            "minute": "11", 
            "month": "05", 
            "second": "28", 
            "time": "09:11:28", 
            "tz": "CST", 
            "tz_offset": "+0800", 
            "weekday": "Monday", 
            "weekday_number": "1", 
            "weeknumber": "18", 
            "year": "2016"
        }, 
        "ansible_default_ipv4": {
            "address": "192.168.33.137", 
            "alias": "eth0", 
            "broadcast": "192.168.33.255", 
            "gateway": "192.168.33.2", 
            "interface": "eth0", 
            "macaddress": "00:0c:29:14:cc:24", 
            "mtu": 1500, 
            "netmask": "255.255.255.0", 
            "network": "192.168.33.0", 
            "type": "ether"
        }, 
        "ansible_default_ipv6": {}, 
        "ansible_devices": {
            "sda": {
                "holders": [], 
                "host": "SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)", 
                "model": "VMware Virtual S", 
                "partitions": {
                    "sda1": {
                        "sectors": "1024000", 
                        "sectorsize": 512, 
                        "size": "500.00 MB", 
                        "start": "2048"
                    }, 
                    "sda2": {
                        "sectors": "103831552", 
                        "sectorsize": 512, 
                        "size": "49.51 GB", 
                        "start": "1026048"
                    }
                }, 
                "removable": "0", 
                "rotational": "1", 
                "scheduler_mode": "cfq", 
                "sectors": "104857600", 
                "sectorsize": "512", 
                "size": "50.00 GB", 
                "support_discard": "0", 
                "vendor": "VMware,"
            }, 
            "sr0": {
                "holders": [], 
                "host": "IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)", 
                "model": "VMware IDE CDR10", 
                "partitions": {}, 
                "removable": "1", 
                "rotational": "1", 
                "scheduler_mode": "cfq", 
                "sectors": "2097151", 
                "sectorsize": "512", 
                "size": "1024.00 MB", 
                "support_discard": "0", 
                "vendor": "NECVMWar"
            }
        }, 
        "ansible_distribution": "CentOS", 
        "ansible_distribution_major_version": "6", 
        "ansible_distribution_release": "Final", 
        "ansible_distribution_version": "6.6", 
        "ansible_dns": {
            "nameservers": [
                "192.168.33.2"
            ], 
            "search": [
                "localdomain"
            ]
        }, 
        "ansible_docker0": {
            "active": true, 
            "device": "docker0", 
            "id": "8000.000000000000", 
            "interfaces": [], 
            "ipv4": {
                "address": "172.17.42.1", 
                "broadcast": "global", 
                "netmask": "255.255.0.0", 
                "network": "172.17.0.0"
            }, 
            "ipv6": [
                {
                    "address": "fe80::3c17:8bff:fe88:6e2b", 
                    "prefix": "64", 
                    "scope": "link"
                }
            ], 
            "macaddress": "3e:17:8b:88:6e:2b", 
            "mtu": 1500, 
            "promisc": false, 
            "stp": false, 
            "type": "bridge"
        }, 
        "ansible_domain": "", 
        "ansible_env": {
            "G_BROKEN_FILENAMES": "1", 
            "HOME": "/root", 
            "LANG": "en_US.UTF-8", 
            "LC_ALL": "en_US.UTF-8", 
            "LC_MESSAGES": "en_US.UTF-8", 
            "LESSOPEN": "||/usr/bin/lesspipe.sh %s", 
            "LOGNAME": "root", 
            "MAIL": "/var/mail/root", 
            "PATH": "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin", 
            "PWD": "/root", 
            "SELINUX_LEVEL_REQUESTED": "", 
            "SELINUX_ROLE_REQUESTED": "", 
            "SELINUX_USE_CURRENT_RANGE": "", 
            "SHELL": "/bin/bash", 
            "SHLVL": "2", 
            "SSH_CLIENT": "192.168.33.131 38108 22", 
            "SSH_CONNECTION": "192.168.33.131 38108 192.168.33.137 22", 
            "SSH_TTY": "/dev/pts/0", 
            "TERM": "xterm", 
            "USER": "root", 
            "_": "/usr/bin/python"
        }, 
        "ansible_eth0": {
            "active": true, 
            "device": "eth0", 
            "ipv4": {
                "address": "192.168.33.137", 
                "broadcast": "192.168.33.255", 
                "netmask": "255.255.255.0", 
                "network": "192.168.33.0"
            }, 
            "ipv6": [
                {
                    "address": "fe80::20c:29ff:fe14:cc24", 
                    "prefix": "64", 
                    "scope": "link"
                }
            ], 
            "macaddress": "00:0c:29:14:cc:24", 
            "module": "e1000", 
            "mtu": 1500, 
            "pciid": "0000:02:01.0", 
            "promisc": false, 
            "type": "ether"
        }, 
        "ansible_fips": false, 
        "ansible_form_factor": "Other", 
        "ansible_fqdn": "db", 
        "ansible_hostname": "db", 
        "ansible_interfaces": [
            "lo", 
            "docker0", 
            "eth0"
        ], 
        "ansible_kernel": "2.6.32-504.23.4.el6.x86_64", 
        "ansible_lo": {
            "active": true, 
            "device": "lo", 
            "ipv4": {
                "address": "127.0.0.1", 
                "broadcast": "host", 
                "netmask": "255.0.0.0", 
                "network": "127.0.0.0"
            }, 
            "ipv6": [
                {
                    "address": "::1", 
                    "prefix": "128", 
                    "scope": "host"
                }
            ], 
            "mtu": 65536, 
            "promisc": false, 
            "type": "loopback"
        }, 
        "ansible_lvm": {
            "lvs": {
                "lv_root": {
                    "size_g": "48.54", 
                    "vg": "VolGroup"
                }, 
                "lv_swap": {
                    "size_g": "0.97", 
                    "vg": "VolGroup"
                }
            }, 
            "vgs": {
                "VolGroup": {
                    "free_g": "0", 
                    "num_lvs": "2", 
                    "num_pvs": "1", 
                    "size_g": "49.51"
                }
            }
        }, 
        "ansible_machine": "x86_64", 
        "ansible_memfree_mb": 105, 
        "ansible_memory_mb": {
            "nocache": {
                "free": 217, 
                "used": 265
            }, 
            "real": {
                "free": 105, 
                "total": 482, 
                "used": 377
            }, 
            "swap": {
                "cached": 0, 
                "free": 991, 
                "total": 991, 
                "used": 0
            }
        }, 
        "ansible_memtotal_mb": 482, 
        "ansible_mounts": [
            {
                "device": "/dev/mapper/VolGroup-lv_root", 
                "fstype": "ext4", 
                "mount": "/", 
                "options": "rw", 
                "size_available": 44720926720, 
                "size_total": 51164958720, 
                "uuid": "ac02f356-e4ce-448b-914d-4ba34575f6a2"
            }, 
            {
                "device": "/dev/sda1", 
                "fstype": "ext4", 
                "mount": "/boot", 
                "options": "rw", 
                "size_available": 421961728, 
                "size_total": 499355648, 
                "uuid": "06425d02-4d1f-49a1-afdb-8ef1dafd3334"
            }
        ], 
        "ansible_nodename": "db", 
        "ansible_os_family": "RedHat", 
        "ansible_pkg_mgr": "yum", 
        "ansible_processor": [
            "GenuineIntel", 
            "Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz"
        ], 
        "ansible_processor_cores": 1, 
        "ansible_processor_count": 1, 
        "ansible_processor_threads_per_core": 1, 
        "ansible_processor_vcpus": 1, 
        "ansible_product_name": "VMware Virtual Platform", 
        "ansible_product_serial": "VMware-56 4d a2 b5 7d 5d 89 ea-96 fa 0b 4a 97 14 cc 24", 
        "ansible_product_uuid": "564DA2B5-7D5D-89EA-96FA-0B4A9714CC24", 
        "ansible_product_version": "None", 
        "ansible_python_version": "2.6.6", 
        "ansible_selinux": {
            "config_mode": "enforcing", 
            "mode": "enforcing", 
            "policyvers": 24, 
            "status": "enabled", 
            "type": "targeted"
        }, 
        "ansible_service_mgr": "upstart", 
        "ansible_ssh_host_key_dsa_public": "AAAAB3NzaC1kc3MAAACBANNbS+lp2pmFe5jHrIqbAxO0pPeuprVJVIKwnuNFzSavaoGBtK0PdtDhvuky4BJq9v2RnztCIaTohY2QqZE3hhknUAGywuAdpPGMnsWGazY6Ne70ZsobVegATk88G7e2A/pQsFLskJEjzieUtS4orAvCnAwssNJcbaCTw5EnfNfNAAAAFQCUWV2C4o0oTzBO9HfibENN7E9FCQAAAIEAhC/CKIvfxMLIbWG0nqpSmBP/aBzG+2nFKV326vDhReLJEC0cLKRggrtJdOlKClCnfVU8vmXjbjzuEDr/MF//8DbA/4kRNpjua+dZjnkrr4hbSzdQsCa1B2nzK1hioqh2Dn8rhsrZSrAwjYFcLa81p3s3+Ja02jCWt/rgBvDOLNQAAACAZ/LC5sF7jgZSLDMfrRJbEB4KgcadhpKSoISymE2+lHr9pO4lZfVG6djscA7WsF+cB5Td2or4XPeU/1IOWczaTieiFHGJ7ywioafGNbYXtrSf7z2KGbEwizGGMS4036RvA5Y3cbIT2166JAxeThaF+wb66r+AZKvRqk7kYGyoUdI=", 
        "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAABIwAAAQEAuIPddB4RPpv6RoeFlxMQV8l0aZPUy/S3z8JgmVgTZAGZCtULe6YFPnqUN1FvcPrIrHDDaRZ8AthzH8fpELGU9DDQpUpvHRXlV7Q29feQ1+N5v4fGE0nCwiS+T2exnBgyIh84FTDhpL/wdielu4+PtF3ED/IPGrxEepjm/ethqzV00g9e8IpdxKaFmhGFJB2HjPjBzywz/UwUzZ1XPNNRGWO/niVxivmIQPzul0OAIddTiXLW+5ay3D5ajrsFXfbpkUUBuwxzTdlNYmOR/YUonK76LUvIoUF4WZish4XcBEpHXn2lCI6zDyj8nGVX5yUDIlRdgTcMB0EWtv2cwLVkZw==", 
        "ansible_swapfree_mb": 991, 
        "ansible_swaptotal_mb": 991, 
        "ansible_system": "Linux", 
        "ansible_system_vendor": "VMware, Inc.", 
        "ansible_uptime_seconds": 15909, 
        "ansible_user_dir": "/root", 
        "ansible_user_gecos": "root", 
        "ansible_user_gid": 0, 
        "ansible_user_id": "root", 
        "ansible_user_shell": "/bin/bash", 
        "ansible_user_uid": 0, 
        "ansible_userspace_architecture": "x86_64", 
        "ansible_userspace_bits": "64", 
        "ansible_virtualization_role": "guest", 
        "ansible_virtualization_type": "VMware", 
        "module_setup": true
    }, 
    "changed": false
}


setup的用法

[root@ansible ~]# ansible-doc -s setup
less 436
Copyright (C) 1984-2009 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
- name: Gathers facts about remote hosts
  action: setup
      fact_path              # path used for local ansible facts (*.fact) - files in this dir will be run (if executable) and
                               their results be added to ansible_local facts if a file is not
                               executable it is read. File/results format can be json or ini-
                               format
      filter                 # if supplied, only return facts that match this shell-style (fnmatch) wildcard.


使用setup获取ip地址以及主机名使用filter过滤等等


ip地址

[root@ansible ~]# ansible db -m setup -a 'filter=ansible_default_ipv4'
db | SUCCESS => {
    "ansible_facts": {
        "ansible_default_ipv4": {
            "address": "192.168.33.137", 
            "alias": "eth0", 
            "broadcast": "192.168.33.255", 
            "gateway": "192.168.33.2", 
            "interface": "eth0", 
            "macaddress": "00:0c:29:14:cc:24", 
            "mtu": 1500, 
            "netmask": "255.255.255.0", 
            "network": "192.168.33.0", 
            "type": "ether"
        }
    }, 
    "changed": false
}

获取内存信息。

[root@ansible ~]# ansible db -m setup -a 'filter=ansible_memory_mb'
db | SUCCESS => {
    "ansible_facts": {
        "ansible_memory_mb": {
            "nocache": {
                "free": 217, 
                "used": 265
            }, 
            "real": {
                "free": 101, 
                "total": 482, 
                "used": 381
            }, 
            "swap": {
                "cached": 0, 
                "free": 991, 
                "total": 991, 
                "used": 0
            }
        }
    }, 
    "changed": false
}

获取主机名。。

[root@ansible ~]# ansible db -m setup -a 'filter=ansible_nodename'

db | SUCCESS => {

    "ansible_facts": {

        "ansible_nodename": "db"

    }, 

    "changed": false

}


ansible的setup就到这吧。那个fact_path,其实就是在本地定义一些键值对,然后指定文件路径使用.