ansible的常用模块及参数

ansinle的常用模块及参数作用

command&shell模块

shell模块比command强大shell模块可以执行shell的内置命令和特性如管道等
不指定模块的话默认为command模块

ansible all -i hosts -m shell -a "cat /etc/passwd | grep games"
10.11.65.193 | CHANGED | rc=0 >>
games:x:12:100:games:/usr/games:/sbin/nologin
ansible all -i hosts -a "cat /etc/passwd | grep games"
10.11.65.193 | FAILED | rc=1 >>
...
...
|: 没有那个文件或目录
cat: grep: 没有那个文件或目录
cat: games: 没有那个文件或目录non-zero return code

可以看出用shell模块可以识别管道符号 而默认的command模块则无法识别

script模块

这个模块就比较简单了就是在远程主机执行本地的脚本没什么可说的

ansible all -i hosts -m script -a "a.sh"

copy模块

这个模块类似于scp远程拷贝功能将管理节点上的文件或目录拷贝到被管理节点上
src:拷贝的元地址
dest:拷贝的目标地址
backup:拷贝时如果目标地址有文件名相同的则先将其备份再拷贝
owner:文件的所有者
group:文件的组
mode:文件的权限

ansible all -i hosts -m copy -a "src=./nginx.repo dest=/etc/yum.repos.d/nginx.repo backup=yes owner=u1 group=g1 mode=0644"

yum模块

一看就知道是安装软件的
name:安装软件的名字
state:可以加不同的参数
present和installed确保安装了所需的软件包(没有就安装)
latest 如果软件不是最新版就更新
absent并removed卸载软件

ansible webservers -i hosts -m yum -a "name=nginx state=present"

systemd 模块

管理远程节点上的 systemd 服务相当于systemctl
daemon_reload :重新载入 systemd,扫描新的或有变动的单元
enabled :是否开机自启动 yes|no
name:服务名
state:接各种参数(started,stopped,restarted,reloaded)

ansible webservers -i hosts -m systemd -a "daemon_reload=yes"

group 模块

对被管理节点上的组进行管理
name:组名
system:是否为系统组, yes/no , 默认是 no
state:创建或删除,present/absent ,默认是present

ansible dbservers -i hosts -m group -a "name=db_admin"

use模块

管理被控制节点上的用户
name:用户名
pssword:默认不设置密码,如需设置密码只接受加密密码如pass=$(echo “123456” | openssl passwd -1 -stdin)
update_password:假如设置的密码不同于原密码,则会更新密码
home:指定用户的家目录
shell:设置用户的 shell
comment:用户的描述信息
create_home:在创建用户时,是否创建其家目录。默认创建,假如不创建,设置为 no
group:设置用户的主组
groups:将用户加入到多个其他组中,多个用逗号隔开(默认会把用户从其他已经加入的组中删除。)
append:yes|no 和 groups 配合使用,yes 时不会把用户从其他已经加入的组中删除
system:设置为 yes 时,将会创建一个系统账号
expires:设置用户的过期时间,值为时间戳,会转为为天数后,放在 shadow 的第 8 个字段里
state:present/absent创建或删除
remove:当与 state=absent 一起使用,删除一个用户及关联的目录

创建用 tom, 并且设置其有效期到 2020年4月15日, 加入到组 db_admin 中, 不改变用户原有假如的组

ansible dbservers -i hosts -m user -a "name=tom expires=$(date +%s -d 20200415) gorups=db_admin append=yes"

计算两个日期相差天数, 比如计算生日距离现在还有多少天

d1=$(date +%s -d 20180728)
d2=$(date +%s -d 20180726)
echo $(((d1-d2)/86400))

file模块

file 模块主要用于远程主机上的文件操作
owner 定义文件/目录的属主
group 定义文件/目录的属组
mode 定义文件/目录的权限
path 必选项,定义文件/目录的路径
recurse 递归的设置文件的属性,只对目录有效
src 链接(软/硬)文件的源文件路径,只应用于state=link的情况
dest 链接文件的路径,只应用于state=link的情况
state :
directory 如果目录不存在,创建目录
file 文件不存在,则不会被创建,存在则返回文件的信息 (常用于检查文件是否存在)
link 创建软链接
hard 创建硬链接
touch 如果文件不存在,则会创建一个新的文件,如果文件或目录(已存在,则更新其最后修改时间)
absent 删除目录、文件或者取消链接文件

cron 模块

管理被管理节点上的计划任务
name:计划任务的名字
minute:指定分钟,可以设置成(0-59, *, */2 等)格式。 默认是 * , 也就是每分钟。(hour、day、month类似)
weekday:指定星期, 可以设置成(0-6 for Sunday-Saturday, * 等)格式。默认是 *,也就是每星期。
job:指定要执行的内容,通常可以写个脚本,或者一段内容
state:指定这个job的状态,可以是新增(present)或者是删除(absent)。 默认为新增(present)
新建一个 CRON JOB 任务

# ansible all -i hosts -m cron -a "name='create new job' minute='0' job='ls -alh > /dev/null'"

debug模块

debug 模块主要用于调试时使用,通常的作用是将一个变量的值给打印出来。
var:直接打印一个指定的变量值
msg:打印一段可以格式化的字符串

ansible all -i hosts -m debug -a "var=role" -e "role=web"
ansible all -i hosts -m debug -a "msg='role is {{role}} '" -e "role=web"

template 模块

template 模块使用了Jinjia2格式作为文件模版,可以进行文档内变量的替换。文件以 .j2 结尾。
可以将文件内的内容变成变量,这样就可以自动改变文件里的一些内容。其过程类似于copy,但在拷贝到被管理节点时变量都会被转化为准确内容。

lineinfile 模块

在被管理节点上,用正则匹配的方式对目标文件的一行内容修改删除等操作
path 被管理节点的目标文件路径, 必须。
state 可选值absent 删除 |present 替换(默认值)。
regexp 在文件的每一行中查找的正则表达式
line 要在文件中插入/替换的行。需要state=present
create 文件不存在时,是否要创建文件并添加内容。yes/no
替换某一行

ansible dbservers -i hosts -m lineinfile -a "path=/etc/selinux/config regexp='^SELINUX=' line='SELINUX=disabled' state=present"

blockinfile 模块

对目标文件进行多行的添加/更新/删除操作。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值