一、ansible主机和组的配置
1、简单的主机和组
ansible的配置文件位于/etc/ansible目录下,主要有ansible.cfg、hosts文件。本节重点介绍主机与组定义文件/etc/ansible/hosts.
/etc/ansible/hosts最简单的格式如下:
www.ixdba.net
[webservers]
ixdba1.net
ixdba2.net
[dbservers]
db.ixdba1.net
db.ixdba2.net
中括号中的名字代表组名,可以根据需求将庞大的主机分成具有标识的组,如上面分了两个组webservers和dbservers组;
主机(hosts)部分可以使用域名、主机名、IP地址表示;当然使用前两者时,也需要主机能反解析到相应的IP地址,一般此类配置中多使用IP地址;
未分组的机器需保留在hosts的顶部。
2、指定主机范围
可在/etc/ansible/hosts文件中,指定主机的范围,示例如下:
[web]
www[01:50].ixdba.net
[db]
db[a:f].ixdba.ent
3、主机变量
以下是Hosts部分中经常用到的变量部分:
ansible_ssh_host #用于指定被管理的主机的真实IP
ansible_ssh_port #用于指定连接到被管理主机的ssh端口号,默认是22
ansible_ssh_user #ssh连接时默认使用的用户名
ansible_ssh_pass #ssh连接时的密码
ansible_sudo_pass #使用sudo连接用户时的密码
ansible_sudo_exec #如果sudo命令不在默认路径,需要指定sudo命令路径
ansible_ssh_private_key_file #秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项
ansible_shell_type #目标系统的shell的类型,默认sh
ansible_connection #SSH 连接的类型:local , ssh , paramiko,在ansible1.2之前默认是paramiko ,后来智能选择,优先使用基于ControlPersist 的ssh
ansible_python_interpreter #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl的路径
ansible_*_interpreter #其他解释器路径,用法与ansible_python_interpreter类似,这里"*"可以是ruby或perl等其它语言
示例:
[web]
192.168.78.11 http_port=80
192.168.78.12 http_port=80
还可以改成这样:
[web]
192.168.78.11
192.168.78.12
[web:vars]
http_port=80
[webhost]
host1
host2
[dbhost]
host2
host3
[allhosts:children]
webhost
Dbhost
主机组可以包含主机组,主机的变量可以通过继承关系,继承到最高等级的组的变量。定义主机组之间的继承关系我们使用":children"来表示
二、ansible.cfg与默认配置
/etc/ansible/ansible.cfg文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码、是否开启sudo认证、action_plugins插件的位置、hosts主机组的位置、是否开启log功能、默认端口、key文件位置等等。
#inventory = /etc/ansible/hosts 该参数表示资源清单inventory文件的位置,资源清单就是一些Ansible需要连接管理的主机列表
#library = /usr/share/my_modules/ Ansible的操作动作,无论是本地或远程,都使用一小段代码来执行,这小段代码称为模块,这个library参数就是指向存放Ansible模块的目录
#module_utils= /usr/share/my_module_utils/
#remote_tmp= ~/.ansible/tmp指定远程执行的路径
#local_tmp= ~/.ansible/tmpansible管理节点的执行路径
#forks = 5 forks 设置默认情况下Ansible最多能有多少个进程同时工作,默认设置最多5个进程并行处理。具体需要设置多少个,可以根据控制主机的性能和被管理节点的数量来确定。
#poll_interval= 15 轮询间隔
#sudo_user= root sudo使用的默认用户,默认是root
#ask_sudo_pass= True 是否需要用户输入sudo密码
#ask_pass= True 是否需要用户输入连接密码
#remote_port= 22 这是指定连接对端节点的管理端口,默认是22,除非设置了特殊的SSH端口,不然这个参数一般是不需要修改的
#module_lang= C 这是默认模块和系统之间通信的计算机语言,默认为'C'语言.
host_key_checking= False 跳过ssh首次连接提示验证部分,False表示跳过。
#timeout = 10 连接超时时间
#module_name= command 指定ansible默认的执行模块
#nocolor= 1 默认ansible会为输出结果加上颜色,用来更好的区分状态信息和失败信息.如果你想关闭这一功能,可以把'nocolor'设置为'1':
#private_key_file=/path/to/file.pem在使用ssh公钥私钥登录系统时候,使用的密钥路径。