自动化工具:ansible(二)

废话不多说,下面详细介绍ansible常用模块。

1.Ping模块

 检测机器的连通性,回复pong,则代表可以ping通。

 [root@wanglei ansible]# ansible test -m ping

192.168.211.151 | SUCCESS => {

      "changed": false, 

      "ping": "pong"

}

2.yum模块

   这个模块是RedHat / CentOS作为远端节点的OS的时候,用的最多的。Yum是啥就不多说了,RedHat / CentOS包管理工具 ,参数选项有:

name: 软件包的名字,可以带上版本号,可以是urlrpm包的路径

state: present(默认,为安装),latest(最新版本),absent(删除卸载)

[root@wanglei ansible]# ansible test -m yum -a "name=httpd,state=present"

[root@wanglei ansible]# ansible test -m yum -a "name=http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.12.1-1.el7.ngx.x86_64.rpm,state=present"

3.copy模块

  将控制主机的文件复制到远程主机,参数选项有:

  src: 控制主机文件的位置;

  dest:远程主机上面的位置;

  owner:远程主机该文件的属主;

  group:远程主机该文件的属组;

  mode:文件权限。

[root@wanglei ~]# ansible test -m copy -a "src=/root/wanglei.txt dest=/root/ owner=wanglei group=wanglei mode=755"

192.168.211.151 | SUCCESS => {

      "changed": true, 

      "checksum": "5292b183afeca75e5c0e2aeda3868194b0f6c79f", 

      "dest": "/root/wanglei.txt", 

      "gid": 1000, 

      "group": "wanglei", 

      "md5sum": "fc9b1b48464a6ab904d5df2008c92278", 

      "mode": "0755", 

      "owner": "wanglei", 

      "size": 34, 

      "src": "/root/.ansible/tmp/ansible-tmp-1545459856.26-236770962991326/sourc  e", 

      "state": "file", 

      "uid": 1000

}

4.usergroup模块

user模块是请求的是useradd, userdel, usermod三个指令,goup模块请求的是groupadd, groupdel, groupmod 三个指令。

user模块:

– name:指定用户名。 – createhome:是否创建家目录 yes|no

– remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r –     -- state:是创建还是删除。(presentabsent 

– groups:指定用户的属组。 – uid:指定用的uid 

[root@wanglei ~]# ansible test -m user -a "name=littleboy state=present createhome=yes"

192.168.211.151 | SUCCESS => {

    "changed": true, 

    "comment": "", 

    "createhome": true, 

    "group": 1001, 

    "home": "/home/littleboy", 

    "name": "littleboy", 

    "shell": "/bin/bash", 

    "state": "present", 

    "system": false, 

    "uid": 1001

}

group模块:

– gid:指定用的gid

 – name:指定用户名。

 – state:是创建还是删除。(presentabsent 

[root@wanglei ~]# ansible test -m group -a "name=littleboy state=present gid=2000"

192.168.211.151 | SUCCESS => {

    "changed": true, 

    "gid": 2000, 

    "name": "littleboy", 

    "state": "present", 

    "system": false

}

5.service 模块

– name:必选项,服务名称

– state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded

– enabled:是否开机启动 yes|no, 要求状态(state)和启用(enabled)中至少有一个。

[root@wanglei ~]# ansible test -m service -a "name=firewalld state=stopped enabled=no"

192.168.211.151 | SUCCESS => {

    "changed": true, 

    "enabled": false, 

    "name": "firewalld", 

    "state": "stopped", 

    "status": {

        "ActiveEnterTimestamp": "Sat 2018-12-22 14:46:38 CST",

        ....

}

6.file模块

 file模块主要用于远程主机上的文件操作,具体参数有:

– group:定义文件/目录的属组  – mode:定义文件/目录的权限 – owner:定义文件/目录的属主 – path:必选项,定义文件/目录的路径 

– state 

   directory:如果目录不存在,创建目录 

   file:即使文件不存在,也不会被创建 

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

   absent:删除目录、文件或者取消链接文件

 

创建文件,并更改文件所有权,组和模式:

[root@wanglei ~]# ansible test -m file -a "path=/root/boy.txt state=touch owner=wanglei group=wanglei mode=755"

192.168.211.151 | SUCCESS => {

    "changed": true, 

    "dest": "/root/boy.txt", 

    "gid": 1000, 

    "group": "wanglei", 

    "mode": "0755", 

    "owner": "wanglei", 

    "size": 0, 

    "state": "file", 

    "uid": 1000

}

7.unarchive模块

用于解压文件,模块包含如下选项:

– copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,则要求目标主机上压缩包必须存在。 

– dest:远程主机上的一个路径,即文件解压的绝对路径。 

– group:解压后的目录或文件的属组 

– mode:解压后文件的权限 

– src:如果copyyes,则需要指定压缩文件的源路径 

– owner:解压后文件或目录的属主

8.command 模块和shell

两者的区别就是:shell支持正则表达式,cmmand不支持正则表达式。

上节举完例子,这里不赘述。

9.fetch模块

 copy模块相反,将远程主机的文件复制到管理主机,主要参数:

– src:远程系统上要获取的文件。 这必须是一个文件,而不是一个目录。 后续版本可能会支持递归提取。 

– dest:保存文件的目录

[root@wanglei ~]# ansible test -m fetch -a "src=/root/http.conf dest=/tmp"

192.168.211.151 | SUCCESS => {

    "changed": true, 

    "checksum": "316782077c8f9f17a0e0430ea0e602a6bc775a63", 

    "dest": "/tmp/192.168.211.151/root/http.conf", 

    "md5sum": "02c566e1bbc62edce04339c6757a3f35", 

    "remote_checksum": "316782077c8f9f17a0e0430ea0e602a6bc775a63", 

    "remote_md5sum": null

}

10.template模块

  template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。主要参数:

– src:在ansible管理主机上的Jinja2格式化模板的路径。

– dest:远程机器上的位置。

– owner:目标文件属主

– group:目标文件属组 

– mode:目标文件的权限模式

[root@wanglei ~]# ansible test -m template -a "src=/root/wanglei.j2 dest=/root/wanglei.conf owner=wanglei group=wanglei mode=742"

192.168.211.151 | SUCCESS => {

    "changed": true, 

    "checksum": "5292b183afeca75e5c0e2aeda3868194b0f6c79f", 

    "dest": "/root/wanglei.conf", 

    "gid": 1000, 

    "group": "wanglei", 

    "md5sum": "fc9b1b48464a6ab904d5df2008c92278", 

    "mode": "0742", 

    "owner": "wanglei", 

    "size": 34, 

    "src": "/root/.ansible/tmp/ansible-tmp-1545463341.52-115781869705696/source", 

    "state": "file", 

    "uid": 1000

}

11.synchronize模块

– src 要同步到目的地的源主机上的路径.

– dest:目的地主机上将与源同步的路径.

– mode: pushpull

[root@wanglei ~]# ansible test -m synchronize -a "src=/etc/yum.repos.d/iso.repo dest=/root/ mode=pull"

192.168.211.151 | SUCCESS => {

    "changed": true, 

    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh=/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null --out-format=<<CHANGED>>%i %n%L 192.168.211.151:/etc/yum.repos.d/iso.repo /root/", 

    "msg": ">f+++++++++ iso.repo\n", 

    "rc": 0, 

    "stdout_lines": [

        ">f+++++++++ iso.repo"

    ]

}

总结,ansible常用的模块大概就是这些,从下一节开始将要介绍ansible的playbook的编写。

猜你喜欢

转载自blog.csdn.net/weixin_38753143/article/details/95563067