目录
在Ansible的Playbook剧本中使用什么关键词定义任务?
ansible
-
是一款自动化运维工具,基于python开发,批量管理服务器的工具
-
首次发布于2012年,2015年被红帽公司收购
-
使用Python语言编写的
-
基于ssh进行管理,所以不需要在被管端安装任何软件
-
ansible在管理远程主机的时候,主要是通过各种模块进行操作的
ansible管理
-
ansible进行远程管理的两个方法:
-
adhoc临时命令。就是在命令行上执行管理命令。
-
playbook剧本。把管理任务用特定格式写到文件中。
-
-
无论哪种方式,都是通过模块加参数进行管理。
adhoc临时命令
语法:
ansible 主机或组列表 -m 模块 -a "参数" # -a是可选的
ansible模块
# 列出ansible的所有模块数量
[root@control ansible]# ansible-doc -l | wc -l
2834
# 列出ansible的所有模块
[root@control ansible]# ansible-doc -l
# 查看与yum相关的模块
[root@control ansible]# ansible-doc -l | grep yum
# 查看yum模块的使用说明,主要查看下方的EXAMPLE示例
[root@control ansible]# ansible-doc yum
command模块
-
ansible默认模块,用于在远程主机上执行任意命令
-
command不支持shell特性,如管道、重定向。
# 在所有被管主机上创建目录/tmp/demo
[root@control ansible]# ansible all -a "mkdir /tmp/demo"
# 查看node1的ip地址
[root@control ansible]# ansible node1 -a "ip a s"
[root@control ansible]# ansible node1 -a "ip a s | head" # 报错
shell模块
与command模块类似,但是支持shell特性,如管道、重定向。
# 查看node1的ip地址,只显示前10行
[root@control ansible]# ansible node1 -m shell -a "ip a s | head"
script模块
用于在远程主机上执行脚本
# 在控制端创建脚本即可
[root@control ansible]# vim test.sh
#!/bin/bash
yum install -y httpd
systemctl start httpd
# 在test组的主机上执行脚本
[root@control ansible]# ansible test -m script -a "test.sh"
file模块
-
可以创建文件、目录、链接等,还可以修改权限、属性等
-
常用的选项:
-
path:指定文件路径
-
owner:设置文件所有者
-
group:设置文件所属组
-
state:状态。touch表示创建文件,directory表示创建目录,link表示创建软链接,absent表示删除
-
mode:设置权限
-
src:source的简写,源
-
dest:destination的简写,目标
-
[root@control ansible]# ansible test -m file -a "path=/tmp/file.txt state=touch" # touch是指如果文件不存在,则创建
# 在test主机上创建/tmp/demo目录
[root@control ansible]# ansible test -m file -a "path=/tmp/demo state=directory"
# 将test主机上/tmp/file.txt的属主改为sshd,属组改为adm,权限改为0777
[root@control ansible]# ansible test -m file -a "path=/tmp/file.txt owner=sshd group=adm mode='0777'"
[root@control ansible]# ansible test -a "ls -l /tmp/file.txt"
# 删除test主机上/tmp/file.txt
[root@control ansible]# ansible test -m file -a "path=/tmp/file.txt state=absent" # absent英文缺席的、不存在的