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模块文件中。