模块简介
模块(也称为“任务插件”或“库插件”)是可以从命令行或在 playbook 任务中使用的离散代码单元。 Ansible 通常在远程受管节点上执行每个模块,并收集返回值。
ansible-doc可以查看模块的信息
查看模块的数量7827,数量不少,我们只能用一些常用的模块
[root@rocky ~]# ansible-doc -l |wc -l
7827
查看ping模块的信息
ansible-doc ping
ping模块
ansible all -m ping
查看所有主机的连通性
command模块
是默认的模块,不指定模块时使用command模块
command命令不得用变量(SHOME),不得出现特殊符号
`"*"', `"<"', `">"', `"|"', `";"' and `"&"'
参数 | 说明 |
---|---|
chdir | 在执行命令之前,通过 cd 进入到该参数指定的目录 |
creates | 在创建一个文件之前,先判断文件是否存在,如果存在则跳过前面的东西,如果不存在则执行前面的动作 |
removes | 判断一个文件是否存在,如果存在则执行前面的动作,如果不存在则跳过前面的内容(和上面的 creates 是相反的) |
否则无法识别,需要则使用shellt模块实现
参数测试
shell模块
shell是万能模块,所有的命令都可以执行,但是尽量使用功能对应的模块,这样才能使用ansible的状态功能
使用shell模块
1.创建文件夹
2.创建脚本
3.给与执行权限
4.执行脚本
copy模块
复制控制主机的文件到受控主机
ansible会记录文件的SHA1进行比较,如果文件没有发生改变,不会重复复制文件
复制文件并改变属性
backup拷贝文件会对旧文件进行备份
拷贝目录带/是拷贝目录下的所有内容,不带/是拷贝目录
user模块
参数 | 释义 |
---|---|
create home | 创建家目录,设置false则不创建家目录 |
group | 创建用户组 |
groups | 附加组 |
name | 创建用户的名字 |
password | 创建用户的密码 |
uid | 创建用户的UID |
shell | 用户登录解释器 |
state | absent(删除用户) present(默认参数,创建) |
expires | 账户过期时间 |
添加用户,不创建用户目录,指定shell
然后删除用户
append修改用户
file模块
path : 必选项,定义文件/目录的路径
state :
- file : 查看文件状态,默认选项,若文件不存在,也不会被创建,会报错文件不存在
- touch : 如果文件存在,则会创建一个行的文件,如果文件或目录已存在,则更新时间戳
- absent : 如果删除目录、文件或者取消链接文件
- directory : 如果目录不存在,创建目录
- link : 创建软链接
- hard : 创建硬链接
- owner : 定义文件/目录的属主
- group : 定义文件/目录的属组
- mode : 定义文件/目录权限
- src : 要被链接的源文件的路径,只应用于state =link 的情况
- dest : 被链接到的路径,只应用于state=link的情况
- force : 强制创建软链接,有两种情况下:一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已经存在,需要先取消之前的软链接,然后创建新的软链,有两个选项: yes|no
用file模块指定文件,state是创建文件,拥有人是www,拥有组是root,权限是744,如果文件存在会修改文件的时间戳
ansible web -m file -a “path=/tmp/test/test.txt state=touch owner=www group=root mode=744”
state是创建目录,拥有人是root,拥有组是root,权限是755,目录存在就不会执行
ansible web -m file -a ‘path=/tmp/test state=directory owner=www group=www mode=755’
删除目录
ansible web -m file -a ‘path=/tmp/test state=absent’
script模块
在受控主机执行控制主机的脚本
cat > echo_message.sh <<'EOF'
echo "$(hostname -I) " >> /tmp/server_info.log
echo "$(uptime)" >> /tmp/server_info.log
echo "$(free -m)" >> /tmp/server_info.log
EOF
chmod +x echo_message.sh
cron模块
按参数指定执行任务的周期
- weekday
-
minute
- month
- hour
- day
新建crantab任务
ansible web -m cron -a “name=’ntp time’ minute=*/5 job=’ntpdate -u ntp.aliyun.com'”
修改直接用同名的任务编辑即可
state=absent即可删除cron任务
yum模块
安装软件最新版本
ansible all -m yum -a "name=ntpdate state=latest"
卸载软件
ansible all -m yum -a "name=ntpdate state=absent"