• ansible配置文件介绍


    ansible主目录结构

    /etc/ansible有以下三个文件或者目录生成
    1、Hosts
    主机清单配置文件
    2、ansible.cfg
    Ansible配置文件
    3、Roles
    角色定义目录

    ansible配置文件优先级

    Ansible配置以ini格式存储配置数据,在Ansible中⼏乎所有配置都可以通过Ansible的Playbook或环境变量来重新赋值。在运⾏Ansible命令时,命令将会按照以下顺序查找配置⽂件。

    ANSIBLE_CONFIG :⾸先,Ansible命令会检查环境变量,及这个环境变量指向的配置⽂件。         export ANSIBLE_CONFIG=/PATH
    ./ansible.cfg :其次,将会检查当前⽬录下的ansible.cfg配置⽂件
    ~/.ansible.cfg :再次,将会检查当前⽤户home⽬录下的.ansible.cfg配置⽂件。
    /etc/ansible/ansible.cfg :最后,将会检查在⽤软件包管理⼯具安装Ansible时⾃动产⽣的配置⽂件。
    
    • 1
    • 2
    • 3
    • 4

    主配置文件/etc/ansible/ansible.cfg解析

    [root@ansible ~]# vim /etc/ansible/ansible.cfg 
    
    • 1

    [defaults] 默认配置

    # some basic default values... 
    #inventory = /etc/ansible/hosts #主机列表配置文件 
    #library = /usr/share/my_modules/ #库文件存放目录,ansible默认搜寻模块的位置
    #module_utils = /usr/share/my_module_utils/ #模块存放目录 
    #remote_tmp = ~/.ansible/tmp #临时py命令文件存放在远程主机目录 
    #local_tmp = ~/.ansible/tmp #本机的临时命令执行目录 
    #forks = 5 #默认并发数 
    #poll_interval = 15 #时间间隔 
    #sudo_user = root #默认sudo用户 
    #ask_sudo_pass = True #每次执行ansible命令是否询问sudo用户密码,默认值为no
    #ask_pass = True #每次执行ansible命令是否询问ssh密码,默认值为no
    #transport = smart #传输方式 
    #remote_port = 22 #远程端口号 
    #remote_user = root ----远程用户,受控主机使用什么用户进行执行ansible任务
    #roles_path    = /etc/ansible/roles
    #host_key_checking = False
    
    [privilege_escalation]  定义对受管主机执行特权升级,默认普通用户是没有权限来执行很多ansible任务的,但是我们可以给普通用户提权,让它有权限去执行ansible任务
    become = true
    become_method = sudo
    become_user = root
    become_ask_pass = false
    
    [paramiko_connection]、[ssh_connection]、[accelerate]用于优化与受管主机的连接
    
    [selinux] 定义如何配置selinux交互
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    常用参数

    Ansible配置文件的常用参数一般位于[defaults]模块下,主要有以下几个参数:

    inventory
    定义了Ansible默认的主机配置文件,默认为/etc/ansible/hosts
    library
    定义了Ansible默认搜寻模块的位置,默认为/etc/ansible/my_modules/目录
    remote_tmp
    定义了Ansible远程执行临时文件
    pattern
    定义了Ansible通信的主机,该参数默认为*,表示与所有主机进行通信
    forks
    定义了Ansible的并行进程数,默认为5
    poll_interval
    定义了回频率或轮询间隔时间
    gathering
    控制facts信息的收集
    roles_path
    用于搜索Ansible中的roles
    host_key_checking
    用于检查主机密钥
    sudo_exe
    用于指定sudo远程执行命令
    sudo_flags
    用于传递sudo以外的参数
    timeout
    用于设置SSH超时时间
    remote_user
    用于设置远程登录用户名
    log_path
    module_name
    用于指定Ansible在默认情况下的执行模块,默认为command
    executable
    用于指定Ansible执行的shell环境
    hash_behavior
    用于指定特定的优先级覆盖变量
    jinjia2_extensions
    设置允许开启jinjia2拓展模块
    private_key_file
    用于指定私钥文件存储位置
    display_skipped_hosts
    用于显示任何跳过任务的状态
    system_warnings
    用于禁用系统显示ansible潜在问题警告
    deprecation_warnings
    playbook输出禁用“不建议使用”警告
    command_warnings
    command模块Ansible默认发出警告
    pipelining
    用于开启pipe SSH通道优化
    sudo_user
    定义了sudo远程执行用户名
    ask_sudo_pass
    定义了使用sudo是否需要输入密码
    ask_pass
    定义了是否需要输入密码
    transport
    定义了Ansible的通信机制
    remote_port
    定义了Ansible的通信端口,默认为22
    module_lang
    定义了Ansible模块和系统之间通信的语言
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    主机清单

    清单定义ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。
    可以通过两种方式定义主机清单。静态主机清单可以通过文本文件来定义。动态主机清单可以根据需要使用外部信息提供程序通过脚本或者其他程序来生成。
    例如:

    vim /etc/ansible/hosts
    web1.example.com
    web2.example.com
    172.16.30.200
    
    [webservers]
    web1.example.com
    web2.example.com
    
    [db-servers]
    db1.example.com
    db2.example.com
    
    [all:children]
    webservers
    db-servers
    
    
    cd /etc/ansible
    查看所有的受控主机
    ansible all -i hosts --list-hosts
    
    查看某组中包含哪些受控主机
    ansible server1 -i hosts --list-hosts
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    对普通用户提权,所有受管节点都配置

    [root@ansible ~]# cd /etc/sudoers.d/
    [root@ansible sudoers.d]# vim student
    student  ALL=(ALL)  NOPASSWD: ALL
    [root@ansible sudoers.d]# for i in node{1..3} 
    > do scp  student root@$i:/etc/sudoers.d/
    > done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    配置普通用户的配置文件

    inventory = /etc/ansible/hosts #主机列表配置文件 
    remote_user = student ----远程用户,受控主机使用什么用户进行执行ansible任务
    roles_path    = /etc/ansible/roles
    host_key_checking = False
    
    [privilege_escalation]  定义对受管主机执行特权升级,默认普通用户是没有权限来执行很多ansible任务的,但是我们可以给普通用户提权,让它有权限去执行ansible任务
    become = true
    become_method = sudo
    become_user = root
    become_ask_pass = false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    拓展

    安装和配置Ansible
    按照下方所述,在控制节点ansible.example.com 上安装和配置Ansible:
    安装所需的软件包
    创建名为/home/student/ansible/inventory的静态清单文件, 以满足以下需求:
    node1是dev主机组的成员
    node2是test主机组的成员
    node3是prod主机组的成员
    prod组是webservers主机组的成员
    创建名为/home/student/ansible/ansible.cfg的配置文件, 以满足以下要求:
    主机清单文件为/home/student/ansible/inventory
    playbook中使用的角色的位置包括/home/student/ansible/roles

    [root@ansible ~]# su - student 
    [student@ansible ~]$ ls
    ansible
    [student@ansible ~]$ cd ansible/
    [student@ansible ansible]$ cp /etc/ansible/ansible.cfg .
    [student@ansible ansible]$ ls
    ansible.cfg  inventory
    [student@ansible ansible]$ vim inventory 
    [student@ansible ansible]$ cat inventory 
    [dev]
    node1
    [test]
    node2
    [prod]
    node3
    [webservers:children]
    prod
    
    [student@ansible ansible]$ vim ansible.cfg 
    inventory = /etc/ansible/hosts #主机列表配置文件 
    remote_user = student ----远程用户,受控主机使用什么用户进行执行ansible任务
    roles_path    = /home/student/ansible/roles
    host_key_checking = False
    
    [privilege_escalation]  定义对受管主机执行特权升级,默认普通用户是没有权限来执行很多ansible任务的,但是我们可以给普通用户提权,让它有权限去执行ansible任务
    become = true
    become_method = sudo
    become_user = root
    become_ask_pass = false
    [student@ansible ansible]$ mkdir roles
    [student@ansible ansible]$ ls
    ansible.cfg  inventory  roles
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    基于STM32F407ZET6的环境温湿度监控系统(粤嵌GEC-M4)
    vue使用localstorage超出限制解决方法
    QT软件开发-基于FFMPEG设计视频播放器-支持流媒体地址播放(五)
    数据结构与算法之Python实现——单链表
    Vue解决导出pdf文件图片展示不全问题
    java 发送get请求获取数据
    企业信息化建设该如何评估自己ERP、MES、APS需求
    吃透SpringBoo的这些t知识,你就已经超过90%的Java面试者了
    877. 扩展欧几里得算法
    力扣第20题记录
  • 原文地址:https://blog.csdn.net/ZHJSXX/article/details/127442100