• Ansible之配置文件ansible.cfg


    一、简介

    Ansible的默认配置文件是/etc/ansible/ansible.cfg,如果ansible的工作目录里没有ansible.cfg那么默认使用全局的配置文件,如果有的话使用工作目录里的配置文件,这一点和inventory类似。

    如果存在多个配置文件,那么可能会搞错,不知道用的是哪个怎么办,ansible为我们提供了一个查询命令:

    [root@master ~]# ansible --version
    ansible 2.9.18
      config file = /etc/ansible/ansible.cfg
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.7.5 (default, Jun 20 2019, 20:27:34) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

    上面的输出使用的是全局的默认配置文件,因为当前目录不包含ansible.cfg文件,如果有这个文件输出内容就会是下面这个样子:

    [root@master ~]# cd ansible/
    [root@master ansible]# ls
    ansible.cfg  copy_repo.yml  inventory  pushsshkey.yaml  remove_k8s.yaml  update_kernel.yml  update_vim8.yml  yum_install_etcd_3.yml
    [root@master ansible]# ansible --version
    ansible 2.9.18
      config file = /root/ansible/ansible.cfg
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.7.5 (default, Jun 20 2019, 20:27:34) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

    除了ansible --version还有一个命令可以显示配置文件的信息,在执行命令的的时候加上 -v选项,如下:

    [root@master ansible]# ansible k8s_nodes --list-hosts -v
    Using /root/ansible/ansible.cfg as config file
      hosts (3):
        node1
        node2
        node3

    二、管理ansible.cfg配置文件的设置

    Ansible的配置文件由几个部分组成,每一个部分包含以键值对形式定义的设置,标题以方括号括起。看一下默认配置文件的几个部分:

    1. defaults
    [defaults]
    
    #inventory      = /etc/ansible/hosts   //定义Inventory
    #library        = /usr/share/my_modules/  //自定义lib库存放目录 
    #remote_tmp     = ~/.ansible/tmp       //零时文件远程主机存放目录
    #local_tmp      = ~/.ansible/tmp       //零时文件本地存放目录
    #forks          = 5                    //默认开启的并发数
    #poll_interval  = 15                   //默认轮询时间间隔
    #sudo_user      = root                 //默认sudo用户
    #ask_sudo_pass = True                  //是否需要sudo密码
    #ask_pass      = True                  //是否需要密码
    #host_key_checking = False             //首次连接是否检查key认证
    #roles_path    = /etc/ansible/roles    //默认下载的Roles存放的目录
    #log_path = /var/log/ansible.log       //执行日志存放目录
    #module_name = command                 //默认执行的模块
    #action_plugins     = /usr/share/ansible/plugins/action //action插件存放目录
    #callback_plugins   = /usr/share/ansible/plugins/callback //callback插件存放目录
    #connection_plugins = /usr/share/ansible/plugins/connection  //connection插件存放目录
    #lookup_plugins     = /usr/share/ansible/plugins/lookup //lookup插件存放目录
    #vars_plugins       = /usr/share/ansible/plugins/vars //vars插件存放目录
    #filter_plugins     = /usr/share/ansible/plugins/filter //filter插件存放目录
    #test_plugins       = /usr/share/ansible/plugins/test //test插件存放目录
    #strategy_plugins   = /usr/share/ansible/plugins/strategy //strategy插件存放目录
    #fact_caching = memory                 //getfact缓存的主机信息存放方式
    #retry_files_enabled = False              
    #retry_files_save_path = ~/.ansible-retry  //错误重启文件存放目录
    2. privilege_escalation
    [privilege_escalation]
    #become=True            //是否sudo
    #become_method=sudo     //sudo方式
    #become_user=root       //sudo后变为root用户
    #become_ask_pass=False  //sudo后是否验证密码
    3. paramiko_connection
    [paramiko_connection]
    #record_host_keys=False //不记录新主机的key以提升效率
    #pty=False              //禁用sudo功能
    4. ssh_connection
    [ssh_connection]
    #pipelining = False   //管道加速功能,需配和requiretty使用方可生效
    5. selinux
    [selinux]
    #libvirt_lxc_noseclabel = yes  //selinux配置
    6. colors
    [colors]
    #highlight = white
    #verbose = blue
    #warn = bright purple
    #error = red
    #debug = dark gray
    #deprecate = purple
    #skip = cyan
    #unreachable = red
    #ok = green
    #changed = yellow
    #diff_add = green
    #diff_remove = red
    #diff_lines = cyan

    三、ansible工作目录里常用的配置文件

    这里简单说一下2个部分的配置,[defaults]和[privilege_escalation],示例如下:

    [defaults]
    inventory = ./inventory
    remote_user = root
    ask_pass = false
    [privilege_escalation]
    become=True
    become_method=sudo
    become_user=root
    become_ask_pass=False

    inventory

    指定清单文件的路径

    remote_user

    要在受管主机上登录的用户名,如果未指定使用当前用户

    ask_pass

    是否提示输入SSH密码,如果使用ssh公钥身份验证,则可以是false

    become

    表示连接后是否在受管主机上切换用户(通常切换为root)

    become_method

    如何切换用户,sudo 或者 su

    become_user

    要在受管主机上要切换成为的用户,通常是root,也是默认值

    become_ask_pass

    是否需要为become_method提示输入密码,默认false

    =======================================================================

    知识无边界,交流以长进

    如需转载,请注明出处,谢谢

    =======================================================================

  • 相关阅读:
    atcoder做题记录
    CSP-S2021题解
    记录近期JAVA后端开发面试总结
    技术文章系列汇总(csdn转载)
    个人技术文章系列汇总(简书)
    个人技术文章系列汇总(csdn原创)
    解密Kafka吞吐量高的原因
    Java 常见面试题整理
    restemplate调用失败提示 处理方法
    Keil MDK忽略警告:文件末尾空白行警告
  • 原文地址:https://www.cnblogs.com/mfyang/p/15137991.html
Copyright © 2020-2023  润新知