Ansible默认通过 SSH 协议管理机器,通过python脚本来实现的,所以管理机和托管机都需要安装python2.6以及更高的版本,除此之外被管理的机器不需要安装任何组件。
Ansible提供了多种安装方式,但是作为python的拥护者果断选择用命令pip install ansible来安装。当然此种安装方式虽然方便,但是在配置上有点微不足道的小麻烦,后面会介绍。
Ansible会默认假定你使用 SSH Key(我们推荐这种)但是密码也一样可以.通过在需要的地方添加 –ask-pass选项 来启用密码验证.如果使用了sudo 特性,当sudo需要密码时,也同样适当的提供了–ask-sudo-pass选项.
先简单验证下安装的Ansible,修改/etc/ansible/hosts文件,添加以下三行
执行命令:
这就是一个简单的ansible的操作过程,目的就是为了用当前用户名通过ssh协议尝试连接到3台远程机器。
如果是pip安装的ansible,没有/etc/ansible该目录,执行会 错:
大可不必担心,自己mkdir和vi一个/etc/ansible/hosts文件即可。包括涉及到ansible的配置文件等,pip安装的同学可以直接在ansible要求的目录里创建即可。
还支持切换为其他用户来ping:
Ansible是批量操作的,可同时操作属于同一个组的多台主机,组和主机的映射是通过inventory来配置的。我们把hosts文件修改的复杂一些从而来理解组和主机的概念:
[]中括 引起来的是组名,外面的是主机名或ip
从配置中可以看出以下信息:
1 存在无组织的主机,或者叫游离的主机(mail.example.com)
2 一个主机可以同时属于多个组(bar.example.com)
3 主机的SSH端口如果不是默认的22,可以通过冒 方式重新指定(foo.example.com)
4 可通过[1:50]这种方式来定义一组命名相似的主机(databases)
5 连接方式和操作用户可以直接在配置文件中指定(targets)
6 可以通过键值对的方式给主机设置变量,被后面的playbooks编排所使用(host1)
7 可以直接给组设置变量,对组内的主机批量生效(atlanta)
8 组可以继承(merge)
回头再来看inventory的配置,该配置可以被理解为ansible的主文件或者主程序,用它来定义组和主机信息比较合适,如果要把每个主机或组复杂的变量信息也维护进来可读性会很差,所以我们一般把变量配置单独已文件方式来维护,如下:
1 host_vars配置单个主机,配置文件维护在同名的文件里(mail.example.com)
2 group_vars配置组,配置文件维护在同名的文件里(webservers)
3 配置文件定义成同名的目录,在目录里再对配置做一次拆分(dbservers)
以上无论哪种方式都要保证配置文件在/etc/ansible目录下,也就是说要与inventory在一起。当然这是默认模式,可以通过-i强制指定hosts文件。
Inventory中定义了全部的组和主机名列表,但是真正编排时需要精确到具体的组或者部分主机,这就需要用到Pattern这个概念。
如果要处理全部主机,Pattern为:
all
*
我们还可以通过逻辑运算来进行过滤,例如:
webservers:dbservers:&staging:!phoenix
上例的过滤规则是:属于webservers组或dbservers组,而且要属于staging组,并且不能属于phoenix组。
也可以使用通配符:
*.example.com
或者将组看成list集合,取其中一部分主机:
Webservers[0-10]
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!