Ansible的使用

来源:互联网 发布:ubuntu jira 汉化 编辑:程序博客网 时间:2024/06/05 22:46

上篇博文讲述了Ansible的安装,本篇讲讲如何使用。

1.配置

修改/etc/ansible/hosts文件为
[root@localhost ansible]# cat hosts
[webservers]
node1.a.com
node2.a.com

hosts文件定义了所能识别的所有主机,其内容:
1)可以将所有主机写入此文件,那么此后所做的操作就会影响所有写入的主机;
2)可以以[主机组名]的方式定义属于同一组的所有主机,如定义[webservers]段,将所有的web主机的IP或者主机名写入段中,此后就可以用ansible实施诸如servicehttpdstatus等仅对web主机所做的操作了,而其他主机则不会受影响,当然一个组中的主机也可以在其他组中出现,不一定每个组中的主机都不相同;
3)可以用通配符的方式定义,如node[1:3].a.com,表示定义了node1.a.com node2..a.com和node3.a.com三台主机;
4)可以直接写入主机IP,也可以写入主机名,但是必须保证能解析这些主机名;

2.测试ansible能否执行

有个前提,上面的hosts文件的主机以及配置完毕,我这里有14台服务器

----------------------------------------------------------------------

如查看所有主机时间是否一致:
[root@localhost ~]# ansible all -a 'date'
192.168.56.30 | success | rc=0 >>
Mon Jun 26 21:08:34 CST 2017


192.168.56.34 | success | rc=0 >>
Mon Jun 26 21:08:34 CST 2017


192.168.56.32 | success | rc=0 >>
Mon Jun 26 21:08:34 CST 2017


192.168.56.31 | success | rc=0 >>
Mon Jun 26 21:06:36 CST 2017


192.168.56.35 | success | rc=0 >>
Mon Jun 26 21:06:36 CST 2017


192.168.56.33 | success | rc=0 >>
Mon Jun 26 21:06:38 CST 2017


192.168.56.70 | success | rc=0 >>
Mon Jun 26 21:03:35 CST 2017


192.168.56.74 | success | rc=0 >>
Mon Jun 26 21:03:35 CST 2017


192.168.56.76 | success | rc=0 >>
Mon Jun 26 21:03:35 CST 2017


192.168.56.72 | success | rc=0 >>
Mon Jun 26 21:03:35 CST 2017


192.168.56.75 | success | rc=0 >>
Mon Jun 26 21:04:57 CST 2017


192.168.56.71 | success | rc=0 >>
Mon Jun 26 21:04:57 CST 2017


192.168.56.73 | success | rc=0 >>
Mon Jun 26 21:04:58 CST 2017


192.168.56.77 | success | rc=0 >>
Mon Jun 26 21:04:58 CST 2017

-----------------------------------------------------------------

3.ansible常用模块

ansible 默认提供了很多模块来供我们使用。在 Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc  -s  模块名  又可以查看该模块有哪些参数可以使用。

 下面介绍比较常用的几个模块:
1)copy模块
2)file模块
3)cron模块
4)group模块
5)user模块
6)yum模块
7)service模块
8)script模块
9)ping模块
10)command模块
11)raw模块
12)get_url模块
13) synchronize模块

看看这12个常用模块,猜猜上面查看时间使用了什么模块?没错,command模块。

模块比较多,就不一一举例了,告诉下使用方法吧。

基本语法
语法格式:ansible  <host-pattern>   [-f forks]    [-m module_name]   [-a args]
其中:
host-pattern:对哪些主机操作,可以是所有主机all或者定义的组;
-f forks:并行级别,即每次对几个主机操作,默认为5个,主机量多时可以调整该值;
-m module_name:指定模块名称;默认模块为command,为-m command时可以省略不写,指的是让被控主机执行指定的命令。


比如copy模块,现在我要将一台主机的/etc/yum.repos.d/CentOS-Media.repo, 这个文件copy到所有主机上。

ansible all -m copy  -a 'src=/etc/yum.repos.d/CentOS-Media.repo dest=/etc/yum.repos.d/'
192.168.56.30 | success >> {
    "changed": true, 
    "dest": "/etc/yum.repos.d/CentOS-Media.repo", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "fc9aa03d52c356dbf9e14eca3f4b768c", 
    "mode": "0644", 
    "owner": "root", 
    "secontext": "unconfined_u:object_r:etc_t:s0", 
    "size": 664, 
    "src": "/root/.ansible/tmp/ansible-tmp-1498482992.32-210478944299796/source", 
    "state": "file", 
    "uid": 0
}

。。。。。。。。。。。。。。。。。。


模块使用的没有问题之后,我们后续在讲到ansible-playbook , 干嘛用的?请看下集分解。











原创粉丝点击