共计 11193 个字符,预计需要花费 28 分钟才能阅读完成。
Ansible 的一些的设置可以通过配置文件完成. 在大多数场景下默认的配置就能满足大多数用户的需求, 在一些特殊场景下, 用户还是需要自行修改这些配置文件
用户可以修改一下配置文件来修改设置, 他们的被读取的顺序如下:
* ANSIBLE_CONFIG (一个环境变量)* ansible.cfg (位于当前目录中)* .ansible.cfg (位于家目录中)* /etc/ansible/ansible.cfg
版本 1.5 之前的读取顺序如下:
* ansible.cfg (位于当前目录)* ANSIBLE_CONFIG (一个环境变量)* .ansible.cfg (位于家目录下)* /etc/ansible/ansible.cfg
Ansible 将会按以上顺序逐个查询这些文件, 直到找到一个为止, 并且使用第一个寻找到个配置文件的配置, 这些配置将不会被叠加.
获取最新配置文件
如果使用程序包管理器安装 ansible, 最新的 ansible.cfg 配置文件有可能出现在 /etc/ansible 下并且命名为”.rpmnew”, 也可能根据不同的更新命名为其它名称
如果你是通过 pip 或者其他方式安装, 则可能需要自行创建这个文件, 以免原配置文件被覆盖.Ansible 的默认设置将会将其覆盖
配置文件的详细参数以及取值范围请查看 `ansible.cfg <https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg>`_
环境配置
Ansible 通过环境变量的形式来进行配置. 这些设置后的环境变量将会覆盖掉所有配置文件读取的配置. 为了节省篇幅, 这些变量没有被列在这里, 详情请见源代码目录中的‘constants.py’. 相对于配置文件它门会比当作遗产系统(legacy system) 来被使用, 但是仍然有效
配置文件不同段详解
配置文件被切割成了不同段. 多数配置选项位于“general”段, 也有一些属于特定的链接类型(connection type)
通用默认段
在 [defaults] 段中, 一下选项是可以调节的:
action_plugins
“行为”是 ansible 中的一段代码, 用来激活一些事件, 例如执行一个模块, 一个模版, 等等
这是一个以开发者为中心的特性, 使得一些底层模块可以从外部不同地方加载:
action_plugins = ~/.ansible/plugins/action_plugins/:/usr/share/ansible_plugins/action_plugins
大多数用户都会使用这一特性, 详情请见 Developing Plugins .
ansible_managed
Ansible-managed 是一个字符串. 可以插入到 Ansible 配置模版系统生成的文件中. 如果你使用以下的自字符:
{{ansible_managed}}
默认设置可以哪个用户修改和修改时间:
ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}
这个设置可以告知用户,Ansible 修改了一个文件, 并且手动写入的内容可能已经被覆盖.
需要注意的是, 如果使用这一特性, 这个字符串中将包含一个日期注释, 如果日期更新, 模版系统将会在每一次报告文件修改.
ask_pass
-
这个可以控制,Ansible 剧本 playbook 是否会自动默认弹出弹出密码. 默认为 no::
-
ask_pass=True
如果使用 SSH 密钥匙做身份认证. 可能需要修改这一参数
ask_sudo_pass
类似 ask_pass, 用来控制 Ansible playbook 在执行 sudo 之前是否询问 sudo 密码. 默认为 no:
ask_sudo_pass=True
如果用户使用的系统平台开启了 sudo 密码的话, 应该开绿这一参数
bin_ansible_callbacks
New in version 1.8.
用来控制 callback 插件是否在运行 /usr/bin/ansible 的时候被加载. 这个模块将用于命令行的日志系统, 发出通知等特性. Callback 插件如果存在将会永久性的被 /usr/bin/ansible-playbook 加载, 不能被禁用:
bin_ansible_callbacks=False
1.8 版本之前,callbacks 插件不可以被 /usr/bin/ansible 加载. .. _callback_plugins:
callback_plugins
Callbacks 在 ansible 中是一段代码, 在特殊事件时将被调用. 并且允许出发通知. 这是一个以开发者为中心的特性, 可以实现对 Ansible 的底层拓展, 并且拓展模块可以位于任何位置:
callback_plugins = ~/.ansible/plugins/callback_plugins/:/usr/share/ansible_plugins/callback_plugins
大多数的用户将会用到这一特性, 详见 Developing Plugins.
command_warnings
New in version 1.8.
从 Ansible 1.8 开始, 当 shell 和命令行模块被默认模块简化的时,Ansible 将默认发出警告. 这个包含提醒使用’git’但不是通过命令行执行. 使用模块调用比冒然使用命令行调用可以使 playbook 工作更具有一致性也更加可靠同时也更加便于维护:
command_warnings = False
我们可以通过在命令行末尾添加 warn=yes 或者 warn=no 选项来控制是否开启警告提示:
- name: usage of git that could be replaced with the git module
shell: git update foo warn=yes
connection_plugins
连接插件允许拓展 ansible 拓展通讯信道, 用来传输命令或者文件. 这是一个开发者中心特性, 拓展插件可以从任何不同地方加载:
connection_plugins = ~/.ansible/plugins/connection_plugins/:/usr/share/ansible_plugins/connection_plugins
大多数用户会用到这一特性, 详见:Developing Plugins .. _deprecation_warnings:
deprecation_warnings
New in version 1.3.
允许在 ansible-playbook 输出结果中禁用“不建议使用”警告:
deprecation_warnings = True
“不建议警告”指的是使用一些在新版本中可能会被淘汰的遗留特性.
display_skipped_hosts
-
如果设置为 `False`,ansible 将不会显示任何跳过任务的状态. 默认选项是现实跳过任务的状态::
-
display_skipped_hosts=True
注意 Ansible 总是会显示任何任务的头文件, 不管这个任务被跳过与否.
error_on_undefined_vars
-
从 Ansible 1.3 开始, 这个选项将为默认, 如果所引用的变量名称错误的话, 将会导致 ansible 在执行步骤上失败::
-
error_on_undefined_vars=True
If set to False, any‘{{template_expression}}’that contains undefined variables will be rendered in a template or ansible action line exactly as written.
executable
-
这个选项可以在 sudo 环境下产生一个 shell 交互接口. 用户只在 /bin/bash 的或者 sudo 限制的一些场景中需要修改. 大部分情况下不需要修改::
-
executable = /bin/bash
filter_plugins
过滤器是一种特殊的函数, 用来拓展模版系统 .
这是一个开发者核心的特性, 允许 Ansible 从任何地方载入底层拓展模块:
filter_plugins = ~/.ansible/plugins/filter_plugins/:/usr/share/ansible_plugins/filter_plugins
Most users will not need to use this feature. See Developing Plugins for more details 大部分用户不会用到这个特性, 详见:doc:developing_plugins.
force_color
-
到没有使用 TTY 终端的时候, 这个选项当用来强制颜色模式::
-
force_color = 1
force_handlers
New in version 1.9.1.
即便这个用户崩溃, 这个选项仍可以继续运行这个用户:
force_handlers = True
The default is False, meaning that handlers will not run if a failure has occurred on a host. This can also be set per play or on the command line. See _handlers_and_failure
for more details. 如果这个选项是 False. 如果一个主机崩溃了,handlers 将不会再运行这个主机. 这个选项也可以通过命令行临时使用. 详见:doc:_handlers_and_failure.
forks
这个选项设置在与主机通信时的默认并行进程数. 从 Ansible 1.3 开始,fork 数量默认自动设置为主机数量或者潜在的主机数量, 这将直接控制有多少网络资源活着 cpu 可以被使用. 很多用户把这个设置为 50, 有些设置为 500 或者更多. 如果你有很多的主机, 高数值将会使得跨主机行为变快. 默认值比较保守:
_forks=5
gathering
1.6 版本中的新特性, 这个设置控制默认 facts 收集(远程系统变量). 默认值为’implicit’, 每一次 play,facts 都会被手机, 除非设置’gather_facts: False’. 选项‘explicit’正好相反,facts 不会被收集, 直到 play 中需要.‘smart’选项意思是, 没有 facts 的新 hosts 将不会被扫描, 但是如果同样一个主机, 在不同的 plays 里面被记录地址, 在 playbook 运行中将不会通信. 这个选项当有需求节省 fact 收集时比较有用.
hash_behaviour
Ansible 默认将会以一种特定的优先级覆盖变量, 详见:doc:playbooks_variables. 拥有更高优先级的参数将会覆盖掉其他参数
有些用户希望被 hashed 的参数(Python 中的数据结构’dictionaries’)被合并. 这个设置叫做‘merge’. 这不是一个默认设置, 而且不影响数组类型的数组. 我不建议使用这个设置除非你觉得一定需要这个设置. 官方实例中不使用这个选项:
hash_behaviour=replace
合法的值为’replace’(默认值)或者‘merge’.
hostfile
在 1.9 版本中, 这不是一个合法设置. 详见:ref:inventory.
host_key_checking
这个特性详见:doc:intro_getting_started, 在 Ansible 1.3 或更新版本中将会检测主机密钥. 如果你了解怎么使用并且希望禁用这个功能, 你可以将这个值设置为 False:
host_key_checking=True
inventory
这个事默认库文件位置, 脚本, 或者存放可通信主机的目录:
inventory = /etc/ansible/hosts
在 1.9 版本中被叫做 hostfile.
jinja2_extensions
这是一个开发者中心特性, 允许开启 Jinja2 拓展模块:
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n
如果你不太清楚这些都是啥, 还是不要改的好:)
library
这个事 Ansible 默认搜寻模块的位置:
library = /usr/share/ansible
Ansible 知道如何搜寻多个用冒号隔开的路径, 同时也会搜索在 playbook 中的“./library”.
log_path
如果出现在 ansible.cfg 文件中.Ansible 将会在选定的位置登陆执行信息. 请留意用户运行的 Ansible 对于 logfile 有权限:
log_path=/var/log/ansible.log
这个特性不是默认开启的. 如果不设置,ansible 将会吧模块加载纪录在系统日志系统中. 不包含用密码.
对于需要了解更多日志系统的企业及用户, 你也许对:doc:tower 感兴趣.
lookup_plugins
这是一个开发者中心选项, 允许模块插件在不同区域被加载:
lookup_plugins = ~/.ansible/plugins/lookup_plugins/:/usr/share/ansible_plugins/lookup_plugins
绝大部分用户将不会使用这个特性, 详见:doc:developing_plugins
module_lang
这是默认模块和系统之间通信的计算机语言, 默认为’C’语言.
module_name
这个是 /usr/bin/ansible 的默认模块名(-m). 默认是’command’模块. 之前提到过,command 模块不支持 shell 变量, 管道, 配额. 所以也许你希望把这个参数改为’shell’:
module_name = command
nocolor
默认 ansible 会为输出结果加上颜色, 用来更好的区分状态信息和失败信息. 如果你想关闭这一功能, 可以把’nocolor’设置为‘1’:
nocolor=0
nocows
默认 ansible 可以调用一些 cowsay 的特性, 使得 /usr/bin/ansible-playbook 运行起来更加愉快. 为啥呢, 因为我们相信系统应该是一 比较愉快的经历. 如果你不喜欢 cows, 你可以通通过将’nocows’设置为‘1’来禁用这一选项:
nocows=0
pattern
如果没有提供“hosts”节点, 这是 playbook 要通信的默认主机组. 默认值是对所有主机通信, 如果不想被惊吓到, 最好还是设置个个选项:
hosts=*
注意 /usr/bin/ansible 一直需要一个 host pattern, 并且不使用这个选项. 这个选项只作用于 /usr/bin/ansible-playbook.
poll_interval
对于 Ansible 中的异步任务 (详见 异步操作和轮询), 这个是设置定义, 当具体的 poll interval 没有定义时, 多少时间回查一下这些任务的状态, 默认值是一个折中选择 15 秒钟. 这个时间是个回查频率和任务完成叫回频率和当任务完成时的回转频率的这种:
poll_interval=15
private_key_file
如果你是用 pem 密钥文件而不是 SSH 客户端或秘密啊认证的话, 你可以设置这里的默认值, 来避免每一次提醒设置密钥文件位置 “–ansible-private-keyfile“:
private_key_file=/path/to/file.pem
remote_port
这个设置是你系统默认的远程 SSH 端口, 如果不指定, 默认为 22 号端口:
remote_port = 22
remote_tmp
Ansible 通过远程传输模块到远程主机, 然后远程执行, 执行后在清理现场. 在有些场景下, 你也许想使用默认路径希望像更换补丁一样使用, 这时候你可以使用这个选项.:
remote_tmp = $HOME/.ansible/tmp
默认路径是在用户家目录下属的目录.Ansible 会在这个目录中使用一个随机的文件夹名称.
remote_user
这是个 ansible 使用 /usr/bin/ansible-playbook 链接的默认用户名. 注意如果不指定,/usr/bin/ansible 默认使用当前用户名称:
remote_user = root
roles_path
roles 路径指的是’roles/’下的额外目录, 用于 playbook 搜索 Ansible roles. 比如, 如果我们有个用于 common roles 源代码控制仓库和一个不同的 playbooks 仓库, 你也许会建立一个惯例去在 /opt/mysite/roles 里面查找 roles.:
roles_path = /opt/mysite/roles
多余的路径可以用冒号分隔, 类似于其他 path 字符串:
roles_path = /opt/mysite/roles
:/opt/othersite/roles
Roles 将会在 playbook 目录中开始搜索. 如果 role 没有找到, 这个参数指定了其它可能的搜索路径.
sudo_exe
如果在其他远程主机上使用另一种方式执行 sudo 草做, sudo 程序的路径可以用这个参数更换, 使用命令行标签来拟合标准 sudo:
sudo_exe=sudo
sudo_flags
当使用 sudo 支持的时候, 传递给 sudo 而外的标签. 默认值为”-H”, 意思是保留原用户的环境. 在有些场景下也许需要添加或者删除 标签, 大多数用户不需要修改这个选项:
sudo_flags=-H
sudo_user
这个是 sudo 使用的默认用户, 如果 “–sudo-user“ 没有特指或者’sudo_user’在 Ansible playbooks 中没有特指, 在大多数的逻辑中 默认为:‘root’
sudo_user=root
system_warnings
New in version 1.6.
允许禁用系统运行 ansible 相关的潜在问题警告(不包括操作主机):
system_warnings = True
这个包括第三方库或者一些需要解决问题的警告.
timeout
这个事默认 SSH 链接尝试超市时间:
timeout = 10
transport
如果”-c <transport_name>”选项没有在使用 /usr/bin/ansible 或者 /usr/bin/ansible-playbook 特指的话, 这个参数提供了默认通信机制. 默认 值为’smart’, 如果本地系统支持 ControlPersist 技术的话, 将会使用(基于 OpenSSH)‘ssh’, 如果不支持讲使用‘paramiko’. 其他传输选项包括‘local’,‘chroot’,’jail’等等.
用户通常可以这个设置为‘smart’, 让 playbook 在需要的条件自己选择‘connectin:’参数.
vars_plugins
这是一个开发者中心选项, 允许底层拓展模块从任何地方加载:
vars_plugins = ~/.ansible/plugins/vars_plugins/:/usr/share/ansible_plugins/vars_plugins
大部分的用户不会用到这个特性, 详见:doc:developing_plugins
vault_password_file
New in version 1.7.
这个用来设置密码文件, 也可以通过命令行指定 “–vault-password-file“:
vault_password_file = /path/to/vault_password_file
在 1.7 版本中, 这个文件也可以称为一个脚本的形式. 如果你使用脚本而不是单纯文件的话, 请确保它可以执行并且密码可以在标准输出上打印出来. 如果你的脚本需要提示请求数据, 请求将会发到标准错误输出中.
Paramiko Specific Settings
Paramiko 是商业版 linux 6 的默认 SSH 链接. 但在其他平台上不是默认使用的. 请在 [paramiko] 头文件下激活它.
record_host_keys
默认设置会记录并验证通过在用户 hostfile 中新发现的的主机(如果 host key checking 被激活的话). 这个选项在有很多主机的时候将会性能很差. 在 这种情况下, 建议使用 SSH 传输代替. 当设置为 False 时, 性能将会提升, 在 hostkey checking 被禁用时候, 建议使用.:
record_host_keys=True
OpenSSH Specific Settings
在 [ssh_connection] 头文件之下, 用来调整 SSH 的通信连接.OpenSSH 是 Ansible 在操作系统上默认的通讯连接, 对于支持 ControlPersist 足够新了.(意思除了 Enterprise linux 6 版以及更早的系统外的所有的操作系统).
ssh_args
如果设置了的话, 这个选项将会传递一组选项给 Ansible 然不是使用以前的默认值:
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
用户可以提高 ControlPersist 值来提高性能.30 分钟通常比较合适.
control_path
这个是保存 ControlPath 套接字的位置. 默认值是:
control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r
在有些系统上面, 会遇到很长的主机名或者很长的路径名称(也许因为很长的用户名, 或者比较深的家目录), 这些都会 超出套接字文件名字符上限(对于大多数平台上限为 108 个字符). 在这种情况下, 你也许希望按照以下方式缩短字符串:
control_path = %(directory)s/%%h-%%r
Ansible 1.4 以后的版本会引导用户在这种情况下使用”-vvvv”参数, 这样很容易分辨 Control Path 文件名是否过长. 这个 问题在 EC2 上会频繁的遇到.
scp_if_ssh
又是用户操控一个一个没有开启 SFTP 协议的远程系统. 如果这个设置为 True,scp 将代替用来为远程主机传输文件:
scp_if_ssh=False
如果没有遇到这样的问题没有必要来修改这个设置. 当然修改这个设置也没有什么明显的弊端. 大部分的系统环境都默认支持 SFTP, 通常情况下不需要修改.
pipelining
在不通过实际文件传输的情况下执行 ansible 模块来使用管道特性, 从而减少执行远程模块 SSH 操作次数. 如果开启这个设置, 将显著提高性能. 然而当使用”sudo:”操作的时候, 你必须在所有管理的主机的 /etc/sudoers 中禁用’requiretty’.
默认这个选项为了保证与 sudoers requiretty 的设置(在很多发行版中时默认的设置)的兼容性是禁用的. 但是为了提高性能强烈建议开启这个设置. 详见:doc:playbooks_acceleration:
pipelining=False
Accelerated Mode Settings
在 [accelerate] 首部下, 以下设置可以调整, 详见:doc:playbooks_acceleration. 如果你不能在你的环境中开启:ref:pipelining , Accelertation 是一个很有用的性能特性. 但是如果你可以开启管道, 这个选项也许对你无用.
accelerate_port
New in version 1.3.
在急速模式下使用的端口:
accelerate_port = 5099
accelerate_timeout
New in version 1.4.
这个设置时用来控制从客户机获取数据的超时时间. 如果在这段时间内没有数据传输, 套接字连接会被关闭. 一个保持连接(keepalive)数据包通常每 15 秒回发回给控制台, 所以这个超时时间不应该低于 15 秒(默认值为 30 秒):
accelerate_timeout = 30
accelerate_connect_timeout
New in version 1.4.
这个设置空着套接字调用的超时时间. 这个应该设置相对比较短. 这个和 `accelerate_port` 连接在回滚到 ssh 或者 paramiko(受限于你默认的连接设置)连接方式之前会尝试三次开始远程加速 daemon 守护进程. 默认设置为 1.0 秒:
accelerate_connect_timeout = 1.0
注意, 这个选项值可以设置为小于 1 秒钟, 但是除非你拥有一个速度很快而且很可靠的网络, 否则也许这样并不是一个很好的选择. 如果你使用英特网访问你的系统, 最好提高这个值.
accelerate_daemon_timeout
New in version 1.6.
This setting controls the timeout for the accelerated daemon, as measured in minutes. The default daemon timeout is 30 minutes:: 这个控制加速 daemon 守护进程的超时时间, 用分钟来衡量. 默认为 30 分钟:
accelerate_daemon_timeout = 30
注意, 在 1.6 版本之前,daemon 发起的超时时间是硬编码的. 对于 1.6 以后的版本, 超时时间是根据 daemon 上一次活动信息和这个可设置的选项.
accelerate_multi_key
New in version 1.6.
If enabled, this setting allows multiple private keys to be uploaded to the daemon. Any clients connecting to the daemon must also enable this option:: 如果这个选项开启, 这个设置将允许多个私钥被加载到 daemon. 任何客户端要想连接 daemon 都需要开启这个选项:
accelerate_multi_key = yes
通过本地套接字文件连接的通过 SSH 上传密钥文件到目标节点的新客户端, 必须在登陆 daemon 时使用原始的登陆密钥登陆。
使用 Ansible 高效交付 Docker 容器 http://www.linuxidc.com/Linux/2015-10/124233.htm
使用 Ansible 批量管理远程服务器 http://www.linuxidc.com/Linux/2015-05/118080.htm
Ansible 安装配置与简单使用 http://www.linuxidc.com/Linux/2015-07/120399.htm
在 CentOS 7 中安装并使用自动化工具 Ansible http://www.linuxidc.com/Linux/2015-10/123801.htm
Ansible 和 Docker 的作用和用法 http://www.linuxidc.com/Linux/2014-11/109783.htm
Ansible 批量搭建 LAMP 环境 http://www.linuxidc.com/Linux/2014-10/108264.htm
Ansible:一个配置管理和 IT 自动化工具 http://www.linuxidc.com/Linux/2014-11/109365.htm
Ansible 的详细介绍:请点这里
Ansible 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-05/130940.htm