zoukankan      html  css  js  c++  java
  • ansible基础-理解篇

    1. 介绍

    要说现在的部署工具,ansible可以说家喻户晓了。

    ansible是一个开源软件,用于软件供应、配置管理、应用部署。ansible可以通过SSH、remote PowerShell、其他API进行通讯(from Wikipedia)。

    因工作中有幸能接触到puppet和ansible,对两种部署工具也有了一定了解,而且这周参加了红帽Automation with Ansible培训与考试,学习的过程中感触良多,现总结下笔者对两种部署工具的理解,供大家参考。 

    2. ansible与puppet的对比

    ansible和puppet之强大只有使用后才能体会得到。

    通过使用这两种工具,给我的感觉,感性的概括下:ansible就像一把瑞士军刀,灵活,简单,快捷,比较适合中小规模集群管理;puppet就像一个成熟,稳定,功能齐全但略显笨重的大型武器。因为能通过一定手段横向扩展master,所以对集群规模适用性更加广泛。 

    ​关于puppet-master的高可用和横向扩展方法,可参考余兴超大佬的博客https://www.cnblogs.com/yuxc/p/3147320.html

    在部署openstack上,后端服务我们使用的puppet部署,本着尽量避免自己造轮子的原则,核心组件基本用的社区现成的代码,自己写一个module去调用openstack核心模块作为统一出口。前端cmp(cloud manage platform)使用ansible部署,考虑到我们的cmp是由自己定制开发的,部署代码也是全部自己编写。

    2.1 共同点

    有过一些了解和使用后,会发现这两个部署工具有着很多相同之处。毕竟他们的作用与目的都是相同的,都是为了实现编排部署顺序与配置管理。

    • 系统基础变量都使用fact获取(获取的方式不同)
    • 执行方式都是server端实现编排,然后拷贝脚本或catalog到目的主机去执行
    • 受管服务的配置文件都可以采用模版的方式进行管理

    2.2 异同点

    如果说puppet和ansible最大的区别就是架构设计上的区别,前者是c/s架构,后者是Serverless架构。也就是说puppet需要部署master和agent服务,而ansible只要有python环境和ssh就可以使用了,这也可以说是puppet的劣势。

    其它区别:

    • 编程语言不同,puppet使用ruby而ansible使用python
    • 通信协议不同,puppet使用ssl加密协议而ansible使用ssh协议
    • 任务执行顺序规则不同,puppet资源执行顺序默认是无序的,而ansible默认是按照task定义顺序执行 

    2.3 好与坏

    ansible的优势

    • Serverless架构使ansible拿来即用,不需要再想办法部署server和agent,减少了准备阶段的时间成本
    • CLI更加丰富,ansible可以对指定主机或主机组进行批量的命令行操作,非常灵活,而puppet不能
    • 不用过于关心任务的执行顺序,因为task的书写顺序就是执行顺序,而puppet要对每个资源执行顺序进行指定
    • 学习成本低,ansible的语法很通俗易懂,现有的core module已经够用了,而puppet需要对ruby有一定了解才能写type和provider
    • 使用python和ssh协议给ansible带来了很大优势,因为这两个东西在流行的操作系统上是默认安装的
    • ansible在社区的活跃度要比puppet高很多,例如openstack-ansible openshift-ansible项目等

    上面说到puppet C/S架构的劣势,在工作中这里遇到一个痛点,在扩容计算节点时,总是要用ansible部署下puppet-agent服务和配置,对于部署agent的时间成本,我觉得ansible是有绝对优势的。 

    puppet优势

    • 执行结果的日志输出更加完善,ansible的报错是真的不太友好
    • 自定义方法更加灵活,可以使用custom resource加template共同管理配置文件。如果擅长ruby可以在module里定义很多灵活的自定义资源,类似于配置nova.conf的nova_conf资源
    • 变量存储位置比较集中,除了facter就是hieradate文件夹内,而ansible定义变量的位置比较多,这就要考虑优先级的问题,关于变量优先级,后序的文章“ansible基础-变量”会详细阐述
    • puppet是比较老牌的部署工具,发展比较成熟,尤其是官档写的真心不错,有些企业早年使用了puppet并有了一定规模后,就不太愿意投入时间和人力替换到其他部署工具

    3. ansible系列写作计划

    接下来,在长达几周的时间里,笔者会根据“红帽DO407 Automation with Ansible”课程大纲和工作经验,总结和扩展下ansible相关的基础知识,列表如下:

    • ansible基础-安装与配置
    • ansible基础-playbooks
    • ansible基础-变量
    • ansible基础-task控制
    • ansible基础-Jinja2模版
    • ansible基础-roles
    • ansible基础-加密
    • ansible基础-优化

    4. 参考链接

    • 红帽DO407 Automation with Ansible 教材

    • (https://www.cnblogs.com/yuxc/p/3147320.html)

    • (https://docs.puppet.com)

    • (https://docs.ansible.com/ansible/devel/user_guide/intro.html)

    • (https://en.wikipedia.org/wiki/Ansible_(software))

    欢迎大家关注我的公众号:

  • 相关阅读:
    安装cifs 访问windows的共享文件
    创建swap文件
    linxu 网路的一些命令
    database mysql
    __alloc_pages
    firefox tips
    关于文件的BOM头
    java实现跳表
    java中如何优雅的停止一个线程
    java中Thread启动流程分析
  • 原文地址:https://www.cnblogs.com/mauricewei/p/10042250.html
Copyright © 2011-2022 走看看