ansible常用模块

ansible常见模块

setup

# 收集远程主机的Facts(每个被管理节点在接收运行管理命令之前,会将自己主机相关信息,如操作系统,IP等信息传递给ansible主机)
filter: 用于进行条件过滤,如果设置,仅返回匹配过滤条件的信息
ansible hosts1 -m setup
ansible hosts1 -m setup -a "filter=ansible_all_ipv4_addresses"

command

# 命令模块,用于在远程主机执行命令(缺陷:执行命令不能使用变量和参数)
例:在inventory文件中的所有主机中执行date命令,-m默认不指定时就是使用command模块
ansible all -m command -a "date"

cron

# 定时任务模块 
        state值:   present(添加)   absent(移除)
        例: 使用ansible 添加任务计划 */10 * * * * /bin/echo hello    
        添加:
        ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test job" state=present'
        检查:
        ansible all -a 'crontab -l'
        移除:
        ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test job" state=absent'

user

#  用户操作模块
name: 指定用户名
uid: 指定uid号
group: 指定组

添加用户
        ansible all -m user -a 'name="user1" state=present'

删除用户
        ansible all -m user -a 'name="user1" state=absent'

group

添加用户组
        ansible all -m group -a 'name="mysql" gid=306 system=yes'

copy

src= :定义本地源文件
dest=:定义目标路劲(绝对路劲)
content= :取代src=,表示用指定的内容生成为目标文件的内容,不能与src同时使用
owner: 文件属主
group: 文件属组
mode:  文件权限
backup: 是否备份
拷贝本地的/etc/fstab 到远程的 /tmp 下权限为640 属主为root
        ansible all -m copy -a 'src=/etc/fstab /dest=/tmp/fstab.ansible owner=root mode=640'

拷贝内容为“hello longge”到远程主机
        ansible all -m copy -a 'content="hello longge" dest=/tmp/test.ansible'

file

# file 模块可以帮助我们完成一些对文件的基本操作。比如,创建文件或目录、删除文件或目录、修改文件权限等
path: 必须参数,指定要操作的文件或目录
state:  directory目录  touch文件   link软链接  hard硬链接  absent删除
src:   创建链接时需要指定的源
force: 强制
owner: 文件属主
group:  文件属组
mode:   文件权限
recurse: 目录时递归修改文件属性

ping

# 测试连通性
ansible all -m ping

service:

# 服务管理
state: started   stopped   reloaded  restarted
enabled:  是否开机自启
ansible all -m service -a 'enabled=true name=httpd state=started'

shell

与command类似,但是可以执行带管道和变量的命令,同样无法做到运行多次结果一致

script

# 本地脚本在远程主机执行
chdir参数 : 此参数的作用就是指定一个远程主机中的目录,在执行对应的脚本之前,会先进入到 chdir 参数指定的目录中。
creates参数 :使用此参数指定一个远程主机中的文件,当指定的文件存在时,就不执行对应脚本,可参考 command 模块中的解释。
removes参数 :使用此参数指定一个远程主机中的文件,当指定的文件不存在时,就不执行对应脚本

ansible all -m script -a 'chdir=/opt /tmp/test.sh'

yum

# 软件包管理
state值:   present(安装)   absent(移除)
安装软件包
        ansible all -m yum -a 'name=nginx'
卸载
        ansible all -m yum -a 'name=nginx state=absent'

lineinfile

# 文件内容修改,在某行前面添加一行,在某行后面添加一行,删除某一行、末尾加入一行、替换或添加某一行
path:     文件路径
regexp:  正则匹配,如'^127\.0\.0\.1''^Listen ''^# port for http'
line:     需要更换成的行或者添加的行
insertbefore:  正则匹配该行并在改行前面添加一行,如'^www.*80/tcp''^#Listen ''aa(.*)'
insertafter:    正则匹配该行并在改行后面添加一行
state:          absent删除     present添加  
例:
bbb修改为bbbbbb

ansible all -m lineinfile -a "dest=/root/test.txt regexp='bbb' line='bbbbbbb'"

2.2 在某一行前面插入一行
ansible all -m lineinfile -a "dest=/root/test.txt insertbefore='aa(.*)' line='eeee'"

2.3 在某一行后面插入一行
ansible all -m lineinfile -a "dest=/root/test.txt insertafter='aa(.*)' line='eeee'"

2.4 删除某一行
ansible all -m lineinfile -a "dest=/root/test.txt regexp='aa(.*)' state=absent"

2.5 末尾加入一行
ansible all -m lineinfile -a "dest=/root/test.txt line='hehe'"

2.6 替换或添加某一行
ansible all -m lineinfile -a "dest=/root/test.txt regexp='he(.*)' line='lllll' state=present"

replace

#  模块可以根据我们指定的正则表达式替换匹配到的字符串,文件中所有被匹配到的字符串都会被替换,和lineinfile不同的地方是replace只会替换正则表达式匹配到的内容,而lineinfile是替换正则表达式匹配到行的内容。

path: /etc/hosts
after: '开始位置'
before: '结束位置'
regexp: '匹配内容'
replace: '替换内容'

#匹配某行前加入注释
ansible host01 -m replace -a "path=/etc/fstab regexp='^10.1.2.254(.*)' replace='# 10.1.2.254\1' backup=yes"

# 匹配到行后,在本行添加aaa内容
ansible 192.168.1.1 -m replace -a "path=/etc/ssh/sshd_config regexp='^allowusers(.*)' replace='allowusers\1 aaa' backup=yes"

# 删除行中的test01
ansible host02 -m replace -a "dest=/etc/ssh/sshd_config regexp='test01' replace=''"
posted @   itk  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示