Ansible常用模块详解

1. Ansible模块

1.1 ping模块

1.2 command

常用参数

例1:列出root用户根目录下的文件

1.3 shell模块

常用参数

例1:输出远程主机的主机名

1.4 file模块

常用参数

例1:创建目录

例2:创建文件

例3:创建软连接

1.5 copy模块

常用参数

例1:复制文件到远程主机

1.6 script模块

常用参数

例1:在远程主机上执行主控端的脚本

1.7 fetch模块

常用参数

例1:抓取远程主机日志文件到主控端

1.8 hostname模块

例1:修改远程主机192.168.146.111的主机名

1.9 yum模块

常用参数

例1:安装HTTP软件:

例2:安装从互联网上下载的一个独立的rpm包:

1.10 service模块

常用参数

例1:启动http软件并设置为开机自启动

1.11 cron模块

常用参数

例1:计划定时任务为每分钟告警

1.12 user模块

常用参数

例1:创建名为test,uid为2222的用户

1.13 group模块

常用参数

例1:创建名为test,gid为2222的用户组


1. Ansible模块

Ansible模块特别多,下面主要介绍一些常用的模块。

[root@CentOS7 ~]# ansible-doc -l | wc -l
1378

1.1 ping模块

用于检查指定节点机器是否还能连通。ping模块并不是基于ICMP协议的。

[root@CentOS7 ~]# ansible all -m ping

192.168.146.111 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

192.168.146.112 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

1.2 command

默认的模块。不会通过shell进行处理,因此如$、<、>、&、|、;等特殊符号不会被执行。

常用参数:

  • chdir参数:在运行对应命令前,会先进入chdir参数指定的目录
  • creates参数:与removes相反。当指定的文件存在时,跳过这一步,不执行对应命令;当指定的文件不存在时,执行对应的命令。
  • removes参数:与creates相反,当指定的文件不存在时,就不执行对应的命令;当指定的文件存在时,就执行对应的命令。
  • free_form参数:需要执行的指令(没有真正的参数为free_form)
  • stdin参数:将命令的stdin直接设置为指定的值。
  • warn参数:如果ansible配置文件中定义了命令警告,如果参数设置为no/False,将不会警告此命令

例1:列出root用户根目录下的文件

[root@CentOS7 ~]# ansible all -m command -a 'chdir=/root ls'

192.168.146.112 | SUCCESS | rc=0 >>
anaconda-ks.cfg
a.txt
server.sh

192.168.146.111 | SUCCESS | rc=0 >>
0a7add1d9996.tar.bz2
anaconda-ks.cfg
a.txt
server.sh

1.3 shell模块

与command类似,用shell执行命令,但shell模块支持如$、<、>、&、|、;等特殊符号。

常用参数:

  • chdir参数:在运行对应命令前,会先进入chdir参数指定的目录
  • exectualbe参数:切换shell来执行命令,需使用命令的绝对路径
  • creates参数:与removes相反。当指定的文件存在时,跳过这一步,不执行对应命令;当指定的文件不存在时,执行对应的命令。
  • removes参数:与creates相反,当指定的文件不存在时,就不执行对应的命令;当指定的文件存在时,就执行对应的命令。
  • free_form参数:需要执行的指令(没有真正的参数为free_form)
  • stdin参数:将命令的stdin直接设置为指定的值。

例1:输出远程主机的主机名

[root@CentOS7 ~]# ansible all -m shell -a 'echo $HOSTNAME'

192.168.146.112 | SUCCESS | rc=0 >>
Server2

192.168.146.111 | SUCCESS | rc=0 >>
Server1

1.4 file模块

file模块用于设定文件属性和创建文件的符号链接

常用参数:

  • state参数:state=directory:如果目录不存在,则创建目录;

                     state=file:即使文件不存在也不会被创建;

                     state=link:创建软连接;

                     state=hard:创建硬链接;

                     state=touch:如果文件不存在,则会创建一个新的文件;如果文件文件或目录已经存在,则更新其最后修改时间;

                     state=absent:删除目录、文件或删除链接文件

  • path参数:定义文件/目录的路径(必选项),也可用dest、name
  • owner参数:定义文件/目录的属主
  • group参数:定义文件/目录的属组
  • mode参数:定义文件/目录的权限
  • recurse参数:递归设置文件的属性,只对目录有效
  • src参数:要被链接的源文件路径,只应用于state=link的情况
  • dest参数:被链接到的路径,只应用于state=link的情况
  • force参数:需要在两种情况下强制创建软连接。一种是源文件不存在但之后会建立的情况下;另一种是目标链接已存在,需要先取消之前的软连接,然后创建新的软连接,有两个选项:yes、no

例1:创建目录:

[root@CentOS7 ~]# ansible all -m file -a 'path=/tmp/dir1 state=directory'

192.168.146.112 | SUCCESS => {
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0755",
    "owner": "root",
    "path": "/tmp/dir1",
    "size": 6,
    "state": "directory",
    "uid": 0
}

192.168.146.111 | SUCCESS => {
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0755",
    "owner": "root",
    "path": "/tmp/dir1",
    "size": 6,
    "state": "directory",
    "uid": 0
}

查看创建的目录:

[root@CentOS7 ~]# ansible all -m shell -a 'ls -ld /tmp/dir1'

192.168.146.112 | SUCCESS | rc=0 >>
drwxr-xr-x 2 root root 6 8月  15 09:37 /tmp/dir1

192.168.146.111 | SUCCESS | rc=0 >>
drwxr-xr-x 2 root root 6 8月  15 09:37 /tmp/dir1

例2:创建文件:

[root@CentOS7 ~]# ansible all -m file -a 'path=/tmp/file state=touch'

192.168.146.112 | SUCCESS => {
    "changed": true,
    "dest": "/tmp/file",
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "root",
    "size": 0,
    "state": "file",
    "uid": 0
}

192.168.146.111 | SUCCESS => {
    "changed": true,
    "dest": "/tmp/file",
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "root",
    "size": 0,
    "state": "file",
    "uid": 0
}

查看创建的文件:

[root@CentOS7 ~]# ansible all -m shell -a 'ls -l /tmp/file '

192.168.146.112 | SUCCESS | rc=0 >>
-rw-r--r-- 1 root root 0 8月  15 09:34 /tmp/file

192.168.146.111 | SUCCESS | rc=0 >>
-rw-r--r-- 1 root root 0 8月  15 09:34 /tmp/file

例3:创建软连接:

[root@CentOS7 ~]# ansible all -m file -a 'src=/etc/passwd dest=passwd.link state=link'

192.168.146.112 | SUCCESS => {
    "changed": true,
    "dest": "passwd.link",
    "gid": 0,
    "group": "root",
    "mode": "0777",
    "owner": "root",
    "size": 11,
    "src": "/etc/passwd",
    "state": "link",
    "uid": 0
}

192.168.146.111 | SUCCESS => {
    "changed": true,
    "dest": "passwd.link",
    "gid": 0,
    "group": "root",
    "mode": "0777",
    "owner": "root",
    "size": 11,
    "src": "/etc/passwd",
    "state": "link",
    "uid": 0
}

查看创建的软链接

[root@CentOS7 ~]# ansible all -m shell -a 'ls -l passwd.link'

192.168.146.112 | SUCCESS | rc=0 >>
lrwxrwxrwx 1 root root 11 8月  15 09:40 passwd.link -> /etc/passwd

192.168.146.111 | SUCCESS | rc=0 >
lrwxrwxrwx 1 root root 11 8月  15 09:40 passwd.link -> /etc/passwd

删除软连接:

[root@CentOS7 ~]# ansible all -m file -a 'dest=passwd.link state=absent'

192.168.146.112 | SUCCESS => {
    "changed": true,
    "path": "passwd.link",
    "state": "absent"
}

192.168.146.111 | SUCCESS => {
    "changed": true,
    "path": "passwd.link",
    "state": "absent"
}

1.5 copy模块

用来将本地文件复制到被控节点

常用参数:

  • src参数:要复制到远程住居的文件在本机的地址,可以是绝对路径或者相对路径。如果路径是一个目录,它将递归复制。在这种情况下,若使用“/”结尾,则只复制目录里的内容;如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync
  • dest参数:将源文件复制到远程主机的绝对路径。若源文件是个目录,那么目标文件也是个目录。
  • mode参数:
  • owner参数:
  • directory_mode参数:递归设定目录的权限,默认为系统默认权限
  • backup参数:在覆盖之间将源文件备份,备份文件包含时间信息,有两个选项:yes、no
  • content参数:当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。
  • backup参数:当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值yes/no。当值为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。

例1:复制文件到远程主机

[root@CentOS7 ~]# ansible 192.168.146.112 -m copy -a 'src=/root/test.sh dest=/opt/'

192.168.146.112 | SUCCESS => {
    "changed": true,
    "checksum": "5810f53a8dd7e48378290a6328ddf0ef8a822199",
    "dest": "/opt/test.sh",
    "gid": 0,
    "group": "root",
    "md5sum": "664d0430ee33458602e580520841a2d4",
    "mode": "0644",
    "o
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值