前面我们学会了如何安装Ansible管理节点,这里我们来看看如何配置Ansible。有三种方式可以修改Ansible配置:
- 配置文件,Ansible默认的配置文件是/etc/ansible/ansible.cfg文件;
- 环境变量,如设置环境变量ANSIBLE_REMOTE_USER=admin表示使用admin登录被管理节点。环境变量设置的参数会覆盖Ansible配置文件中对应的参数;
- 命令行参数,如ansible命令的“-i”指定主机清单文件,“-m”指定执行的模块,“-a”指定传递给模块的参数。命令行设置的参数会覆盖配置文件盒环境变量中对应的参数。
通过配置文件配置Ansible
Ansible配置文件的文件名为ansible.cfg,通过配置文件设置的参数应该是对系统中大多数用户都有效的参数。Ansible按下面的顺序搜索配置文件,第一个搜索到的配置文件起作用,后面的被忽略: - ANSIBLE_CONFIG (如果设置了该环境变量) - ansible.cfg (当前目录) - ~/.ansible.cfg (当前用户的home目录) - /etc/ansible/ansible.cfg
ansible.cfg是一个ini格式的文件,“#”和“;”开头的行都被当做注释,然而在行尾注释的话只能使用“;”。 如果其他用户对当前目录有写的权限,使用当前目录的ansible.cfg配置文件有安全风险,所以Ansible不会自动加载该配置文件,如果必须使用的话,可以使用ANSIBLE_CONFIG环境变量指定使用该配置文件。 Ansible配置参数参考Ansible官方文档 Docs » Ansible Configuration Settings » Common Options。
通过环境变量配置Ansible
部分配置参数可以通过环境变量设置,比如DEFAULT_SUDO_USER修改sudo的用户,DEFAULT_ASK_SUDO_PASS设置使用sudo命令时是否提示输入密码。更多环境变量参数参考Ansible官方文档 Docs » Ansible Configuration Settings » Environment Variables。
ansible.cfg配置项说明
ansible.cfg配置文件通过分块来定义各项参数,以[分块名称]表示,常用的分块有: - [defaults]:定义一些通用的参数; - [privilege_escalation]:定义一些提升权限的参数; - [ssh_connection]:定义SSH的配置参数; - [galaxy]:定义role相关的参数; - [inventory]:定义主机清单的参数; - [paramiko_connection]:定义Python的paramiko模块相关的参数; - [persistent_connection]:定义持久化连接相关的参数; - [jinja2]:定义jinja2模板引擎相关的参数; - [selinux]:定义SELinux相关参数。
ansible-config命令查看配置参数
可以使用Ansible自带的ansible-config命令方便地查看当前生效的配置参数以及配置参数的说明。
语法
ansible-config [view|dump|list] [--help] [options] [ansible.cfg]
描述
查看Ansible的配置参数的工具。
参数
- –version:显示软件版本。
- -c , –config :指定配置文件路径。
- -h, –help:查看帮助信息。
- -v, –verbose:输出调试信息,-vvv输出更多信息,-vvvv输出连接调试信息。
动作
- list:列出所有配置参数并且显示参数的默认值、描述、值的类型和在环境变量、配置文件(ini和yaml)中如何设置。
- dump:输出当前的配置参数,如果指定了其他配置文件则同时读取该配置文件中的参数。
- view:输出当前使用的配置文件的内容,添加“-v”选项也输出当前使用的配置文件路径。
示例
1)ansible-config list的用法。list其实借助了less命令,可以使用“/string”搜索“string”,使用h、j、k、l等移动光标,还可以使用h查看帮助。
[admin@ityoudao ~]$ ansible-config list
ACTION_WARNINGS:
default: true
description: [By default Ansible will issue a warning when received from a task
action (module or action plugin), These warnings can be silenced by adjusting
this setting to False.]
env:
- {name: ANSIBLE_ACTION_WARNINGS}
ini:
- {key: action_warnings, section: defaults}
name: Toggle action warnings
type: boolean
version_added: '2.5'
...
2)ansible-config dump的用法:输出默认ansible.cfg配置文件中的参数以及未设置的参数的默认值。
[admin@ityoudao ~]$ ansible-config dump
ACTION_WARNINGS(default) = True
AGNOSTIC_BECOME_PROMPT(default) = True
ALLOW_WORLD_READABLE_TMPFILES(default) = False
ANSIBLE_CONNECTION_PATH(default) = None
ANSIBLE_COW_PATH(default) = None
ANSIBLE_COW_SELECTION(default) = default
...
3)ansible-config dump添加“–only-changed”只输出修改了的参数,添加“-c /somepath/ansible.cfg”同时读取该配置文件中的参数。
[admin@ityoudao ~]$ ansible-config dump --only-changed -c /u01/admin/ansible.cfg
DEFAULT_REMOTE_USER(/u01/admin/ansible.cfg) = admin
HOST_KEY_CHECKING(/u01/admin/ansible.cfg) = False
4)ansible-config view的用法。
[admin@ityoudao ~]$ ansible-config view -v
Using /home/admin/ansible.cfg as config file
[defaults]
ANSIBLE_REMOTE_USER=admin