文档章节

在 CentOS 和 RHEL 上安装 Puppet 服务器和客户端

l
 langtu329
发布于 2015/10/19 17:04
字数 2019
阅读 61
收藏 6
点赞 0
评论 0

当手中有相当多的机器需要管理的时候,自动化处理冗余又无聊的任务对系统管理员来说就很重要了。很多管理员习惯了自己写脚本模拟复杂软件之间的调度。不幸的是,脚本会过时,脚本的作者会离职,如果不花费巨大精力来维护这些脚本的话,它们早晚会一点儿用也没有。如果能有一个系统,任何人都可以使用、安装工具,不论其受雇于何人,那真是太期待了。目前已有几种系统可以解决这类需求,这篇教程将介绍其中之一——Puppet——的使用方法。

Puppet 是什么?

Puppet 是一款为 IT 系统管理员和顾问们设计的自动化软件,你可以用它自动化地完成诸如安装应用程序和服务、补丁管理和部署等工作。所有资源的相关配置都以“manifests”的方式保存,单台机器或者多台机器都可以使用。如果你想了解更多内容,Puppet 实验室的网站上有关于 Puppet 及其工作原理的更详细的介绍。

本教程要做些什么?

在这篇教程里,我们将一起安装配置一个 Puppet 服务器,然后在我们的客户端服务器(译注:这里的“客户端服务器”指需要部署业务逻辑的服务器)上完成一些基本配置。

准备工作

由于 Puppet 不是 CentOS 或 RHEL 发行版的基本仓库,所以我们得手动添加 Puppet 实验室提供的自定义仓库。在所有你想使用 Puppet 的地方执行以下命令安装这个仓库(版本不同,对应的 RPM 文件名可能略有不同)。

对于 CentOS/RHEL 6.5:

# rpm -ivh https://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs-release-6-10.noarch.rpm

对于 CentOS/RHEL 7:

 # rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-10.noarch.rpm

安装服务器端

在你打算用作 master 的服务器上安装 "puppet-server" 包。

# yum install puppet-server

安装完成后,设置 Puppet 服务器开机自动启动,然后启动它。

# chkconfig puppetmaster on# service puppetmaster start

现在服务器已经运行起来了,我们试试看我们的网络能不能访问到它。

对于使用 iptables 当做防火墙的 CentOS/RHEL 6,在 /etc/sysconfig/iptables 文件的 OUTPUT ACCEPT 小节里添加下面这一行。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT

重新启动 iptables 服务让刚才的修改生效。

# service iptables restart

在安装了防火墙的 CentOS/RHEL 7 上,我们这么做:

# firewall-cmd --permanent --zone=public --add-port=8140/tcp# firewall-cmd --reload

安装客户端

执行下面的命令,在客户端节点安装 Puppet 客户端。

# yum install puppet

安装完成后,确保 Puppet 会随开机自动启动。

# chkconfig puppet on

Puppet 客户端需要知道 Puppet master 服务器的地址。最佳方案是使用 DNS 服务器解析 Puppet master 服务器地址。如果你没有 DNS 服务器,在 /etc/hosts 里添加类似下面这几行也可以:

1.2.3.4 server.your.domain

2.3.4.5 client-node.your.domain

1.2.3.4 对应你的 Puppet master 服务器 IP 地址,“server.your.domain”是你的 master 服务器域名(默认通常是服务器的 hostname),“client-node.your.domain”是你的客户端节点。包括 Puppet master 和客户端,所有相关的服务器都要在 hosts 文件里配置。

完成这些设置之后,我们要让 Puppet 客户端知道它的 master 是谁。默认情况下,Puppet 会查找名为“puppet”的服务器,但通常这并不符合你网络环境的真实情况,所以我们要改成 Pupper master 服务器的完整域名。打开文件 /etc/sysconfig/puppet,把 PUPPET_SERVER 变量的值改成你在 /etc/hosts 文件里指定的 Puppet master 服务器的域名。

PUPPET_SERVER=server.your.domain

master 服务器名也要在 /etc/puppet/puppet.conf 文件的“[agent]”小节里事先定义好。

server=server.your.domain

现在可以启动 Puppet 客户端了:

# service puppet start

强制我们的客户端在 Puppet master 服务器上登记:

# puppet agent --test

你会看到类似于下面的输出。别怕,这是正常现象,因为服务器还没有在 Puppet master 服务器上验证过。

Exiting; no certificate found and waitforcert is disabled

返回 Puppet master 服务器,检查证书验证请求:

# puppet cert list

你应该能看到一个列出了所有向 Puppet master 服务器发起证书签名请求的服务器。找到你客户端服务器的 hostname 然后使用下面的命令签名(client-node 是你客户端节点的域名):

# puppet cert sign client-node

到此为止 Puppet 客户端和服务器都正常工作了。恭喜你!但是,现在 Puppet master 没有任何要客户端做的事儿。好吧,我们来创建一些基本的 manifest 文件然后让我们的客户端节点安装一些基本工具。

回到你的 Puppet 服务器,确保目录 /etc/puppet/manifests 存在。

# mkdir -p /etc/puppet/manifests

创建 manifest 文件 /etc/puppet/manifests/site.pp,内容如下

node 'client-node' {        include custom_utils} class custom_utils {        package { ["nmap","telnet","vim-enhanced","traceroute"]:                ensure => latest,                allow_virtual => false,        }}

然后重新启动 puppetmaster 服务。

# service puppetmaster restart

客户端默认每 30 分钟更新一次配置,如果你希望你的修改能强制生效,就在客户端执行如下命令:

# puppet agent -t

如果你需要修改客户端的默认刷新时间,编辑客户端节点的 /etc/puppet/puppet.conf 文件中“[agent]”小节,增加下面这一行:

runinterval =

这个选项的值可以是秒(格式比如 30 或者 30s),分钟(30m),小时(6h),天(2d)值得注意的是,0 意味着“立即执行”而不是“从不执行”

提示和技巧

1. 调试

你免不了会提交错误的配置,然后不得不通过调试判断问题出现在哪儿。一般来说,你要么通过查看日志文件 /var/log/puppet 着手解决问题,要么手动执行查看输出:

# puppet agent -t

使用“-t”选项,你可以看到 Puppet 的详细输出。这条命令还有额外的选项可以帮你定位问题。首先要介绍的选项是:

# puppet agent -t --debug

debug 选项会显示 Puppet 本次运行时的差不多每一个步骤,这在调试非常复杂的问题时很有用。另一个很有用的选项是:

# puppet agent -t --noop

这个选项让 puppet 工作在 dry-run(译注:空转模式,不会对真实环境产生影响)模式下,不会应用任何修改。Puppet 只会把其工作内容输出到屏幕上,不会写到磁盘里去。

2. 模块

有时候你需要更复杂的 manifest 文件,在你着手编写它们之前,Forge 是一个集合了 Puppet 模块的社区,你有必要花点儿时间浏览一下 https://forge.puppetlabs.com

现在,假设你已经找到了一个模块能解决你的问题。怎么把它安装到你的系统中去呢?非常简单,因为 Puppet 已经有了可以直接下载模块的用户界面,只需要执行下面的命令:

# puppet module install <module_name> --version 0.0.0

<module_name> 是你选择的模块的名字,版本号可选(如果没有指定版本号,默认使用最新的版本)。如果你不记得想安装的模块的名字了,试试下面的命令搜索模块:

# puppet module search <search_string>

你会得到一个包含 search_string 的列表。

# puppet module search apache


Notice: Searching https://forgeapi.puppetlabs.com ...NAME                   DESCRIPTION                        AUTHOR          KEYWORDSexample42-apache       Puppet module for apache           @example42      example42, apachepuppetlabs-apache      Puppet module for Apache           @puppetlabs     apache web httpd centos rhel ssl wsgi proxytheforeman-apache      Apache HTTP server configuration   @theforeman     foreman apache httpd DEPRECATED

如果你想查看已经安装了哪些模块,键入:

# puppet module list

总结

到目前为止,你应该有了功能完整的可以向一个或多个客户端服务器推送基本配置的 Puppet master 服务器。你可以自己随便加点儿配置适配你自己的网络环境。不必为试用 Puppet 担心,你会发现,它会拯救你的生活。


本文转载自:

共有 人打赏支持
l
粉丝 4
博文 51
码字总数 3286
作品 0
杭州
YUM源详解以及EPEL源的创建

YUM是什么? yum(全称为Yellowdog Updater Modified)是一个在CentOS、RedHat和Fedora操作系统中使用的Shell前端软件包管理器。yum主要管理基于rpm的软件包,Centos先将发布的软件放置到YUM...

哆先生 ⋅ 04/16 ⋅ 0

为什么Ansible在自动化编排成为王者!

Ansible是一个广泛应用的自动化平台,在devops和自动化方面具有特别的优势。 如果有“改进的IT编排和配置管理工具最多”的奖项,红帽的Ansible将成为最具竞争力的竞争者。自2012年由Michael...

云技术实践 ⋅ 05/09 ⋅ 0

CentOS 7.5 正式发布,基于 RHEL 的安全稳定发行版

CentOS 7 的第五个发行版本 CentOS 7.5 已正式发布! CentOS Linux 发行版是一个稳定、高预测性、高管理性、高重复性的平台,它是 Red Hat 企业级 Linux(RHEL) 源代码再编译的发行版,而且在...

局长 ⋅ 05/10 ⋅ 30

RedHat安装图形化界面及使用Yum提示需要注册问题处理

问题描述: -Redhat 6.6Mini无法用自带yum仓库安装图形化界面; -执行Yum操作均提示This system is not registered to Red Hat Subscription Management -不断调整yum仓库方式,依旧提示Red...

wenzhongxiang ⋅ 06/20 ⋅ 0

linux各个发行版本对比与简介

首先我们要能够清晰的区分Linux系统内核与Linux发行套件系统的区别,Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。而...

河图再现 ⋅ 04/27 ⋅ 0

设置基于Web的Guacamole(鳄鱼)工具以访问远程Linux / Windows计算机

作为系统管理员,你会发现自己(现在或将来)的环境下Windows和Linux共存工作。 这不是秘密,一些大公司喜欢(或必须)在Windows机箱和其他Linux服务器上运行他们的一些生产服务。 如果是这样...

yzy121403725 ⋅ 05/31 ⋅ 0

RHEL6解决无法使用YUM源问题 {已验证切实可行}

RHEL6解决无法使用YUM源问题 {已验证切实可行} 原文链接:http://blog.csdn.net/kimyoungvon/article/details/53103300 RHEL6解决无法使用YUM源问题 RHEL的YUM源需要注册用户才能更新使用,由...

xiaocao13140 ⋅ 06/22 ⋅ 0

在RedHat/CentOS下安装Docker(不升级内核)

背景 由于内核版本问题,最初仅Ubuntu可以较好的支持Docker。不过,由于RedHat系列OS(REHL、CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker很有必要。目前Docker和...

thinkyoung ⋅ 2014/12/23 ⋅ 0

Ceph分布式存储学习笔记之ISCSI服务配置

本文分两部分分别介绍Ceph Luminous版集群的安装以及配置ISCSI服务。 一、部署ceph集群 1.1 Ceph Monitor部署 1.2 节点认证 1.3 分发ceph配置到其他节点...

candon123 ⋅ 06/05 ⋅ 0

CentOS如何下载安装EPEL源

今天给大家介绍下CentOS下载安装EPEL源的步骤!希望大家喜欢! EPEL 是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,...

xiaocao13140 ⋅ 04/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部