zoukankan      html  css  js  c++  java
  • ansible配置文件

           在Ansible中,它的配置文件是一个名为ansible.cfg的配置文件,ansible.cfg配置文件是以ini格式存储配置数据的。但是ansible.cfg配置文件可以存放在不同的目录,但只有一个可用,在运行Ansible命令时,Ansible将会按照预先设定的顺序查找配置文件,检查到哪个就用哪个。
    Ansible预先设定的优先级顺序如下,优先级逐渐递减:

    1. ANSIBLE_CFG:首先,Ansible命令会先检查环境变量,及这个环境变量将指向的配置文件;
    2. ./ansible.cfg:其次,将会检查当前目录下的ansible.cfg配置文件;
    3. ~/.ansible.cfg:再次,将会检查当前用户home目录下的.ansible.cfg配置文件;
    4. /etc/ansible/ansible.cfg:最后,将会检查在安装Ansible时自动生产的配置文件。

    几乎所有的配置项都可以通过Ansible的playbook或环境变量来重新赋值,所以当你怎么都不知道这个变量在哪里定义的时候,不妨去看看环境变量里看看。
    建议: 使用~/.ansible.cfg作为配置文件使用,这样就可以实现每个用户都有自己独自的配置文件,不污染其它用户正常使用Ansible,同时也方便进行选项配置。

    ansible主要配置分类:

    # 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(变更前与变更后的差异)

    ansible配置文件示例:

    # https://www.cnblogs.com/LuisYang/p/5960660.html
    [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都要开启这个选项
  • 相关阅读:
    C#操作ini配置文件和写入日志操作
    asp.net AJAX 定期刷新页面,然后,在 Timer 的事件中弹出窗口
    setInterval和setTimeout的区别
    检测远程URL是否存在
    SharePoint列表的模板类型中的BaseType参数和ListTemplate参数
    TCP中的Flag options
    jQuery基础教程摘录 Hello world
    SharePoint站点无法打开的问题
    SPQuery在引用field的时候要用internal name
    Windows Server 2008中用管理员的权限使用命令行来打开程序
  • 原文地址:https://www.cnblogs.com/wangsl1204/p/13647000.html
Copyright © 2011-2022 走看看