Ansible的一些的设置能够经过配置文件完成.在大多数场景下默认的配置就能知足大多数用户的需求,在一些特殊场景下,用户仍是须要自行修改这些配置文件html
用户能够修改一下配置文件来修改设置,他们的被读取的顺序以下:python
ANSIBLE_CONFIG (一个环境变量)
ansible.cfg (位于当前目录中)
.ansible.cfg (位于家目录中)
/etc/ansible/ansible.cfg
版本1.5以前的读取顺序以下:linux
ansible.cfg (位于当前目录)
ANSIBLE_CONFIG (一个环境变量)
.ansible.cfg (位于家目录下)
/etc/ansible/ansible.cfg
Ansible 将会按以上顺序逐个查询这些文件,直到找到一个为止,而且使用第一个寻找到个配置文件的配置,这些配置将不会被叠加.git
若是使用程序包管理器安装ansible,最新的 ansible.cfg 配置文件有可能出如今 /etc/ansible 下而且命名为 ”.rpmnew”, 也可能根据不一样的更新命名为其它名称github
若是你是经过 pip 或者其余方式安装,则可能须要自行建立这个文件,以避免原配置文件被覆盖.Ansible 的默认设置将会将其覆盖shell
配置文件的详细参数以及取值范围请查看`ansible.cfg <https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg>`_express
Ansible 经过环境变量的形式来进行配置.这些设置后的环境变量将会覆盖掉全部配置文件读取的配置.为了节省篇幅,这些变量没有被列在这里,详情请见源代码目录中的 ‘constants.py’. 相对于配置文件它门会比看成遗产系统(legacy system) 来被使用,可是仍然有效数组
配置文件被切割成了不一样段.多数配置选项位于“general”段, 也有一些属于特定的连接类型(connection type)bash
在 [defaults] 段中,一下选项是能够调节的:网络
“行为”是 ansible中的一段代码,用来激活一些事件,例如执行一个模块,一个模版,等等
这是一个以开发者为中心的特性,使得一些底层模块能够从外部不一样地方加载:
action_plugins = ~/.ansible/plugins/action_plugins/:/usr/share/ansible_plugins/action_plugins
大多数用户都会使用这一特性.
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=True
若是使用SSH 密钥匙作身份认证.可能须要修改这一参数
相似 ask_pass,用来控制Ansible playbook 在执行sudo以前是否询问sudo密码.默认为no:
ask_sudo_pass=True
若是用户使用的系统平台开启了sudo 密码的话,应该开绿这一参数
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:
Callbacks 在ansible中是一段代码,在特殊事件时将被调用.而且容许出发通知. 这是一个以开发者为中心的特性,能够实现对Ansible的底层拓展,而且拓展模块能够位于任何位置:
callback_plugins = ~/.ansible/plugins/callback_plugins/:/usr/share/ansible_plugins/callback_plugins
大多数的用户将会用到这一特性.
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
链接插件容许拓展ansible拓展通信信道,用来传输命令或者文件. 这是一个开发者中心特性,拓展插件能够从任何不一样地方加载:
connection_plugins = ~/.ansible/plugins/connection_plugins/:/usr/share/ansible_plugins/connection_plugins
大多数用户会用到这一特性, 详见:Developing Plugins .. _deprecation_warnings:
New in version 1.3.
容许在ansible-playbook输出结果中禁用“不建议使用”警告:
deprecation_warnings = True
“不建议警告”指的是使用一些在新版本中可能会被淘汰的遗留特性.
display_skipped_hosts=True
注意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 = /bin/bash
过滤器是一种特殊的函数,用来拓展模版系统 .
这是一个开发者核心的特性,容许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 = 1
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.
这个选项设置在与主机通讯时的默认并行进程数.从Ansible 1.3开始,fork数量默认自动设置为主机数量或者潜在的主机数量, 这将直接控制有多少网络资源活着cpu能够被使用.不少用户把这个设置为50,有些设置为500或者更多.若是你有不少的主机, 高数值将会使得跨主机行为变快.默认值比较保守:
_forks=5
1.6版本中的新特性,这个设置控制默认facts收集(远程系统变量). 默认值为’implicit’, 每一次play,facts都会被手机,除非设置’gather_facts: False’. 选项‘explicit’正好相反,facts不会被收集,直到play中须要. ‘smart’选项意思是,没有facts的新hosts将不会被扫描, 可是若是一样一个主机,在不一样的plays里面被记录地址,在playbook运行中将不会通讯.这个选项当有需求节省fact收集时比较有用.
Ansible 默认将会以一种特定的优先级覆盖变量,详见:doc:playbooks_variables.拥有更高优先级的参数将会覆盖掉其余参数
有些用户但愿被hashed的参数(python 中的数据结构’dictionaries’)被合并. 这个设置叫作‘merge’.这不是一个默认设置,并且不影响数组类型的数组.我不建议使用这个设置除非你以为必定须要这个设置.官方实例中不使用这个选项:
hash_behaviour=replace
合法的值为’replace’(默认值)或者‘merge’.
在1.9版本中,这不是一个合法设置.详见:ref:inventory.
这个特性详见:doc:intro_getting_started,在Ansible 1.3或更新版本中将会检测主机密钥. 若是你了解怎么使用而且但愿禁用这个功能,你能够将这个值设置为False:
host_key_checking=True
这个事默认库文件位置,脚本,或者存放可通讯主机的目录:
inventory = /etc/ansible/hosts
在1.9版本中被叫作hostfile.
这是一个开发者中心特性,容许开启Jinja2拓展模块:
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n
若是你不太清楚这些都是啥,仍是不要改的好:)
这个事Ansible默认搜寻模块的位置:
library = /usr/share/ansible
Ansible知道如何搜寻多个用冒号隔开的路径,同时也会搜索在playbook中的“./library”.
若是出如今ansible.cfg文件中.Ansible 将会在选定的位置登录执行信息.请留意用户运行的Ansible对于logfile有权限:
log_path=/var/log/ansible.log
这个特性不是默认开启的.若是不设置,ansible将会吧模块加载纪录在系统日志系统中.不包含用密码.
对于须要了解更多日志系统的企业及用户,你也许对:doc:tower 感兴趣.
这是一个开发者中心选项,容许模块插件在不一样区域被加载:
lookup_plugins = ~/.ansible/plugins/lookup_plugins/:/usr/share/ansible_plugins/lookup_plugins
绝大部分用户将不会使用这个特性,详见:doc:developing_plugins
这是默认模块和系统之间通讯的计算机语言,默认为’C’语言.
这个是/usr/bin/ansible的默认模块名(-m). 默认是’command’模块. 以前提到过,command模块不支持shell变量,管道,配额. 因此也许你但愿把这个参数改成’shell’:
module_name = command
默认ansible会为输出结果加上颜色,用来更好的区分状态信息和失败信息.若是你想关闭这一功能,能够把’nocolor’设置为‘1’:
nocolor=0
默认ansible能够调用一些cowsay的特性,使得/usr/bin/ansible-playbook运行起来更加愉快.为啥呢,由于咱们相信系统应该是一 比较愉快的经历.若是你不喜欢cows,你能够统统过将’nocows’设置为‘1’来禁用这一选项:
nocows=0
若是没有提供“hosts”节点,这是playbook要通讯的默认主机组.默认值是对全部主机通讯,若是不想被惊吓到,最好仍是设置个个选项:
hosts=*
注意 /usr/bin/ansible 一直须要一个host pattern,而且不使用这个选项.这个选项只做用于/usr/bin/ansible-playbook.
对于Ansible中的异步任务(详见 异步操做和轮询), 这个是设置定义,当具体的poll interval 没有定义时,多少时间回查一下这些任务的状态, 默认值是一个折中选择15秒钟.这个时间是个回查频率和任务完成叫回频率和当任务完成时的回转频率的这种:
poll_interval=15
若是你是用pem密钥文件而不是SSH 客户端或秘密啊认证的话,你能够设置这里的默认值,来避免每一次提醒设置密钥文件位置``–ansible-private-keyfile``:
private_key_file=/path/to/file.pem
这个设置是你系统默认的远程SSH端口,若是不指定,默认为22号端口:
remote_port = 22
Ansible 经过远程传输模块到远程主机,而后远程执行,执行后在清理现场.在有些场景下,你也许想使用默认路径但愿像更换补丁同样使用, 这时候你可使用这个选项.:
remote_tmp = $HOME/.ansible/tmp
默认路径是在用户家目录下属的目录.Ansible 会在这个目录中使用一个随机的文件夹名称.
这是个ansible使用/usr/bin/ansible-playbook连接的默认用户名. 注意若是不指定,/usr/bin/ansible默认使用当前用户名称:
remote_user = root
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草作, sudo程序的路径能够用这个参数更换,使用命令行标签来拟合标准sudo:
sudo_exe=sudo
当使用sudo支持的时候,传递给sudo而外的标签. 默认值为”-H”, 意思是保留原用户的环境.在有些场景下也许须要添加或者删除 标签,大多数用户不须要修改这个选项:
sudo_flags=-H
这个是sudo使用的默认用户,若是``–sudo-user`` 没有特指或者’sudo_user’ 在Ansible playbooks中没有特指,在大多数的逻辑中 默认为: ‘root’
sudo_user=root
New in version 1.6.
容许禁用系统运行ansible相关的潜在问题警告(不包括操做主机):
system_warnings = True
这个包括第三方库或者一些须要解决问题的警告.
这个事默认SSH连接尝试超时时间:
timeout = 10
若是”-c <transport_name>” 选项没有在使用/usr/bin/ansible 或者 /usr/bin/ansible-playbook 特指的话,这个参数提供了默认通讯机制.默认 值为’smart’, 若是本地系统支持 ControlPersist技术的话,将会使用(基于OpenSSH)‘ssh’,若是不支持讲使用‘paramiko’.其余传输选项包括‘local’, ‘chroot’,’jail’等等.
用户一般能够这个设置为‘smart’,让playbook在须要的条件本身选择‘connectin:’参数.
这是一个开发者中心选项,容许底层拓展模块从任何地方加载:
vars_plugins = ~/.ansible/plugins/vars_plugins/:/usr/share/ansible_plugins/vars_plugins
大部分的用户不会用到这个特性,详见:doc:developing_plugins
New in version 1.7.
这个用来设置密码文件,也能够经过命令行指定``–vault-password-file``:
vault_password_file = /path/to/vault_password_file
在1.7版本中,这个文件也能够称为一个脚本的形式.若是你使用脚本而不是单纯文件的话,请确保它能够执行而且密码能够在标准输出上打印出来.若是你的脚本须要提示请求数据,请求将会发到标准错误输出中.
Paramiko 是商业版linux 6 的默认SSH连接.但在其余平台上不是默认使用的.请在[paramiko]头文件下激活它.
默认设置会记录并验证经过在用户hostfile中新发现的的主机(若是host key checking 被激活的话). 这个选项在有不少主机的时候将会性能不好.在 这种状况下,建议使用SSH传输代替. 当设置为False时, 性能将会提高,在hostkey checking 被禁用时候,建议使用.:
record_host_keys=True
在[ssh_connection]头文件之下,用来调整SSH的通讯链接.OpenSSH是Ansible在操做系统上默认的通信链接,对于支持ControlPersist足够新了.(意思除了Enterprise linux 6版以及更早的系统外的全部的操做系统).
若是设置了的话,这个选项将会传递一组选项给Ansible 然不是使用之前的默认值:
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
用户能够提升ControlPersist值来提升性能.30 分钟一般比较合适.
这个是保存ControlPath套接字的位置. 默认值是:
control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r
在有些系统上面,会遇到很长的主机名或者很长的路径名称(也许由于很长的用户名,或者比较深的家目录),这些都会 超出套接字文件名字符上限(对于大多数平台上限为108个字符).在这种状况下,你也许但愿按照如下方式缩短字符串:
control_path = %(directory)s/%%h-%%r
Ansible 1.4 之后的版本会引导用户在这种状况下使用”-vvvv”参数,这样很容易分辨 Control Path 文件名是否过长.这个 问题在EC2上会频繁的遇到.
又是用户操控一个一个没有开启SFTP协议的远程系统.若是这个设置为True,scp将代替用来为远程主机传输文件:
scp_if_ssh=False
若是没有遇到这样的问题没有必要来修改这个设置.固然修改这个设置也没有什么明显的弊端.大部分的系统环境都默认支持SFTP, 一般状况下不须要修改.
在不经过实际文件传输的状况下执行ansible模块来使用管道特性,从而减小执行远程模块SSH操做次数.若是开启这个设置,将显著提升性能. 然而当使用”sudo:”操做的时候, 你必须在全部管理的主机的/etc/sudoers中禁用’requiretty’.
默认这个选项为了保证与sudoers requiretty的设置(在不少发行版中时默认的设置)的兼容性是禁用的. 可是为了提升性能强烈建议开启这个设置.详见:doc:playbooks_acceleration:
pipelining=False
在[accelerate]首部下, 如下设置能够调整,详见:doc:playbooks_acceleration.若是你不能在你的环境中开启:ref:pipelining , Accelertation 是一个颇有用的性能特性. 可是若是你能够开启管道,这个选项也许对你无用.
New in version 1.3.
在急速模式下使用的端口:
accelerate_port = 5099
New in version 1.4.
这个设置时用来控制从客户机获取数据的超时时间.若是在这段时间内没有数据传输,套接字链接会被关闭. 一个保持链接(keepalive)数据包一般每15秒回发回给控制台,因此这个超时时间不该该低于15秒(默认值为30秒):
accelerate_timeout = 30
New in version 1.4.
这个设置空着套接字调用的超时时间.这个应该设置相对比较短.这个和`accelerate_port`链接在回滚到ssh或者paramiko(受限于你默认的链接设置)链接方式以前会尝试三次开始远程加速daemon守护进程.默认设置为1.0秒:
accelerate_connect_timeout = 1.0
注意,这个选项值能够设置为小于1秒钟,可是除非你拥有一个速度很快并且很可靠的网络,不然也许这样并非一个很好的选择.若是你使用英特网访问你的系统,最好提升这个值.
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上一次活动信息和这个可设置的选项.
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时使用原始的登录密钥登录.