一个专注于IT互联网运维的技术博客

如何配置Ansible?Ansible三种配置方法详解

2018.12.30

前面我们学会了如何安装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
发表评论