puppet

自动化运维工具Ansible-基础介绍(一)

走远了吗. 提交于 2020-04-13 11:54:16
【今日推荐】:为什么一到面试就懵逼!>>> 自动化运维工具Ansible-基础介绍 1、简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自定义模块; (4)、借助于插件完成记录日志邮件等功能; (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。 2、特性 (1)、no agents:不需要在被管控主机上安装任何客户端; (2)、no server:无服务器端,使用时直接运行命令即可; (3)、modules in any languages:基于模块工作,可使用任意语言开发模块; (4)、yaml not code:使用yaml语言定制剧本playbook; (5)、ssh by default:基于SSH工作; (6)

vagrant 入门案例

旧巷老猫 提交于 2020-04-11 10:24:02
中文文档: http://tangbaoping.github.io/vagrant_doc_zh/v2/ 参考: https://blog.csdn.net/yjk13703623757/article/details/70040797 https://www.linuxidc.com/Linux/2017-05/144101.htm Vagrant是一款用来构建虚拟开发环境的外挂工具,可以简化虚拟机配置和管理。它底层支持VirtualBox、VMware、AWS等,非常适合使用php/python/ruby/java语言开发web应用,“代码在我机子上运行没有问题”这种说辞将成为历史。 1. 安装VirtualBox 去官网 https://www.virtualbox.org/wiki/Downloads 下载最新版的Virtualbox,然后双击安装,一直点击确认完成。 2. 安装Vagrant 去官网 https://www.vagrantup.com/downloads.html 下载最新版的Vagrant,然后双击安装,一直点击确认完成。在windows下安装vagrant,为了写入相应配置到环境变量,系统可能会要求重新启动。在命令行中,输入vagrant,查看程序是不是已经运行了。如果不行,请检查一下$PATH里面是否包含vagrant所在的路径 3. 准备box

Puppet

送分小仙女□ 提交于 2020-04-06 03:23:22
目录 一、puppet的作用 3 1.1、系统运维的三个层面 3 1.1.1、OS Provision:操作系统安装层 3 1.1.2、Configuration:配置层面 3 1.1.3、Command and Control:命令化的批量完成 3 二、Puppet工作方式 3 三、Puppet的工作机制 5 四、Puppet 的三层模型 5 五、puppet的工作模型 5 5.1、单机模型介绍 5 5.2、master/agent介绍 6 六、单机模型的具体应用 7 6.1、安装程序包 7 6.2、程序环境 8 6.3、puppet apply 8 6.4、puppet资源 8 6.5、puppet describe 9 6.6、资源引用 9 6.6.1、资源引用的语法 10 6.7、资源之间的两种关系 10 6.7.1、依赖关系 10 6.7.2、通知关系 12 6.8、常用资源类型 13 6.8.1、group 13 6.8.2、user 15 6.8.3、package 16 6.8.4、service 16 6.8.6、exec 19 6.8.7、cron 20 6.8.8、notify 21 七、puppet variable 21 7.1、基本格式 21 7.2、数据类型 21 7.2.1、字符型 21 7.2.2、数值型 21 7.2.3、数组 21 7.2.4

Puppet 的部署与应用,看这一篇就够了

巧了我就是萌 提交于 2020-03-01 10:53:17
工作原理 Puppet的目的是让管理员只集中于要管理的目标,而忽略实现的细节。Puppet既可以在单机上使用,也可以c/s使用,在大规模使用puppet的情况下,通常使用c/s结构,在这种结构中puppet客户端只运行puppetclient,puppet服务器只运行puppetmaster。 工作流程 1)客户端puppet调用facter(facter是通过ssl加密收集及检测分析客户端配置信息的一个工具),facter探测出主机的一些变量,如主机名,内存大小,ip地址等。Puppet把这些信息通过ssl连接发送到服务器器端 2)服务器端的puppetmaster通过facter工具分析检测客户端的主机名,然后找到项目主配置文件mainfest里面对应的node配置,并对该部分内容进行解析。Facter发送过来的信息可以作为变量处理,node牵扯到的代码才解析,其他没牵涉的代码不解析,解析分为几个阶段,首先进行语法检查,如果语法没错,就继续解析,解析的结果生成一个中间的“伪代码”,然后把伪代码发送给客户端。 3)客户端接收到伪代码,并执行,客户端把执行的结果发送给服务器。 4)服务器把客户端的执行结果写入日志。 Puppet工作过程有以下两点值得注意: 1)为了保证安全,client和master之间是基于ssl和证书的

Rails中的ERB中的<%,<%=,<%#和-%>有什么区别?

时间秒杀一切 提交于 2020-02-28 05:56:37
能否请您描述一下ERB文件中使用的以下字符的用法: <% %> <%= %> <% -%> <%# %> 每个有什么用? #1楼 Rails默认 不 使用 stdlib的ERB ,而是使用 erubis 。 资料来源: 该开发人员的评论 , ActionView的gemspec 接受了我在编写此 文档时所做的 合并请求 。 它们 之间行为的差异,特别是关于如何连字符运营 %- 和 -% 的工作。 文档稀缺, Ruby的ERB格式在哪里“正式”定义? 因此,以下是经验结论。 所有测试都假定: require 'erb' require 'erubis' 何时可以使用 - ERB:你必须通过 - 对 trim_mode 的选项 ERB.new 使用它。 erubis:默认启用。 例子: begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end ERB.new("<%= 'a' -%>\nb" , nil, '-') .result == 'ab' or raise Erubis::Eruby.new("<%= 'a' -%> \n b").result == 'a b' or raise -% 是: ERB:如果下一个字符是换行符,则将其删除。 erubis: 在 <% %> (无 = )中

Linux Puppet服务安全配置(Puppet服务器 2Puppet客户端)(集中配置管理 同步服务器:客户端拉取、服务器推送)

℡╲_俬逩灬. 提交于 2020-01-21 00:36:19
案例 概 述 随着服务器数量的增多,管理的任务量也逐渐增加,这时就需要简洁的、强大的框架来 完成系统管理任务 实现这一目的,我们将引入一批工具,这批工具是 “可编程”的,管理人员只需要为 这批工具写上几行“代码”,它便会自动完成所有的工作,这批工具就是自动化puppet 在一些大型互联网企业中,自动化管理着几百甚至上千台服务器,它可以针对多台服务 器进行统一操作 ,例如部署统一软件、进行统一上线维护等,而且能够快速完成上线 部署,减少人力及人力误操作风险 案例分析-----工作流程 案例分析-----配置要求 搭建puppetmaster 搭建puppetclient 配置测试节点 客户端主动拉取 服务器推送 实验环境搭建 1台Puppetmaster服务器(NTP服务器) 2台Puppetclient客户端 Puppetmaster服务器:192.168.11.10/24 Puppetclient1:192.168.11.11/24 Puppetclient2:192.168.11.12/24 配置Puppetmaster服务器 基本配置 关闭防火墙设置ip 配置yum仓库文件 测试yum 搭建Puppetmaster服务器 规划服务器主机名 临时修改主机名并生效 配置服务器时间同步 时间同步(由于是本机就不用此步骤 可以在客户端上测试) 安装ruby 查看ruby的版本等信息

Puppet核心资源类型浅析

痞子三分冷 提交于 2020-01-20 12:36:30
作者:刁冰雪 时间:2018-02-02 一、核心类型——PACKAGE 典型案例说明 1、使用latest将软件持续安装为最新版 使用yum源安装软件时,package类型提供了两种软件安装的方式,present和latest。使用present参数实现软件安装时,仅确保该软件存在即可,不关注版本,只有该软件不存在时才会进行安装。而使用latest参数实现软件安装时,当软件源中的安装包有版本更新时,latest则会自动将软件升级为最新的版本。对于工具类软件,建议使用latest保持最新版本;对于运行环境,如python、java则建议使用present避免自动升级可能发生的兼容性问题。 配置说明 class smallflow::test { package { ["tree"]: ensure => "latest", } } 2、使用provider属性通过rpm安装软件时,该软件包必须处于本地目录 source中的路径需为本机地址,因此若本地路径不存在该安装软件包时,需要通过file方法将安装包传递到agent本机。此处不可通过source指定master端的路径实现远程安装。 配置说明 class smallflow::test { file {"/tmp/tree-1.5.3-3.el6.x86_64.rpm": owner => "root", group =>

自动化运维工具puppet详解(二)

北战南征 提交于 2020-01-17 22:52:48
一、class 类 1)什么是类?   类是puppet中命名的代码模块,常用于定义一组通用目标的资源,可在puppet全局调用;   类可以被继承,也可以包含子类;   具体定义的语法如下: class NAME{ ... puppet code ... }   其中,在我们定义的时候,需要注意的是: 类的名称只能以小写字母开头,可以包含小字字母、数字和下划线。 每个类都会引入一个新的变量scope ,这意味着在任何时候访问类中的变量时,都得使用其完全限定名称。 不过,在本地 scope 可以重新为 top scope 中的变量赋予一个新值。   下面,我们来看一个简单的例子: vim class1.pp class redis { #定义一个类 package{'redis': ensure => installed, } -> file{'/etc/redis.conf': ensure => file, source => '/root/manifests/file/redis.conf', owner => 'redis', group => 'root', mode => '0640', tag => 'redisconf' } ~> service{'redis': ensure => running, enable => true, hasrestart =>

Puppet : How to load file from agent - Part 2

二次信任 提交于 2020-01-17 08:51:19
问题 I am trying to load the contents of a json file and assign them to variables. My json file looks like this : { "master":{ "key1":"value1", "key2":"value2", "key3":"value3" } } On my local machine, I was able to use the following manifest to load the json file and parse it ; it worked just fine. $master_hash=loadjson('some_file.json') $key1=$master_hash['master']['key1'] $key2=$master_hash['master']['key2'] $key3=$master_hash['master']['key3'] However, when I move it to the Puppet master, this

Why does Augeas Puppet resource type need 3 arguments for defnode?

混江龙づ霸主 提交于 2020-01-14 04:55:48
问题 I'm trying to add or update a user in an xml config file using augeas resource type in Puppet, here the manifest: augeas { "nexus_user_newadmin": lens => "Xml.lns", incl => "security.xml", root => "/usr/local/nexus/conf", changes => [ "defnode user /files/security.xml/security/users/user[id/#text='newadmin']", "set $user/id/#text 'newadmin'", "set $user/firstName/#text 'first name'", "set $user/lastName/#text 'last name'", "set $user/password/#text 'passhere'", "set $user/status/#text 'active