接上回,继续Ansible分享。
这回解释Ansible服务配置,Ansible命令参数以及主机清单(Inventory)的配置。
Ansible配置
Ansible安装后,已经默认设置了一些参数,如主机清单文件位置,远程用户,远程端口,日志存放路径。我们可能需要修改一些参数,可以通过修改ansible配置文件来实现。
Ansible配置的文件路径:/etc/ansible/ansible.cfg,文件格式为ini。
下面贴出该文件中部分配置参数并释义(大多数已经词达意了):
[defaults]
# some basic default values...
#inventory = /etc/ansible/hosts # 主机清单默认配置文件路径
#library = /usr/share/my_modules/ # Ansible模块位置
#remote_tmp = ~/.ansible/tmp # Managed Node临时状态文件
#local_tmp = ~/.ansible/tmp # Control Node临时状态文件
#sudo_user = root
#ask_sudo_pass = True
#ask_pass = True # 如果主机清单没有配置远程密码,则执行ansible命令会询问密码
# uncomment this to disable SSH key host checking
#host_key_checking = False # 检查主机密钥例:如果执行ansible命令遇到如下情况,需要将取消host_key_checking参数的注释并将值设置为False,因为连接主机时,默认会检查主机的密钥,而我们可能只是单纯的使用用户密码进行连接:
172.17.173.164 | FAILED! => {
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."
}主机清单配置
默认的主机清单配置文件位于/etc/ansible/hosts,但是也可以自定义,自定义的主机清单文件使用Ansible命令时需要指定:
ansible node -m ping -i <your_hosts_path>主机清单文件的配置支持ini和yaml两种格式,简约易读的缘故一般使用ini格式。
主机清单的配置一般以主机为单位,配置远程主机的IP或本机可解析的域名,可以为多个主机分组,组可以拥有自己的变量参数,组也可以嵌套。
INI格式配置示例:
a.example.com # Managed Node的域名
192.168.0.1 # Managed Node的IP
[webservers] # 组,包含多个主机
web.server01.com ansible_user_pass=xxx # 主机独有的变量参数
web.server02.com ansible_user_pass=xxx
[webservers:vars] # 组的变量参数,组中包含的主机共用
ansible_ssh_user=admin
[dbservers]
db.server01.com
[allserver:children] # 组再组成组
webservers
dbserversansible <hosts>命令执行,<hosts>格式允许:
all或*,所有主机
ip或可解析的域名,多个用“:”分割
组名,包括嵌套组
可解析的域名
Ansible命令参数配置
使用ansible -h可以查看ansible命令参数,下面找几个比较常用的参数罗列:
[--version] # Ansible版本
[-v] # verbost
[-b] # sudo运行,可以以sudo权限运行
[--become-method BECOME_METHOD]
[--become-user BECOME_USER] [-K] # 提示输入sudo密码,当不是NOPASSWD模式时使用
[-i INVENTORY] # 指定hosts文件路径,默认default=/etc/ansible/hosts
[--list-hosts] # 打印有主机列表[-o] # 压缩输出,摘要输出
[-t TREE] [-k] # 提示输入ssh登录密码。当使用密码验证的时候用
[--private-key PRIVATE_KEY_FILE] # ssh连接的私钥文件位置
[-u REMOTE_USER] # ssh连接的用户名,默认用root,ansible.cfg中可以配置
[-c CONNECTION] # 连接类型(default=smart),例如还有local
[-T TIMEOUT] # 超时限制
[--ask-vault-pass | --vault-password-file VAULT_PASSWORD_FILES]
[-f FORKS] # fork多少个进程并发处理,默认为5个
[-M MODULE_PATH] # 模块的执行文件位置,一般用于扩展模块
[--playbook-dir BASEDIR]
[-a MODULE_ARGS] # 模块的参数
[-m MODULE_NAME] # 要执行的模块,默认为command结束语
该篇可以作为Ansible的设置和配置资料查询。
在此之前,介绍的Ansible使用都是单行命令形式的,但是在真正的生产使用过程中,我们不太可能每次都手动输入命令,我们最可能使用到的其实是Ansible Playbook这个功能,但是放下回介绍吧。