• ansible配置文件详解


    1.简介:

      ansible 是python开发的自动化运维工具,基于paramiko的工具开发,基于ssh协议,轻量级无需安装客户端,配置简单,扩展容易。

    2.安装:

           安装非常方便

           yum install -y epel-release

           yum install ansible

           或者 yum install python3-pip

            pip install ansible==2.8.1

    3.ansible的架构图:

    Ansible:  Ansible的核心程序。

    Hostinventory: 记录Ansible管理的主机信息,密码,端口,ip等。

    Playbook:  剧本YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

    Coremoudle:  核心模块,主要操作是通过调用核心模块来完成管理任务。

    CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。

    ConnectionPlugins:连接插件,Ansible和Host通信使用.

    4.ansible的执行流程:

     5.ansible的命令执行过程

         1.加载自己的配置文件,默认/etc/ansible/ansible.cfg;

         2.查找对应的主机配置文件,找到要执行的主机或者组;

         3.加载自己对应的模块文件,如 command;

         4.通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;

         5.对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;

         6.给文件 +x 执行权限;

         7.执行并返回结果;

         8.删除临时py文件,sleep 0退出;

    6.ansible的配置文件

    6.1ansible配置文件查找顺序

        ansible与我们其他的服务在这一点上有很大不同,这里的配置文件查找是从多个地方找的,顺序如下:

        1.检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg);

        2.~/.ansible.cfg,检查当前目录下的ansible.cfg配置文件;

        3./etc/ansible.cfg检查etc目录的配置文件

    6.2配置文件详解

    在安装好ansible以后,进入/etc/ansible/

     

     就可以看到ansible的配置文件,这是安装ansible以后系统给我设置的ansible的配置文件

     /etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:

             inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置

             library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以

             forks = 5       #并发连接数,默认为5 根据需求来调整,所谓的ansible优化参数中最主要的优化参数

             sudo_user = root        #设置默认执行命令的用户

             remote_port = 22        #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全

             host_key_checking = False   #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例

             timeout = 60        #设置SSH连接的超时时间,单位为秒

             log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)

            inventory用于定义ansible要管理的主机列表,可以定义单个主机和主机组。上面的/etc/ansible/hosts就是默认的inventory。下面展示了inventory常用的定义规则。

    以下是我主机的/etc/ansible/hosts文件        

    [root@10 ansible]# grep -Ev "^#|^$" /etc/ansible/hosts
    [mariadb]
    centos[6:7]
    [mariadb:vars]
    var1=1
    var2=2
    [centos:children]
    mariadb
    [centos:vars]
    var1=5
    var2-6
    [all:var]
    var1=3
    var2=4

    centos[6:7] 定义了两台主机,centos6和centos7 更通俗的理解就是centos6-centos7,换言之,假如我有100台服务器,ip地址是10.0.0.2-10.0.0.101,那么我就可以简单定义为10.0.0.[2:101] 而不用添加每台主机的IP地址

    [mariadb: vars] 定义了主机组的变量 var1 和 var2,优先级最高

    [centos:children] 定义一个centos组,包含的子用户组为mariadb

    [centos:vars]  定义centos的主机组变量,当变量和mariadb的变量名相同时,mariadb的变量生效,优先级次之

    [all:vars] 定义全局变量,优先级最低

    roles: 角色目录,这个会在后面的文章中做详解,这个时playbook最常用的东西,非常重要

    对于配置文件的讲解就到这里,希望对大家有所帮助。

  • 相关阅读:
    技术人员的找工之路(1
    技术人员的找工之路(3)
    Endian的由来
    android平台开发笔记1Spinner不能在sub activity中使用
    谈谈Groupon的成功
    线程安全的同步读写类的模板设计
    项目管理文件package.json
    10个每个开发人员都应该知道的强大JavaScript 解构技术
    绿色下载站上线了(MVC +Telerik开源控件)
    我开发的新浪微博应用“微词典”通过审核,欢迎朋友们试用,多多建议!
  • 原文地址:https://www.cnblogs.com/juanNote/p/12325624.html
Copyright © 2020-2023  润新知