zoukankan      html  css  js  c++  java
  • Ansible原理与安装部署

    今天,我们开始学习运维自动化工具Ansible。

    一、Ansible原理

    1.1 什么是Ansible

    Ansible一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台/框架。基于Python语言实现,核心模块包括:jinja2、PyYAML和paramiko。Ansible允许重复执行而不出错,客户端无agent,服务端无deamon进程。Ansible特点:

    • Ansible支持API接口调用,例如通过CMDB调用或公有云接口调用

    • Ansible是一个框架,基于模块、插件工作

    • 基于SSH工作,即被管理端要支持SSH管理

    • 通过playbooks来编写强大的配置、状态管理,实现自动化

    1.2 Ansible重要组件说明

    • 模块:Ansible由多种功能模块组成

    • playbook:Ansible剧本,使用yml语法调用不同功能模块完成特定的功能

    • roles:Ansbiel角色,可以使用ansible-galaxy命令下载第3方的roles角色。

    • ansible-vault:文件加密工具

    • ansilbe-console:基于console与用户进行交互

    • ansible-doc:帮助文档,-l所有模块,-s简要帮助

    1.3 Ansible执行过程及原理说明

    1. 加载配置文件,默认是/etc/ansible/ansible.cfg

    2. 加载对应模块

    3. 生产临时py文件,并传输到目标机器的~/.ansible/tmp目录下

    4. 给py文件加上+x权限,执行并返回结果

    5. 删除py文件并sleep 0 退出

    1.4 Ansible执行状态说明

    • 绿色:执行成功,不需要做改变

    • 黄色:执行成功,对目标主机做变更

    • 红色:执行失败

     

    二、Ansible安装与配置

    2.1 安装Ansible

    安装Ansible,以CentOS 7.6为例:

      [root@ansible ~]# cat /etc/redhat-release 
        CentOS Linux release 7.6.1810 (Core) 
        [root@ansible ~]# uname -a
        Linux ansible 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    #配置epel源
        [root@ansible ~]# cat /etc/yum.repos.d/epel-7.repo 
        [epel]
    name=Extra Packages for Enterprise Linux 7 - $basearch
        baseurl=http://mirrors.aliyun.com/epel/7/$basearch
        failovermethod=priority
        enabled=1
        gpgcheck=0
        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
        [epel-debuginfo]
    name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
        baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
        failovermethod=priority
        enabled=0
        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
        gpgcheck=0
        [epel-source]
    name=Extra Packages for Enterprise Linux 7 - $basearch - Source
        baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
        failovermethod=priority
        enabled=0
        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
        gpgcheck=0
    #安装Ansible
        [root@ansible ~]# yum install ansible -y
    #查看已安装Ansible版本
        [root@ansible ~]# ansible --version
        ansible 2.8.2
          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, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
        [root@ansible yum.repos.d]# 
        ansible-2.8.2-1.el7.noarch
    

      查看Ansible相关文件

    yum info ansible
    rpm -qa ansible
    rpm -ql ansibel | less

     

    2.2 Ansible配置文件

    Ansible主要配置文件及作用说明如下:​​​​​​​

     /etc/ansible/
        ├── ansible.cfg  # Ansible主配置文件
        ├── hosts  #用来定义被管理的机器清单
        └── roles  #该目录用于定义角色
    

      Ansible配置文件
    /etc/ansible/ansible.cfg
    主要参数说明

    #关闭过时参数告警
    deprecation_warnings=False
        #关闭command告警
    command_warnings=False
        #首次连接不检查,配合下面的playbook实现免密码ssh登录
    host_key_checking=False
        #设置并行数量
    forks=40
        #开启日志
    log_path = /var/log/ansible.log
        #ssh超时时间
    timeout = 30
    

      

    2.3 hosts主机清单

    默认hosts文件/etc/ansible/hosts,被操作的主机必须在hosts主机清单中。​​​​​​​

    cd /etc/ansible
    vim hosts
        #分组
    [mons]
        #设置主机别名
    ceph-node-1 ansible_ssh_host=172.16.93.1
    [client]
    172.16.93.1:2222
        #同时也支持域名和主机名,最终解释到IP
        #支持正则表达式
    [kvm_node_all]
    172.16.93.[6:9]
        #设置分组主机变量
    [kvm_node_all:vars]
    ansible_ssh_user=root
    ansible_ssh_pass=Efly1234
    ansible_ssh_port=22
        #自动义变量
    my_name=zhangsan
        #主机的继承关系,会继承父的所有变量
    [kvm_node_all:children]
    client
    

      

    2.4 Ansible管理机与被管理机做秘钥认证(可选)​​​​​​​

    # 生成秘钥
        ssh-keygen
    #生成后会得到下面2个文件
        [root@ansible ~]# tree /root/.ssh/
        /root/.ssh/
        ├── id_rsa
        └── id_rsa.pub
    # 将公钥写入被管理机
        ssh-copy-id 192.168.199.52
    #或
        ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@192.168.199.52
    

      

  • 相关阅读:
    vue bus 中央事件总线
    0时间复杂度
    stack 数据结构
    es6 class
    directives 自定义指令
    node中间件
    数据结构博客清单
    TCP/IP 协议栈博客清单
    Java 面向对象:接口
    Java 面向对象:Object 类
  • 原文地址:https://www.cnblogs.com/eflypro/p/12720400.html
Copyright © 2011-2022 走看看