ansible模块 yum:

[root@node1 ~]# ansible-doc -s yumless 436Copyright (C) 1984-2009 Mark Nudelmanless 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: M a n a g e s   p a c k a g e s   w i t h   t h e   I ( y u m )   p a c k a g e   m a n a g e r  action: yum      conf_file              # The remote yum configuration file to use for the transaction.      disable_gpg_check      # Whether to disable the GPG checking of signatures of packages being installed. Has an effect only if state is `present' or `latest'.      disablerepo            # `Repoid' of repositories to disable for the install/update operation. These repos will not persist beyond the transaction. When specifyi      enablerepo             # `Repoid' of repositories to enable for the install/update operation. These repos will not persist beyond the transaction. When specifyin      list                   # Various (non-idempotent) commands for usage with `/usr/bin/ansible' and `not' playbooks. See examples.      name=                  # Package name, or package specifier with version, like `name-1.0'. When using state=latest, this can be '*' which means run: yum -y updat      state                  # Whether to install (`present', `latest'), or remove (`absent') a package.      update_cache           # Force updating the cache. Has an effect only if state is `present' or `latest'.[root@node1 ~]#

安装httpd服务

[root@node1 ~]# ansible testservers -m yum -a 'name=httpd state=present'192.168.100.132 | success >> {    "changed": true,     "msg": "",     "rc": 0,     "results": [        "Loaded plugins: fastestmirror, refresh-packagekit, security\nLoading mirror speeds from cached hostfile\n * base: mirrors.btte.net\n * epel: mirrors.hustunique.com\n * extras: mirrors.btte.net\n * updates: mirrors.yun-idc.com\nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.2.15-47.el6.centos.3 will be installed\n--> Processing Dependency: httpd-tools = 2.2.15-47.el6.centos.3 for package: httpd-2.2.15-47.el6.centos.3.x86_64\n--> Running transaction check\n---> Package httpd-tools.x86_64 0:2.2.15-29.el6.centos will be updated\n---> Package httpd-tools.x86_64 0:2.2.15-47.el6.centos.3 will be an update\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package          Arch        Version                        Repository    Size\n================================================================================\nInstalling:\n httpd            x86_64      2.2.15-47.el6.centos.3         updates      831 k\nUpdating for dependencies:\n httpd-tools      x86_64      2.2.15-47.el6.centos.3         updates       77 k\n\nTransaction Summary\n================================================================================\nInstall       1 Package(s)\nUpgrade       1 Package(s)\n\nTotal download size: 908 k\nDownloading Packages:\n--------------------------------------------------------------------------------\nTotal                                           4.4 MB/s | 908 kB     00:00     \nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r  Updating   : httpd-tools-2.2.15-47.el6.centos.3.x86_64                    1/3 \n\r  Installing : httpd-2.2.15-47.el6.centos.3.x86_64                          2/3 \n\r  Cleanup    : httpd-tools-2.2.15-29.el6.centos.x86_64                      3/3 \n\r  Verifying  : httpd-tools-2.2.15-47.el6.centos.3.x86_64                    1/3 \n\r  Verifying  : httpd-2.2.15-47.el6.centos.3.x86_64                          2/3 \n\r  Verifying  : httpd-tools-2.2.15-29.el6.centos.x86_64                      3/3 \n\nInstalled:\n  httpd.x86_64 0:2.2.15-47.el6.centos.3                                         \n\nDependency Updated:\n  httpd-tools.x86_64 0:2.2.15-47.el6.centos.3                                   \n\nComplete!\n"    ]}192.168.100.131 | success >> {    "changed": true,     "msg": "",     "rc": 0,     "results": [        "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * epel: mirrors.opencas.cn\nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.2.15-29.el6.centos will be installed\n--> Processing Dependency: httpd-tools = 2.2.15-29.el6.centos for package: httpd-2.2.15-29.el6.centos.x86_64\n--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-29.el6.centos.x86_64\n--> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-29.el6.centos.x86_64\n--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-29.el6.centos.x86_64\n--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-29.el6.centos.x86_64\n--> Running transaction check\n---> Package apr.x86_64 0:1.3.9-5.el6_2 will be installed\n---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be installed\n---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed\n---> Package httpd-tools.x86_64 0:2.2.15-29.el6.centos will be installed\n---> Package mailcap.noarch 0:2.1.31-2.el6 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package              Arch          Version                      Repository\n                                                                           Size\n================================================================================\nInstalling:\n httpd                x86_64        2.2.15-29.el6.centos         1        821 k\nInstalling for dependencies:\n apr                  x86_64        1.3.9-5.el6_2                1        123 k\n apr-util             x86_64        1.3.9-3.el6_0.1              1         87 k\n apr-util-ldap        x86_64        1.3.9-3.el6_0.1              1         15 k\n httpd-tools          x86_64        2.2.15-29.el6.centos         1         73 k\n mailcap              noarch        2.1.31-2.el6                 1         27 k\n\nTransaction Summary\n================================================================================\nInstall       6 Package(s)\n\nTotal download size: 1.1 M\nInstalled size: 3.6 M\nDownloading Packages:\n--------------------------------------------------------------------------------\nTotal                                            13 MB/s | 1.1 MB     00:00     \nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r  Installing : apr-1.3.9-5.el6_2.x86_64                                     1/6 \n\r  Installing : apr-util-1.3.9-3.el6_0.1.x86_64                              2/6 \n\r  Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                         3/6 \n\r  Installing : httpd-tools-2.2.15-29.el6.centos.x86_64                      4/6 \n\r  Installing : mailcap-2.1.31-2.el6.noarch                                  5/6 \n\r  Installing : httpd-2.2.15-29.el6.centos.x86_64                            6/6 \n\r  Verifying  : httpd-2.2.15-29.el6.centos.x86_64                            1/6 \n\r  Verifying  : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                         2/6 \n\r  Verifying  : httpd-tools-2.2.15-29.el6.centos.x86_64                      3/6 \n\r  Verifying  : apr-1.3.9-5.el6_2.x86_64                                     4/6 \n\r  Verifying  : mailcap-2.1.31-2.el6.noarch                                  5/6 \n\r  Verifying  : apr-util-1.3.9-3.el6_0.1.x86_64                              6/6 \n\nInstalled:\n  httpd.x86_64 0:2.2.15-29.el6.centos                                           \n\nDependency Installed:\n  apr.x86_64 0:1.3.9-5.el6_2                                                    \n  apr-util.x86_64 0:1.3.9-3.el6_0.1                                             \n  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1                                        \n  httpd-tools.x86_64 0:2.2.15-29.el6.centos                                     \n  mailcap.noarch 0:2.1.31-2.el6                                                 \n\nComplete!\n"    ]}

name:可以指定版本号,否定为默认最新

卸载 httpd 服务:

[root@node1 ~]# ansible testservers -m yum -a 'name=httpd state=absent '192.168.100.131 | success >> {    "changed": true,     "msg": "",     "rc": 0,     "results": [        "Loaded plugins: fastestmirror\nSetting up Remove Process\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.2.15-29.el6.centos will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package        Arch            Version                       Repository   Size\n================================================================================\nRemoving:\n httpd          x86_64          2.2.15-29.el6.centos          @1          2.9 M\n\nTransaction Summary\n================================================================================\nRemove        1 Package(s)\n\nInstalled size: 2.9 M\nDownloading Packages:\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r  Erasing    : httpd-2.2.15-29.el6.centos.x86_64                            1/1 \n\r  Verifying  : httpd-2.2.15-29.el6.centos.x86_64                            1/1 \n\nRemoved:\n  httpd.x86_64 0:2.2.15-29.el6.centos                                           \n\nComplete!\n"    ]}192.168.100.132 | success >> {    "changed": true,     "msg": "",     "rc": 0,     "results": [        "Loaded plugins: fastestmirror, refresh-packagekit, security\nSetting up Remove Process\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.2.15-47.el6.centos.3 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package      Arch          Version                       Repository       Size\n================================================================================\nRemoving:\n httpd        x86_64        2.2.15-47.el6.centos.3        @updates        2.9 M\n\nTransaction Summary\n================================================================================\nRemove        1 Package(s)\n\nInstalled size: 2.9 M\nDownloading Packages:\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r  Erasing    : httpd-2.2.15-47.el6.centos.3.x86_64                          1/1 \n\r  Verifying  : httpd-2.2.15-47.el6.centos.3.x86_64                          1/1 \n\nRemoved:\n  httpd.x86_64 0:2.2.15-47.el6.centos.3                                         \n\nComplete!\n"    ]}[root@node1 ~]#

模块 service :

[root@node1 ~]# ansible-doc -s serviceless 436Copyright (C) 1984-2009 Mark Nudelmanless 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: M a n a g e   s e r v i c e s .  action: service      arguments              # Additional arguments provided on the command line      enabled                # Whether the service should start on boot. *At least one of state and enabled are required.*      name=                  # Name of the service.      pattern                # If the service does not respond to the status command, name a substring to look for as would be found in the output of the `ps' command       runlevel               # For OpenRC init scripts (ex: Gentoo) only.  The runlevel that this service belongs to.      sleep                  # If the service is being `restarted' then sleep this many seconds between the stop and start command. This helps to workaround badly beha      state                  # `started'/`stopped' are idempotent actions that will not run commands unless necessary.  `restarted' will always bounce the service.  `r[root@node1 ~]#

启动 httpd 服务,并设置开机启动

[root@node1 ~]# ansible testservers -m yum -a 'name=httpd state=present'[root@node1 ~]# ansible testservers -m command -a 'service httpd status'192.168.100.131 | FAILED | rc=3 >>httpd 已停192.168.100.132 | FAILED | rc=3 >>httpd 已停[root@node1 ~]# ansible testservers -m command -a 'chkconfig --list httpd'192.168.100.131 | success | rc=0 >>httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off192.168.100.132 | success | rc=0 >>httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off[root@node1 ~]# ansible testservers -m service -a 'name=httpd enabled=true state=started'192.168.100.131 | success >> {    "changed": true,     "enabled": true,     "name": "httpd",     "state": "started"}192.168.100.132 | success >> {    "changed": true,     "enabled": true,     "name": "httpd",     "state": "started"}[root@node1 ~]# ansible testservers -m command -a 'service httpd status'192.168.100.131 | success | rc=0 >>httpd (pid  3270) 正在运行...192.168.100.132 | success | rc=0 >>httpd (pid  33341) 正在运行...[root@node1 ~]# ansible testservers -m command -a 'chkconfig --list httpd'192.168.100.131 | success | rc=0 >>httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off192.168.100.132 | success | rc=0 >>httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off[root@node1 ~]#

模块 setup : 收集远程主机的信息

 

每个被管理的主机,在执行命令操作前都会执行setup模块,将信息汇报到ansible server 端

[root@node1 ~]#  ansible-doc -s setupless 436Copyright (C) 1984-2009 Mark Nudelmanless 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: G a t h e r s   f a c t s   a b o u t   r e m o t e   h o s t s  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 f      filter                 # if supplied, only return facts that match this shell-style (fnmatch) wildcard.[root@node1 ~]#

以 testservers 组中的192.168.100.132 主机为例:

192.168.100.132 | success >> {    "ansible_facts": {        "ansible_all_ipv4_addresses": [            "192.168.100.132"        ],         "ansible_all_ipv6_addresses": [            "fe80::20c:29ff:fe42:3d4b"        ],         "ansible_architecture": "x86_64",         "ansible_bios_date": "07/31/2013",         "ansible_bios_version": "6.00",         "ansible_cmdline": {            "KEYBOARDTYPE": "pc",             "KEYTABLE": "us",             "LANG": "zh_CN.UTF-8",             "nomodeset": true,             "quiet": true,             "rd_LVM_LV": "vg_v3/lv_swap",             "rd_NO_DM": true,             "rd_NO_LUKS": true,             "rd_NO_MD": true,             "rhgb": true,             "ro": true,             "root": "/dev/mapper/vg_v3-lv_root"        },         "ansible_date_time": {            "date": "2016-02-29",             "day": "29",             "epoch": "1456726561",             "hour": "14",             "iso8601": "2016-02-29T06:16:01Z",             "iso8601_micro": "2016-02-29T06:16:01.657953Z",             "minute": "16",             "month": "02",             "second": "01",             "time": "14:16:01",             "tz": "CST",             "tz_offset": "+0800",             "weekday": "Monday",             "year": "2016"        },         "ansible_default_ipv4": {            "address": "192.168.100.132",             "alias": "eth0",             "gateway": "192.168.100.2",             "interface": "eth0",             "macaddress": "00:0c:29:42:3d:4b",             "mtu": 1500,             "netmask": "255.255.255.0",             "network": "192.168.100.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": "40916992",                         "sectorsize": 512,                         "size": "19.51 GB",                         "start": "1026048"                    }                },                 "removable": "0",                 "rotational": "1",                 "scheduler_mode": "cfq",                 "sectors": "41943040",                 "sectorsize": "512",                 "size": "20.00 GB",                 "support_discard": "0",                 "vendor": "VMware,"            },             "sr0": {                "holders": [],                 "host": "SATA controller: VMware SATA AHCI controller",                 "model": "VMware SATA CD01",                 "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.5",         "ansible_domain": "bta.net.cn",         "ansible_env": {            "CVS_RSH": "ssh",             "G_BROKEN_FILENAMES": "1",             "HOME": "/root",             "LANG": "C",             "LC_CTYPE": "C",             "LESSOPEN": "|/usr/bin/lesspipe.sh %s",             "LOGNAME": "root",             "MAIL": "/var/mail/root",             "PATH": "/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",             "PWD": "/root",             "QTDIR": "/usr/lib64/qt-3.3",             "QTINC": "/usr/lib64/qt-3.3/include",             "QTLIB": "/usr/lib64/qt-3.3/lib",             "SHELL": "/bin/bash",             "SHLVL": "2",             "SSH_ASKPASS": "/usr/libexec/openssh/gnome-ssh-askpass",             "SSH_CLIENT": "192.168.100.129 46085 22",             "SSH_CONNECTION": "192.168.100.129 46085 192.168.100.132 22",             "SSH_TTY": "/dev/pts/0",             "TERM": "vt100",             "USER": "root",             "_": "/usr/bin/python"        },         "ansible_eth0": {            "active": true,             "device": "eth0",             "ipv4": {                "address": "192.168.100.132",                 "netmask": "255.255.255.0",                 "network": "192.168.100.0"            },             "ipv6": [                {                    "address": "fe80::20c:29ff:fe42:3d4b",                     "prefix": "64",                     "scope": "link"                }            ],             "macaddress": "00:0c:29:42:3d:4b",             "module": "e1000",             "mtu": 1500,             "promisc": false,             "type": "ether"        },         "ansible_fips": false,         "ansible_form_factor": "Other",         "ansible_fqdn": "bt-199-037.bta.net.cn",         "ansible_hostname": "v3",         "ansible_interfaces": [            "lo",             "pan0",             "eth0"        ],         "ansible_kernel": "2.6.32-431.el6.x86_64",         "ansible_lo": {            "active": true,             "device": "lo",             "ipv4": {                "address": "127.0.0.1",                 "netmask": "255.0.0.0",                 "network": "127.0.0.0"            },             "ipv6": [                {                    "address": "::1",                     "prefix": "128",                     "scope": "host"                }            ],             "mtu": 16436,             "promisc": false,             "type": "loopback"        },         "ansible_lsb": {            "codename": "Final",             "description": "CentOS release 6.5 (Final)",             "id": "CentOS",             "major_release": "6",             "release": "6.5"        },         "ansible_machine": "x86_64",         "ansible_machine_id": "7fa908076135396c09ba795100000011",         "ansible_memfree_mb": 217,         "ansible_memory_mb": {            "nocache": {                "free": 640,                 "used": 348            },             "real": {                "free": 217,                 "total": 988,                 "used": 771            },             "swap": {                "cached": 0,                 "free": 1981,                 "total": 1983,                 "used": 2            }        },         "ansible_memtotal_mb": 988,         "ansible_mounts": [            {                "device": "/dev/mapper/vg_v3-lv_root",                 "fstype": "ext4",                 "mount": "/",                 "options": "rw",                 "size_available": 13751066624,                 "size_total": 18569568256,                 "uuid": "5b1e1ab5-6a12-4466-a832-0fa80ec05610"            },             {                "device": "/dev/sda1",                 "fstype": "ext4",                 "mount": "/boot",                 "options": "rw",                 "size_available": 445854720,                 "size_total": 507744256,                 "uuid": "01b79867-8bb5-4492-bc99-ee4c1e77ad45"            }        ],         "ansible_nodename": "v3.lansgg.com",         "ansible_os_family": "RedHat",         "ansible_pan0": {            "active": false,             "device": "pan0",             "id": "8000.000000000000",             "interfaces": [],             "macaddress": "82:5d:e7:15:7f:60",             "mtu": 1500,             "promisc": false,             "stp": false,             "type": "bridge"        },         "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 4b fa 62 36 82 17-59 18 88 5d 7e 42 3d 4b",         "ansible_product_uuid": "564D4BFA-6236-8217-5918-885D7E423D4B",         "ansible_product_version": "None",         "ansible_python_version": "2.6.6",         "ansible_selinux": {            "status": "disabled"        },         "ansible_ssh_host_key_dsa_public": "AAAAB3NzaC1kc3MAAACBAJvg4oIca9Wzg59BbkQv4fP2b0e/e6Er5AwKb7fe2NC5pIBYDZFum68IJcIwrjb1WalwMXJtRl6OxPq3dO+D7RDitATv8z8N4eviAbOwg8zlSYcadazYcElSBYaWfvuSH+PoNuLc3KwL6S45vNnXjJRA40QALWYPCKNBn/g1Lqc/AAAAFQD9+juFm6jft2mUEB8+H7wu+IrtMQAAAIEAi2RsOt4Svr8G4nLgZhzMeegq6zNZm2IPDDjLIK6Hk0dMqLGjNsJ9muUX9NRnRj4UVmon4LuMU6Z/fXag5UhbUUHRftLf9tplGR5CX0MtQplDvBHiB+KXu9l1hzaFgRW+oZMVsaFTEox+4lQBLSjVjX/3vALpnGYdkheN6nU4FEMAAACANQMb+9zNptx3s1ohb9mFJmG9MKVP8IXY3VNZqCSHVlmIp3p1kepNH6sKZDyo22SFO0l0rXP9hADxwlhvhxOyupnDmpsM1Ar5vFxusgZgGisPzOtljQbzeuXlCo+SUswEoxS4NY/CSP8Gc8eZD+JAcS+pDuBxQckC8JIDfOstlS4=",         "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAABIwAAAQEAzM8GNFPLJTd+3PYOlj5wcJMYgZNIdN7ozvQVZn8O7CpDnBXscGBezQ1m2QJsrzeTWR2FOKrAqv3oWeFwW65cxcSgVgdzVHatR6KhVqqJyF0+39sRAAAxAwK3vXK2IdKLLIIWShvIH+F0uL9aNP0UQt0gJLsqVI6yJ1zAB3qexPX+bZNRa3K33tkeAWfJdlJUScgaUe3oUnvAdXMBuTYp9fJwZyMo3HibUuE2YbeFAXTj6qnRyKOgwponPkkv9TuM8yenNIKqbjxIALgNyERMx0FDHc22Ow2AEfWASE+KT8ZrdbjKl+pMUz64MAHpaNgWzrivuSFRUzjrECwFolk47w==",         "ansible_swapfree_mb": 1981,         "ansible_swaptotal_mb": 1983,         "ansible_system": "Linux",         "ansible_system_vendor": "VMware, Inc.",         "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}[root@node1 ~]#

一般在 playbook 中使用较多,如template模块文件中。