zoukankan      html  css  js  c++  java
  • Ansible--原理

    什么是Ansible

    Ansible是一种IT自动化运维工具,它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署或者是零停机滚动更新
    Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
    Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
    Ansible的主要目的是简单易用,它还非常注重安全性很可靠性,具有最少的移动部件,使用OPenSSH进行传输(使用其他的传输和拉取模式作为代替方案)
    Ansible以无代理方式管理机器。永远不会出现如何升级远程守护进程或无法管理系统的问题,因为卸载了守护进程。由于OpenSSH是最受同行评审的开源组件之一,因此安全风险大大降低
    Ansible是分散式的 - 它依赖于您现有的操作系​​统凭据来控制对远程计算机的访问。如果需要,Ansible可以轻松连接Kerberos,LDAP和其他集中式身份验证管理系统

    Ansible架构

    架构图说明:

    public/private cloud:   公有云私有云
    Users:                 管理用户(使用Ansible的人员)
    Ansible:               Ansible软件
    Host invertory:        被管理的主机清单
    Playbooks:             Ansible编排工具
    Core Modules:          Ansbile 核心模块
    Custom Modules:         Ansible 自定义模块
    Plugins:               其他插件(通过插件来记录日志)
    Connection Plugins:    连接插件(使用此插件连接被控端)
    Host1..HostN:          被控端主机
    

    Ansible工作机制

    温馨提示:

    Ansible没有客户端,因此底层通信依赖于系统软件,Linux系统下是基于OPenSSH通信,windows系统下是基于PowerShell,管理端必须是Linux,使用者认证通过后在管理节点通过Ansible工具调用各应用模块指令推送到被管理端执行,并在执行完毕后自动删除产生的临时文件

    工作机制图说明:

    CMDB:                  配置管理数据库(使用Ansible的一种方式)
    USERS:                 管理用户(使用Ansible的人员)
    ANSIBLE PLAYBOOK:      Ansible任务剧本(任务集)
    INVERTORY:             被管理的主机清单
    API:                   供第三方程序调用的应用程序编程接口
    MODULES:                AnsIble使用的模块(内置模块,自定义模块)
    PLUGINS:                Ansbile使用的插件(模块功能的补充方式,这里包括很多的插件)
    HOSTS:                  被控端主机
    NETWORKING:             被控端网络设备(交换机,路由器等)
    

     Ansbile主要的组成部分:

    ANSIBLE PLAYBOOK:      Ansible任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件
    INVENTORY:             被管理的主机清单(在/etc/ansbile/hosts文件中)
    MODULES:                AnsIble使用的模块(内置模块,自定义模块)
    PLUGINS:                Ansbile使用的插件(模块功能的补充方式,如连接类型插件,循环插件,变量插件,过滤插件等)这个功能很少使用
    API:                   供第三方程序调用的应用程序编程接口
    ANSIBLE:                组合inventory,api,modules,plugins的绿框,可以理解为是ansible命令工具,其为核心的执行工具
    

    Ansible特性

    1) 模块化:调用特定的模块,完成特定的任务
    2) 有Parmiko,PyYAML,Jinjia2(模板语言)三个关键模块
    3) 支持自定义模块
    4) 基于Python语言开发(可对其进行二次开发)
    5) 部署简单,基于Python和SSH(默认以安装)
    6) agentless(被控端无需安装Agent)
    7) 安全,基于OPenSSH
    8) 支持playbook编排任务
    9) 幂等性:一个任务执行一遍和执行N遍效果一样,不会因为重复执行带来意外错误
    10) 可以使用任何的编程语言写模块
    11) YAML格式,编排任务,支持丰富的数据结构
    12) 较强大的多层解决方案(多层概念:多个playbook的集合)

    Ansible安装

    更加刺激的安装教程请点击:https://www.cnblogs.com/brianzhu/p/10163899.html

  • 相关阅读:
    Ural-1018 Binary Apple Tree(树形dp+分组背包)
    Ural 1332 把圆细分+圆内切,内含关系判定
    读取图片文件(C#实现)
    使用ZXing.dll库生成二维码(C#实现)
    combobox绑定数据
    DataGridView显示日期格式问题
    夜深忽梦少年事
    Scrum角色
    Srum框架
    Scrum流程
  • 原文地址:https://www.cnblogs.com/brianzhu/p/10163671.html
Copyright © 2011-2022 走看看