ansible常见模块

Command模块

在远程主机执行命令,默认模块,可忽略-m选项
在所有主机上执行查看data目录下的文件

ansible all -m command -a "ls /data"

等同于这个写法,逻辑上是先切换到data目录在执行ls查看当前目录

ansible all -m command -a "chdir=/data ls"

create表示当文件存在时,不执行后面的下一条命令,反之则执行

ansible all -m command -a "creates=/etc/fstab  ls /data"

此命令不支持 $VARNAME < > | ; & 等,用shell模块实现

shell模块

和command相似,用shell执行命令
用shell指令执行所有设备查看hostname

ansible all -m shell -a 'echo $HOSTNAME'

因为shell功能比command强大,我们可以在配置文件里改默认模块为shell

vim /etc/ansible/ansible.cfg
module_name = shell

Script模块

在远程主机上运行ansible服务器上的脚本
在所有主机上执行本机的test.sh脚本

ansible all -m script -a '/root/test.sh'

COPY模块

从主控端复制文件到远程主机
把本机的fstab文件复制到websrcs组里的主机的/data目录下

ansible websrvs -m copy -a 'src=/etc/fstab dest=/data/'

把本机的passwd复制到websrvs组里,修改文件权限为600,所有者为li,所属组为bin,并在覆盖前先备份一份

ansible websrvs -m copy -a 'src=/etc/passwd dest=/data/passwd3 mode=600 owner=li group=bin backup=yes'

指定内容,直接生成目标文件

ansible all srv -m copy -a “content=‘test content\n’ dest=/tmp/f1.txt”

Fetch模块

从远程主机提取文件至主控端,copy相反,目前不支持目录
把其他远程主机的passwd文件拷贝到本机的/data目录下

ansible all -m fetch -a 'src=/etc/passwd dest=/data/'

File模块

设置文件属性
修改websrvs组的主机中/data/fstab的所属者为li,权限改为700

ansible websrvs -m file -a 'path=/data/fstab owner=li mode=700'

websrvs组的主机中/data/fstab创建软链接,名字叫fstab.link

ansible websrvs -m file -a 'src=/data/fstab path=/data/fstab.link state=link'

websrvs组的主机生成空文件,文件名为f1.txt

ansible websrvs -m file -a 'path=/data/f1.txt state=touch'

删除f1.txt

ansible websrvs -m file -a 'path=/data/f1.txt state=absent'

unarchive模块

解包解压缩,有两种用法
1、将ansible主机上的压缩包在本地解压缩后传到远程主机上,设置copy=yes.
2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no

常见参数:
copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件
src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限

把本地的压缩文件解压缩到websrvs组里的data目录下,所有者改成li,权限改成700

ansible websrvs -m unarchive -a 'src=/data/sysconfig.tar.gz dest=/data/ owner=li mode=700'

压缩包在websrvs组本地时的压缩方法,记得加copy=no

ansible websrvs -m unarchive -a 'src=/data/sysconfig.tar.gz dest=/data/ copy=no'

Archive模块

打包压缩
压缩远程主机的sysconfig文件,压缩到/data目录下命名为sysconfig.tar.bz2,格式为BZ2,所有者为li,权限是0777

ansible all -m archive -a 'path=/etc/sysconfig dest=/data/sysconfig.tar.bz2 format=bz2 owner=li mode=0777'

Hostname模块

管理主机名
把远程主机150的主机名改成centos7-2

ansible 192.168.160.150 -m hostname -a 'name=centos7-2'

Cron模块

计划任务
每五分钟向172.16.0.1同步一次时间,计划任务命名为Synctime

ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.16.0.1 &>/dev/null' name=Synctime"

禁用计划任务

ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.16.0.1 &>/dev/null' name=Synctime disable=yes"

删除计划任务

ansible websrv -m cron -a ‘state=absent name=Synctime’

Yum模块

管理安装包
yum安装httpd

ansible all -m yum -a 'name=httpd'

yum移除httpd

ansible all -m yum -a 'name=httpd state=absent'

Service模块

管理服务
关闭httpd服务

ansible all -m service -a 'name=httpd state=stopped'

开启httpd服务,并设置开机启动

ansible all -m service -a 'name=httpd state=started enabled=yes'

重启httpd服务

ansible all -m service -a 'name=httpd state=restarted'

User模块

管理用户
创建用户mysql,账号为系统账号,家目录为/data/mysql,shell类型是/bin/false

ansible all -m user -a 'name=mysql system=yes home=/data/mysql shell=/bin/false'

创建用户mysql2,账号为系统账号,家目录为/data/mysql2,shell类型是/bin/false,但是不生成家目录文件

ansible all -m user -a 'name=mysql2 system=yes home=/data/mysql2 shell=/bin/false create_home=no'

删除用户mysql,删除用户的同时删除家目录

ansible all -m user -a 'name=mysql state=absent remove=yes'

Group模块

管理组
创建组,名为testgroup,组设置为系统组

ansible all -m group -a "name=testgroup system=yes“

删除testgroup组

ansible all -m group -a "name=testgroup state=absent"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值