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:  Ansible的核心程序。

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

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

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

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

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

4.ansible的执行流程:

ansible配置文件详解

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以后系统给我设置的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文件        

[ 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最常用的东西,非常重要

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