授人与🐟,不如授人与渔,有些信息还是要看官网
1,【command】:在远程节点上执行命令(不支持shell中的<>|&等符号)
- https://docs.ansible.com/ansible/latest/modules/command_module.html#command-module
- 如果不使用
-m
指定模块,默认使用command模块。
2 ,【shell】:在节点中执行命令 (shell()运行命令)
3,【ping】 :测试主机是否可以连接 (pong则通)
-
到这里不由发现,官网链接都是有规律的,所以,每个模块都可以很快的找到对应连接,方便查阅。
[root@master ~ 19:55:31]#ansible ceshi -m ping 10.0.0.129 | SUCCESS => { "changed": false, "ping": "pong" } 10.0.0.11 | SUCCESS => { "changed": false, "ping": "pong" }
参数说明,详见官网:ping-module
4,【setup】:主要用于获取主机信息
-
4.1,
ansible ceshi -m setup
:获取主机的所有信息(太多了,有些不需要)
setup结果概览.png
结果里面有太多内容,但是都在ansible_facts的值里,而且每一个结果都以ansible_的形式命名,所有结果都可以使用filter进行过滤。
setup结果总览.png -
4.2,
ansible ceshi -m setup -a 'filter=ansible_*_mb'
(通配符,模糊过滤)
(filter=ansible_memory_mb
过滤更彻底):获取主机的内存信息[root@master ~ 20:10:19]#ansible ceshi -m setup -a 'filter=ansible_*_mb' 10.0.0.129 | SUCCESS => { "ansible_facts": { "ansible_memfree_mb": 1377, "ansible_memory_mb": { "nocache": { "free": 1724, "used": 259 }, "real": { "free": 1377, "total": 1983, "used": 606 }, "swap": { "cached": 0, "free": 2044, "total": 2044, "used": 0 } }, "ansible_memtotal_mb": 1983, "ansible_swapfree_mb": 2044, "ansible_swaptotal_mb": 2044 }, "changed": false } 10.0.0.11 | SUCCESS => { "ansible_facts": { "ansible_memfree_mb": 664, "ansible_memory_mb": { "nocache": { "free": 779, "used": 193 }, "real": { "free": 664, "total": 972, "used": 308 }, "swap": { "cached": 0, "free": 2047, "total": 2047, "used": 0 } }, "ansible_memtotal_mb": 972, "ansible_swapfree_mb": 2047, "ansible_swaptotal_mb": 2047 }, "changed": false }
4.3,
ansible ceshi -m setup -a 'filter=ansible_eth[0-2]'
:获取主机的网卡信息(以eth0-2命名的网卡)-
4.4,
ansible ceshi -m setup -a 'filter=ansible_ens33'
:获取主机的ens33网卡信息网卡信息:有的是ens命名(ens33),有的是eth命名(eth0),还有别的命名。
-
4.5,
ansible ceshi -m setup -a 'filter=ansible_all_ipv4_addresses'
:ipv4地址10.0.0.129 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "10.0.0.129" ] }, "changed": false } 10.0.0.11 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "10.0.0.11" ] }, "changed": false }
-
4.6,
ansible ceshi -m setup -a 'filter=ansible_distribution'
:表示远程主机的系统发行版[root@master ~ 20:46:54]#ansible ceshi -m setup -a 'filter=ansible_distribution' 10.0.0.11 | SUCCESS => { "ansible_facts": { "ansible_distribution": "CentOS" }, "changed": false } 10.0.0.129 | SUCCESS => { "ansible_facts": { "ansible_distribution": "Ubuntu" }, "changed": false }
参数说明,详见官网:setup-module
5,【files】:文件操作相关
- 简单示例,创建软连接:
ansible ceshi -m file -a "src=/etc/ dest=/tmp/ state=link"
src:源文件目录(只适用于state=link) dest被链接到的目录(只适用于state=link) state:状态(link是软连接)具体信息,详见官网。 - 参数说明,详见官网:file-module
6,【copy】:文件传输复制相关
- 简单示例,向目标主机传输文件:
ansible ceshi -m copy -a "src=/ dest=/ owner=root grout=root mode=644"
- 参数说明,详见官网:copy-module
7,【fetch】:从远程节点获取文件
- 此模块的工作方式与copy相同,但相反。它用于从远程计算机获取文件并将它们本地存储在由主机名组织的文件树中。
- 参数说明,详见官网:fetch-module
8,【template】:将带有参数的模板配置文件传递到目标地址(常用于playbook,参数可使用vars定义)
- 与copy不同之处在于,template支持渲染模板文件里面的变量,将渲染后的文件发送至目标主机,而copy是将文件复制到目标主机。
- 示例(大概看个样式,无实际意义)
$ vi hello_world.txt.j2 Hello "{{ dynamic_word }}" ↑ ↑ ↑
$ vi template_demo.yml --- - name: Play the template module hosts: localhost vars: dynamic_word: "World" tasks: - name: generation the hello_world.txt file template: src: hello_world.txt.j2 dest: /tmp/hello_world.txt
直接执行 playbook。 $ ansible-playbook template_demo.yml 通过 -e 参数将 dynamic_word 覆写成 ansible。 $ ansible-playbook template_demo.yml -e "dynamic_word=ansible" 通过 -e 参数将 dynamic_word 覆写成 Day14。 $ ansible-playbook template_demo.yml -e "dynamic_word=Day14"
- 参数说明,详见官网:template-module
9,【service】:控制远程主机上的服务(一般使用playbook形式)
- 简单示例,重启nginx:
ansible ceshi -m service -a "name=nginx state=restarted"
- 参数说明,详见官网:service-module
10,【cron】:管理计划任务 (管理cron.d和crontab条目)
- 简单示例,创一条计划任务:
ansible ceshi -m cron -a "name='测试计划任务' weekday='2' minute='0' hour=12 job='cat /etc/test.py'"
- 参数说明,详见官网:cron-module
11,【yum】:使用yum包管理器管理包(适用于python2)
- 参数说明,详见官网:yum-module
12,【get_url】:将文件从HTTP,HTTPS或FTP下载到节点
- 参数说明,详见官网:get_url-module
13,【user】: 管理用户帐户
- 参数说明,详见官网:user-module
14,【group】: 添加或删除组
- 参数说明,详见官网:group-module
15,【script】:传输后并且运行本地脚本
- 参数说明,详见官网:script-module
16,【apt】:管理apt包(例如Ubuntu)
- 参数说明,详见官网:apt-module
17,【pip】:管理Python库依赖项
- 参数说明,详见官网:pip-module
18,【debug】:执行期间的打印语句
- 参数说明,详见官网:debug-module