ansible之基本模块的使用

模块简介

模块(也称为“任务插件”或“库插件”)是可以从命令行或在 playbook 任务中使用的离散代码单元。 Ansible 通常在远程受管节点上执行每个模块,并收集返回值。

官方模块查找

ansible-doc可以查看模块的信息

查看模块的数量7827,数量不少,我们只能用一些常用的模块

[root@rocky ~]# ansible-doc -l |wc -l
7827

查看ping模块的信息

ansible-doc ping

《ansible之基本模块的使用》

ping模块

ansible all -m ping

查看所有主机的连通性

《ansible之基本模块的使用》

command模块

是默认的模块,不指定模块时使用command模块

command命令不得用变量(SHOME),不得出现特殊符号

 `"*"', `"<"', `">"', `"|"', `";"' and `"&"' 
参数 说明
chdir 在执行命令之前,通过 cd 进入到该参数指定的目录
creates 在创建一个文件之前,先判断文件是否存在,如果存在则跳过前面的东西,如果不存在则执行前面的动作
removes 判断一个文件是否存在,如果存在则执行前面的动作,如果不存在则跳过前面的内容(和上面的 creates 是相反的)

否则无法识别,需要则使用shellt模块实现

《ansible之基本模块的使用》

参数测试

《ansible之基本模块的使用》

shell模块

shell是万能模块,所有的命令都可以执行,但是尽量使用功能对应的模块,这样才能使用ansible的状态功能

使用shell模块

1.创建文件夹

2.创建脚本

3.给与执行权限

4.执行脚本

《ansible之基本模块的使用》

copy模块

复制控制主机的文件到受控主机

《ansible之基本模块的使用》

ansible会记录文件的SHA1进行比较,如果文件没有发生改变,不会重复复制文件

《ansible之基本模块的使用》

复制文件并改变属性

《ansible之基本模块的使用》

backup拷贝文件会对旧文件进行备份

《ansible之基本模块的使用》

拷贝目录带/是拷贝目录下的所有内容,不带/是拷贝目录

《ansible之基本模块的使用》

《ansible之基本模块的使用》

user模块

参数 释义
create home 创建家目录,设置false则不创建家目录
group 创建用户组
groups 附加组
name 创建用户的名字
password 创建用户的密码
uid 创建用户的UID
shell 用户登录解释器
state absent(删除用户)
present(默认参数,创建)
expires 账户过期时间

添加用户,不创建用户目录,指定shell

然后删除用户

《ansible之基本模块的使用》

append修改用户

《ansible之基本模块的使用》

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”

《ansible之基本模块的使用》

state是创建目录,拥有人是root,拥有组是root,权限是755,目录存在就不会执行

ansible web -m file -a ‘path=/tmp/test state=directory owner=www group=www mode=755’

《ansible之基本模块的使用》

删除目录

ansible web -m file -a ‘path=/tmp/test state=absent’

《ansible之基本模块的使用》

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

《ansible之基本模块的使用》

cron模块

按参数指定执行任务的周期

  • weekday

  • minute

  • month
  • hour
  • day

新建crantab任务

ansible web -m cron -a “name=’ntp time’ minute=*/5 job=’ntpdate -u ntp.aliyun.com'”

《ansible之基本模块的使用》

修改直接用同名的任务编辑即可

state=absent即可删除cron任务

《ansible之基本模块的使用》

yum模块

安装软件最新版本

ansible all -m yum -a "name=ntpdate state=latest"

卸载软件

ansible all -m yum -a "name=ntpdate state=absent"

《ansible之基本模块的使用》

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注