Ansible 常用模块

模块帮助命令: ansible-doc file 模块名称
模块名称查询: ansible-doc -l

1、常用模块-command

功能: 在远程主机执行shell命令,此为默认模块,可忽略 -m选项;
注意: 不支持管道 | , shell模块支持

参数选项含义
chdirchdir /root执行ansible时,切换到指定目录
createscreates /tmp/test.txt如果文件存在,则跳过执行
removesremoves /tmp/text.txt如果文件存在,则执行

示例1:chdir, 切换目录执行shell命令;

[root@jenkins-001 ~]# ansible webservers -m command -a 'chdir=/tmp pwd'
192.168.5.28 | CHANGED | rc=0 >>
/tmp

示例2:creates , 如果文件存在,则跳过执行。 如果文件不存在则执行

[root@jenkins-001 ~]# ansible webservers -m command -a 'creates=/tmp/123.txt ifconfig ens32'
192.168.5.28 | SUCCESS | rc=0 >>
skipped, since /tmp/123.txt exists

[root@jenkins-001 ~]# ansible webservers -m command -a 'creates=/tmp/456.txt ifconfig ens32'
192.168.5.28 | CHANGED | rc=0 >>
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

示例3:removes, 如果文件存在,则执行。如果文件不存在则跳过执行

[root@jenkins-001 ~]# ansible webservers -m command -a 'removes=/tmp/123.txt ifconfig ens32'
192.168.5.28 | CHANGED | rc=0 >>
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

[root@jenkins-001 ~]# ansible webservers -m command -a 'removes=/tmp/456.txt ifconfig ens32'
192.168.5.28 | SUCCESS | rc=0 >>
skipped, since /tmp/456.txt does not exist

2、常用模块-yum

功能: 软件安装

参数选项含义
name安装软件包的名称
statepresent
absent
latest
安装
删除
最新版
enablerepo通过哪个仓库获取
disablerepo不是用哪些仓库的包
exclude排除 ,升级的时候比如不升级kernel

示例1:安装vftpd软件包

[root@jenkins-001 ~]# ansible webservers -m yum -a 'name=vsftpd state=present'

验证:
[root@web-002 ~]# rpm -qa vsftpd
vsftpd-3.0.2-29.el7_9.x86_64

示例2: 删除vsftpd

[root@jenkins-001 ~]# ansible webservers -m yum -a 'name=vsftpd state=absent'

验证:
[root@web-002 ~]# rpm -qa vsftpd
[root@web-002 ~]# 

示例3: 安装httpd 服务,从epel仓库中安装(所有被控端都要有这个epel仓库)

[root@jenkins-001 ~]# ansible webservers -m yum -a 'name=httpd state=present enablerepo=epel'

示例4: 更新所有软件包,kernel* 除外,一般不会更新内核文件,因为系统中有些app可能会依赖内核的一些特性,升级后app可能会失效

[root@jenkins-001 ~]# ansible webservers -m yum -a 'name=* state=present exclude="kernel*"'

3、常用模块-copy

功能:把控制端的文件拷贝到被控端

参数选项含义
src控制端的原文件路径
dest被控端的文件路径
owner属主
group属组
mode权限
backup备份
validate验证
content

示例1:更新nfs配置

[root@jenkins-001 ~]# ansible webservers  -m copy -a 'src=./exports.j2  owner=root group=root dest=/etc/exports mode=0644 backup=yes'

示例2:往一个文件里写内容

[root@jenkins-001 ~]# ansible webservers -m copy -a 'content="123456" dest=/etc/rsync.pass owner=root group=root mode=0600 backup=yes'

示例3: 验证sudo文件配置是否正确

[root@jenkins-001 ~]# cat test.yml
- hosts: webservers
  tasks:
    - name: Copy a "sudoers" file on the remote machine for editing
      copy:
         src: /etc/sudoers
         dest: /etc/sudoers.edit
         remote_src: yes
         validate: /usr/sbin/visudo -csf %s

4、常用模块-sytemd

功能:启动服务

参数选项含义
name服务名称
statestarted
stopped
restarted
reloaded
状态
enableyes/no开机自启动
deamon_reloadyes重载整个systemd配置文件

示例1: 启动nfs服务,并设置开机自启动

[root@jenkins-001 ~]# ansible webservers -m systemd -a 'name=nfs state=started enabled=yes'

示例2: 关闭nsf服务,并关闭开机自启动

[root@jenkins-001 ~]# ansible webservers -m systemd -a 'name=nfs state=stopped enabled=no'

5、常用模块-file

功能: 创建文件、创建目录、授权

参数选项含义
path在被控端创建的路径
owner属主
group属组
mode权限
statetouch
directory
link
hard
文件
目录
软链接
硬链接
recurseyes递归授权

示例1:创建一个data目录

[root@jenkins-001 ~]#  ansible webservers -m file -a 'path=/data owner=www group=www mode="0755" recurse=yes'

示例2: 在/data 目录下创建一个文件

[root@jenkins-001 ~]# ansible webservers -m file -a 'path=/data/test.txt state=touch owner=www group=www mode="0644"'

6、常用模块-group

功能: 创建组

参数选项含义
name指定组名称
gid指定gid
statepresent
absent
创建(默认)
删除

示例1:创建组

[root@jenkins-001 ~]# ansible webservers -m group -a 'name=www gid=666 state=present'

7、常用模块-user

功能: 创建、删除用户

选项参数含义
name创建用户的名称
uid指定uid
group指定基本组
shell登录shell类型默认是/bin/bash
create_home是否创建家目录
password设置密码,需加密后的字符串,否则不生效
groups
append
admins,dev
yes
附加组
追加
state
remove
absent
yes
删除
家目录一起删除

示例1:创建www用户,指定uid 888, 基本组www

[root@jenkins-001 ~]# ansible webservers -m user -a 'name=www uid=888 group=www shell=/sbin/nologin create_home=no'

示例2: 创建db用户,基本组是root,附加组adm,sys

[root@jenkins-001 ~]# ansible webservers -m user -a 'name=db group=root groups=adm,sys append=yes shell=/bin/bash create_home=yes'

示例3: 创建用户并设置密码

[root@jenkins-001 ~]# cat t1.yml 
- hosts: webservers
  tasks:
    - name: Create New User And Set Password
      user:
        name: aaa
        password: "{{ '123' | password_hash('sha512') }}"
        shell: /bin/bash
        groups: sys,adm
        append: yes

[root@web-002 ~]# id  aaa
uid=1002(aaa) gid=1002(aaa) 组=1002(aaa),3(sys),4(adm)

示例4: 创建一个用户并生成密钥

[root@jenkins-001 ~]# ansible webservers -m user -a 'name=dev generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa'

8、常用模块-mount

功能:挂载文件系统

参数选项含义
src源设备路径或者网络地址
path挂载至本地路径下
fstypenfs
iso9660
ext4
xfs
设备类型
optsro,noauto挂载选项
statepresent
absent
mounted
unmounted
永久挂载但没有立即生效
卸载 临时+永久卸载
临时挂载
临时卸载

示例1: 将192.168.5.1的/data目录挂载到192.168.5.2的/opt目录下

[root@jenkins-001 ~]# ansible 192.168.5.2 -m mount -a 'src=192.168.5.1:/data path=/top fstype=nfs opts=defaulsts state=present' 

9、常用模块-crond

功能: 定时任务

参数选项含义
name描述信息,描述脚本的作用
minute分钟
hour小时
weekday
user执行定时用户,不写则默认执行用户
job任务

示例1: 每天凌晨3点执行/bin/bash /scripts/backup.sh &> /dev/null

[root@jenkins-001 ~]# ansible webservers -m cron -a 'name="backup data scripts" hour=03 minute=00 job="/bin/bash /scripts/backup.sh  &> /dev/null"'

示例2: 删除定时任务

[root@jenkins-001 ~]# ansible webservers -m cron -a 'name="backup data scripts" state=absent'

示例3: 注释定时任务

[root@jenkins-001 ~]# ansible webservers -m cron -a 'name="backup data scripts" disabled=yes
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值