Ansible系列基础篇 1.2、目录结构及配置说明
一、Ansible目录结构
inventory: /etc/ansible/hosts # 文件,存放主机信息 /etc/ansible/host_vars # 目录,存放主机变量 /etc/ansible/group_vars # 目录,存放主机组变量 /etc/ansible/roles # 目录,存放roles信息 config: /etc/ansible/ansible.cfg # ansible的配置文件
二、ansible.cfg配置优先级
ansible.cfg配置文件是以ini格式存储配置数据的,但是ansible.cfg配置文件可以存放在不同的目录,但只有一个可用,在运行Ansible命令时,Ansible将会按照预先设定的顺序查找配置文件,检查到哪个就用哪个。
Ansible预先设定的优先级顺序如下,优先级逐渐递减:
-
ANSIBLE_CFG 环境变量,可以定义配置文件的位置
-
ansible.cfg 存在于当前工作目录
-
ansible.cfg 存在与当前用户家目录
-
/etc/ansible/ansible.cfg
几乎所有的配置项都可以通过Ansible的playbook或环境变量来重新赋值,所以当你怎么都不知道这个变量在哪里定义的时候,不妨去看看环境变量里看看。
建议: 使用~/.ansible.cfg作为配置文件使用,这样就可以实现每个用户都有自己独自的配置文件,不污染其它用户正常使用Ansible,同时也方便进行选项配置。
三、ansible.cfg配置详解
ansible.cfg主要配置分类:
# ansible.cfg的配置默认分为八段: [defaults]:通用配置项 [inventory]:与主机清单相关的配置项 [privilege_escalation]:特权升级相关的配置项 [paramiko_connection]:使用paramiko连接的相关配置项,Paramiko在RHEL6以及更早的版本中默认使用的ssh连接方式 [ssh_connection]:使用OpenSSH连接的相关配置项,OpenSSH是Ansible在RHEL6之后默认使用的ssh连接方式 [persistent_connection]:持久连接的配置项 [accelerate]:加速模式配置项 [selinux]:selinux相关的配置项 [colors]:ansible命令输出的颜色相关的配置项 [diff]:定义是否在运行时打印diff(变更前与变更后的差异)
具体配置段示例:
# https://www.cnblogs.com/LuisYang/p/5960660.html
# https://www.jianshu.com/p/443f612c3d5c
[defaults] inventory = /etc/ansible/hosts # ansible inventory文件路径 library = /usr/share/my_modules/ # ansible模块文件路径 module_utils = /usr/share/my_module_utils/ #模块文件存放目录 remote_tmp = ~/.ansible/tmp # ansible远程主机脚本临时存放目录 local_tmp = ~/.ansible/tmp # ansible管理节点脚本临时存放目录 forks = 5 # ansible执行并发数 poll_interval = 15 # ansible异步任务查询间隔 sudo_user = root # ansible sudo用户 ask_sudo_pass = True # 运行ansible是否提示输入sudo密码 ask_pass = True # 运行ansible是否提示输入密码 transport = smart # ansible远程传输模式,需要优化执行速度的时候可以修改这个参数 remote_port = 22 # 远程主机SSH端口 module_lang = C # ansible模块运行默认语言环境 gathering = smart # facts信息收集开关定义 timeout = 10 # ansible SSH连接超时时间 remote_user = root # ansible远程认证用户 roles_path = /etc/ansible/roles # ansible role存放路径 log_path = /var/log/ansible.log # ansible日志记录文件 executable = /bin/sh # ansible命令执行shell module_name = command # ansible默认执行模块 module_set_locale = False # 设置本地环境变量,默认false host_key_checking = False # ansible第一次连接客户端是是否要检查ssh密钥 hash_behaviour = replace # ansible主机变量重复处理方式 fact_caching = memory # 定义ansible facts缓存方式 private_role_vars = yes # 默认情况下,角色中的变量将在全局变量范围中可见, 为了防止这种情况,可以启用以下选项,只有tasks的任务和handlers得任务可以看到角色变量 yes vault_password_file # 指定vault密码文件路径,默认无 ansible_managed = Ansible managed # 定义的一个Jinja2变量,可以插入到Ansible配置模版系统生成的文件中 display_skipped_hosts = True # 开启显示跳过的主机 error_on_undefined_vars = False # 开启错误,或者没有定义的变量 #action_plugins # ansible action插件路径,默认无 #cache_plugins # ansible cache插件路径,默认无 #callback_plugins # ansible callback插件路径,默认无 #connection_plugins # ansible connection插件路径,默认无 #lookup_plugins # ansible lookup插件路径,默认无 #inventory_plugins # ansible inventory插件路径,默认无 #vars_plugins # ansible vars插件路径,默认无 #filter_plugins # ansible filter插件路径,默认无 #terminal_plugins # ansible terminal插件路径,默认无 #strategy_plugins # ansible strategy插件路径,默认无 #fact_caching_connection # 定义ansible facts缓存路径,默认无 ## 特权升级相关的配置项 [privilege_escalation] become = True # 是否开启become模式 become_method = sudo # 定义become方式 become_user = root # 定义become方式 become_ask_pass = False # 是否定义become提示密码 ## accelerate缓存加速 [accelerate] accelerate_port = 5099 # 加速连接端口5099 accelerate_timeout = 30 # 命令执行超过时间,单位为s accelerate_connect_timeout = 5.0 # 上一个活动连接的时间,单位为min accelerate_daemon_timeout = 30 # 允许多个私钥被加载到daemon accelerate_multi_key = yes # 任何客户端想要连接daemon都要开启这个选项