0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何区分Puppet,Ansible,Saltstack的作用特点?

马哥Linux运维 来源:未知 作者:工程师郭婷 2018-08-05 09:00 次阅读

目前主流的自动化运维工具有puppet、ansible、saltstack,实际上每一个工具都基本上能够完成你的运维任务,也都是久经考验的。都有NB的地方,也有挫的地方,所以,完全没法从功能、特性等等这些方面去选择。

如果考虑到快速使用,建议puppet,有一个foreman做web平台,上手快。

如果考虑后期自己开发,并且是无agent方式,可以用ansible,基于ssh的,比较直接粗暴,会有种很“爽“的感觉。

ansible主要是远程命令执行,比较适合做“一次性”的工作。

saltstack用的不多,不做评论。

我个人比较喜欢用puppet和ansible,倒不是说saltsatack不好,是我从开始就在用puppet,所以,就没有再去学习saltsatck的必要了。

ansible的优势是什么,如何在企业中更好地使用ansible?

ansible比较适合做“一次性”的工作,例如,系统部署、应用发布、打补丁等等。

在企业中使用ansible,要注意以下几点:

1. 安全控制,简单来说就是避免用root用户来执行。

2. 控制好依赖 在写playbook的时候,控制好先后顺序和依赖关系。

3. 结果的收集和分析 因为一下子几百台机器一起干活,所以,就要自己写外置脚本,更好地收集ansible的操作结果,并且进行直观的汇总和展现。

Foreman的作用是什么?

foreman是基于puppet的一个“增强工具”,主要能够帮到我们运维狗的有:

1. 操作系统的部署

foreman提供了一个基于kickstart的部署工具,输入一台服务器的部署网卡的mac地址和hostname、ip等信息,就能自动的帮我们部署完,并且,还可以生成一个部署iso,用于该服务器的重新部署。

2. puppet的节点管理(ENC)

原声的puppet管理节点分类以及节点和puppet类之间的映射靠文件描述,企业客户更希望有一个直观的工具,foreman可以通过Web界面将节点分组,将类分组,并且构建两者的映射关系。

3. puppet的Web界面

有个Web总是比命令行要方便,foreman提供了一个还算的过去的web界面,用于节点管理、类管理、变量管理、配置管理、部署管理等功能。

如何利用foreman呢?

说实话,相比运维狗能写出来的界面,foreman已经很高大上了,所以,我们前面几个项目都是基于foreman进行扩展的,当时学习ruby,做需求分析,苦逼的用ruby实现功能,当时实现了自动化的安全检查、系统升级等功能。

后来客户需求越来越多,我们觉得不能局限于foreman的限制,就开始利用foreman的REST API实现功能的扩展,保证一个干净、原生的foreman。

foreman给我们的一个很大帮助就是,他把所有的配置、fact结果、运行结果什么都放到了mysql数据库里,所以,我们在做一些运行分析的时候,可以直接从数据库中获取数据进行分析即可。

foreman帮我们搞定了节点管理、数据入库,剩下的就是你的想象力了。

puppet的fact机制是什么,如何利用fact?

简单来说,fact就是puppet的一个组件,这个组件以一堆ruby脚本的形式存在在被管理服务器上,每次运行puppet命令的时候,都会先执行这一堆脚本,获得一堆变量=>值对,然后返回给服务器。

可以在一个安装了puppet的服务器上执行facter命令:

[root@fm-server ~]# facter

architecture => x86_64

augeasversion => 1.0.0

bios_release_date => 12/01/2006

bios_vendor => innotek GmbH

bios_version => VirtualBox

......

interfaces => eth0,lo

ipaddress => 192.168.56.30

ipaddress_eth0 => 192.168.56.30

ipaddress_lo => 127.0.0.1

is_virtual => true

kernel => Linux

kernelmajversion => 3.8

kernelrelease => 3.8.13-44.1.1.el6uek.x86_64

kernelversion => 3.8.13

...

具体脚本的位置在:/usr/lib/ruby/site_ruby/1.8/facter/ 这个目录中,有兴趣的同学可以自己看看。

系统默认了将近100个fact变量,实际上我们也可以自己扩展自己需要的fact变量,扩展fact有4种方法:

1. 直接在/usr/lib/ruby/site_ruby/1.8/facter/目录中自己写一个fact脚本,看看其他的怎么写的,比划着写就行了

2. 自己随便找个目录,把你自己的ruby脚本放到哪个目录中,然后定义变量:export FACTERLIB=/mypuppet/myfact/,脚本写法同上

3. fact支持外部fact,这个定义写在了/usr/lib/ruby/site_ruby/1.8/facter/util/config.rb文件中:

@external_facts_dirs = ["/opt/puppetlabs/facter/facts.d",

"/etc/facter/facts.d",

"/etc/puppetlabs/facter/facts.d"]

把你的fact定义放到那些目录中(可能需要自己创建),fact定义支持txt、yaml、json、sh四种方式,我比较喜欢用sh:

[root@fm-server ~]# mkdir -p /etc/facter/facts.d

[root@fm-server ~]# cd /etc/facter/facts.d/

[root@fm-server facts.d]# vi test.sh

#!/bin/bash

echo "testfact=Test"

[root@fm-server facts.d]# chmod 755 test.sh

[root@fm-server facts.d]# facter |grep test

testfact => Test

4. 用pluginsync发布,这个方法我用的很少,因为太麻烦了,我是极简主义者

对于自定义facter,大家可以参考

https://docs.puppetlabs.com/facter/3.1/fact_overview.html

找到了这个机制,我们如何利用facter呢? 通常来说,有2个用法:

1. 使用fact变量来实现配置的自动调节

例如apache服务器,希望按照cpu的核数调整并发的进程数

fact变量中有一个:

[root@fm-server ~]# facter |grep process

physicalprocessorcount => 1

processor0 => Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz

processorcount => 1

processors => {"physicalcount"=>1, "count"=>1, "models"=>["Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz"]}

就可以在apache的puppet类中写:

StartServers <%= @processorcount.to_i*12 %>

这样不同的服务器的apache的启动进程就不同了

2. 利用fact收集想收集的信息

这个在自定义配置中已经讲了方法,反正是shell脚本,你想干啥就干啥,

foreman会把fact入库,你可以很方便的通过api或者直接访问数据库来获得你想要的数据。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9295

    浏览量

    85995
  • root
    +关注

    关注

    1

    文章

    86

    浏览量

    21414

原文标题:Puppet,Ansible,Saltstack 有哪些区别和联系

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Ansible软件平台

    Ansible 是一个免费的用于配置和管理计算机的的软件平台。它集成了软件部署,ad hoc任务执行,和管理配置的功能。它依赖Python2.4之后的版本和通过SSH或者PowerShell管理节点
    发表于 07-18 08:24

    ansible核心程序批量部署

    ansible批量部署
    发表于 07-26 15:30

    ansible调用playbook远程mvn显示找不到JAVA_HOME

    ansible 】关于ansible远程执行的环境变量问题
    发表于 11-06 09:26

    ansible的工作原理和安装

    ansible安装(一)
    发表于 03-25 11:19

    ansible 某台机器的ssh端口不是默认端口,如何解决?

    现象:ansible 某台机器的ssh端口不是默认端口
    发表于 11-06 06:56

    Saltstack配置管理大全

    Saltstack配置管理大全
    发表于 09-08 09:01 9次下载
    <b class='flag-5'>Saltstack</b>配置管理大全

    使用用Ansible重复部署ELK STACK

    本文介绍如何使用Ansible 剧本在远程服务器上设置ELK(5.x版本)进行开发。它将带你完成安装Ansible的步骤,连接到目标服务器,执行该剧本,并建立初始的日志流水线。 让我们开始吧! 1.
    发表于 09-28 14:50 0次下载
    使用用<b class='flag-5'>Ansible</b>重复部署ELK STACK

    Ansible到底是个什么东西?

    Ansible 是一个配置管理和应用部署工具,即在管理主机上操作一些命令就能在节点主机上进行相应的动作。由 Python 编写,由模块化组成,即执行动作的实体,在 ansible 上都是靠着相应
    的头像 发表于 04-08 14:47 2.2w次阅读
    <b class='flag-5'>Ansible</b>到底是个什么东西?

    Ansible入门教程如何快速了解Ansible

    顶级大牛带你20分钟玩转Ansible
    的头像 发表于 05-12 11:49 5173次阅读

    一文详解Ansible的自动化运维

    CMDB:CMDB 存储和管理者企业IT架构中的各项配置信息,是构建 ITIL 项目的核心工具,运维人员可以组合 CMDB 和 Ansible,通过 CMDB 直接下发指令调用Ansible 工具集完成操作者所希望达到的目标;
    的头像 发表于 05-19 17:06 4409次阅读
    一文详解<b class='flag-5'>Ansible</b>的自动化运维

    puppet-glusterfs Puppet上的GlusterFS管理插件

    puppet-glusterfs.zip
    发表于 05-05 11:18 0次下载
    <b class='flag-5'>puppet</b>-glusterfs <b class='flag-5'>Puppet</b>上的GlusterFS管理插件

    Puppet集中式系统管理

    puppet.zip
    发表于 05-05 09:42 0次下载
    <b class='flag-5'>Puppet</b>集中式系统管理

    Ansible Container容器自动化构建部署工具

    ./oschina_soft/ansible-container.zip
    发表于 05-11 10:15 1次下载
    <b class='flag-5'>Ansible</b> Container容器自动化构建部署工具

    什么是Ansible

    Ansible是一种运维自动化工具软件,用来批量配置服务器或网络设备(目标主机)。
    的头像 发表于 02-15 14:06 1189次阅读

    网络设备自动化运维工具—ansible入门笔记介绍

    Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具 (Puppet、CFengine、Chef、SaltStack)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
    的头像 发表于 01-15 13:46 2098次阅读
    网络设备自动化运维工具—<b class='flag-5'>ansible</b>入门笔记介绍