2757com 23

脚本会过时2757com:,每一台服务器都需要执行很多的命令

世家好,本课程将学习怎么在 ubuntu 15.04 上边安装
puppet,它能够用来处理你的服务器根底条件。puppet 是由 puppet
实验室(Puppet
Labs)开荒并爱慕的一款开源的配置管理软件,它能够帮我们自动化供给、配置和拘留服务器的基础条件。不管我们管理的是多少个服务器仍然数以千计的微计算机组成的工作报表种类,puppet
都能够使管理员从麻烦的手动配置调节中解放出来,腾出时间和生机去提系统的升全部功效。它能够保障全数自动化流程作业的一致性、可信性以致牢固。它让管理员和开垦者更紧密的交换在一块,使开荒者更便于并发付出设计优越、简洁清晰的代码。puppet
提供了陈设管理和数目主导自动化的七个缓和方案。这四个减轻方案分别是
puppet 开源版puppet 企业版。puppet 开源版以 Apache 2.0
许可证宣布,它是三个非常灵活、可定制的解决方案,设置最初的心意是帮扶管理员去做到那三个重复性操作职业。pupprt
集团版是三个全平台复杂 IT
境况下的成熟建设方案,它除了具有开源版本全数优势以外还应该有移动端
apps、唯有商业版才有的压实扶持,以至模块化和集成处理等。Puppet 使用 SSL
证书来证实主要控战胜务器与代理节点之间的通讯。

Puppet安排与利用

当手中有一定多的机器须求管理的时候,自动化管理冗余又粗俗的天职对系统管理员来讲就很要紧了。非常多总指挥习于旧贯了本人写脚本模拟复杂软件之间的调解。不幸的是,脚本会过时,脚本的笔者会离职,若是不花费庞大活力来爱惜那么些本子的话,它们早晚上的集会一点儿用也未尝。若是能有三个种类,任什么人都足以利用、安装工具,无论其受雇于哪个人,那就是太愿意了。目前原来就有二种系统能够解决那类需要,那篇教程将介绍在那之中之一——Puppet——的行使方法。

本课程就要介绍怎么样在运维 ubuntu 15.04
的主要控打败务器和代理节点下面安装开源版的
puppet。在此间,大家用一台服务器做主要控战胜务器(master),管理和操纵剩余的当作puppet代理节点(agent
node)的服务器,这几个代理节点将遵照主控服务器来开展配备。在 ubuntu 15.04
只需求轻易的几步就会设置配置好
puppet,用它来保管我们的服务器根基条件非凡的福利。(LCTT 译注:puppet
选拔 C/S 结构,所以必需有至稀少一台作为服务器,其他作为顾客端管理)

前言:到近来截至,大家曾经搭建了众多的服务器,每一台服务器都急需推行相当多的一声令下,给本人的痛感是试验轻易,原理也好掌握,就是命令太辛劳。倘使只管理几台服务器,命令多点也没怎么,可是要是管理着不菲台服务器,可以想像一下,职业量将是多么的小幅。所以作为一名运转程序猿,就供给寻找一款能够缩短工作量的工具。那么今日就给我们介绍一堆工具,那批工具是“可编制程序”的,只供给为这批工具写上几行代码,它便会自动完成全部的做事,那批工具就是运营自动化puppet(为何说是一堆工具,因为软件不断一个)。Puppet能够本着多台服务器实行统一的操作,比方:软件分发,统一试行脚本,在服务器上写好脚本分发给客商机,客商机就能自动试行,收缩了人工及误操作危机。Puppet与大家事情发生早前在windows二零零六XC90第22中学上学过的“组计策”特别相符,所以在windows中一些效果与利益,在linux中都能找到那几个效应的阴影。

Puppet 是什么?

Puppet 是一款为 IT
系统助理馆员和参考们安排的自动化软件,你能够用它自动化地成功诸如安装应用程序和劳务、补丁管理和布置等职业。全体能源的连锁配置都是“manifests”的主意保存,单台机器或许多台机械都能够应用。假诺您想询问越多内容,Puppet
实验室的网址上有关于 Puppet
及其工作原理的更详实的牵线。

2757com 1

Puppet 学习连串:

Puppet 学习一:安装及简便实例应用
http://www.linuxidc.com/Linux/2013-08/88710.htm

Puppet学习二:轻松模块配置和应用
http://www.linuxidc.com/Linux/2013-08/88711.htm

连带阅读:

有关Puppet agent端两种备份苏醒方案钻探探究
http://www.linuxidc.com/Linux/2013-07/87885.htm
选拔更安全的章程注册你的Puppet节点
http://www.linuxidc.com/Linux/2013-07/87884.htm
由此安顿SSH浓烈明白Puppet的语法及工作体制
http://www.linuxidc.com/Linux/2013-07/87882.htm
Puppet利用Nginx多端口实现负载均衡
http://www.linuxidc.com/Linux/2013-02/79794.htm
CentOS(5和6)下Puppet的C/S方式实例
http://www.linuxidc.com/Linux/2011-12/50502.htm

2757com 2

职业规律和案例情况

本学科要做些什么?

在这里篇教程里,我们将联合安装配置叁个 Puppet
服务器,然后在大家的客商端服务器(译注:这里的“顾客端服务器”指须求安排职业逻辑的服务器)上完结都部队分基本配置。

1.安装主机文件

在本教程里,大家将动用2台运维 ubuntu 15.04 “Vivid Vervet”
的主机,一台作为主要控克服务器,另一台作为 puppet
的代办节点。下边是大家将应用的服务器的功底音信。

  • puupet 主控服务器 IP:44.55.88.6 ,主机名: puppetmaster
  • puppet 代理节点 IP: 45.55.86.39 ,主机名: puppetnode

咱俩要在代理节点和服务器这两台机器的 hosts
文件之中都加多上相应的规行矩步,使用 root 或是 sudo 访谈权限来编排
/etc/hosts 文件,命令如下:

# nano /etc/hosts

45.55.88.6 puppetmaster.example.com puppetmaster
45.55.86.39 puppetnode.example.com puppetnode

在意,puppet 主要控战胜务器必使用 8140
端口来运作,所以请必得确认保证开启8140端口。

办事规律

打算干活

是因为 Puppet 不是 CentOS 或 HighlanderHEL 发行版的为主仓库,所以大家得手动增多Puppet 实验室提供的自定义旅社。在全数你想行使 Puppet
的地方推行以下命令安装这一个库房(版本分裂,对应的 RPM
文件名恐怕略有区别)。

对于 CentOS/RHEL 6.5:

  1. # rpm -ivh

对于 CentOS/RHEL 7:

  1. # rpm -ivh

2. 用 NTP 更新时间

puppet
代理节点所利用系统时间一定要规范,那样能够制止代理证书现身难题。若是有的时候光间距,那么注脚将过期失效,所以服务器与代理节点的连串时间必需互相通步。大家利用
NTP(Network Time
Protocol(网络时间商讨))来多头时间。在服务器与代理节点上面分别运维以下命令来一块时间。

# ntpdate pool.ntp.org

17 Jun 00:17:08 ntpdate[882]: adjust time server 66.175.209.17 offset -0.001938 sec

(LCTT 译注:显示相像的输出结果表示运维如常)

假使没有安装 ntp,请使用下边包车型客车一声令下更新您的软件饭馆,安装并运转ntp服务

# apt-get update && sudo apt-get -y install ntp ; service ntp restart

Puppet的目标是让管理员只聚集于要管住的对象,而忽略达成的细节。Puppet不仅能够在单机上使用,也得以c/s使用,在大范围使用puppet的场合下,日常使用c/s布局,在这里种组织中puppet顾客端只运转puppetclient,puppet服务器只运维puppetmaster。

安装服务器端

在你希图用作 master 的服务器上安装 “puppet-server” 包。

  1. # yum install puppet-server

设置完结后,设置 Puppet 服务器开机自动运营,然后运行它。

  1. # chkconfig puppetmaster on
  2. # service puppetmaster start

至今服务器已经运营起来了,大家探寻看大家的网络能否访谈到它。

对于利用 iptables 当作防火墙的 CentOS/奥德赛HEL 6,在 /etc/sysconfig/iptables
文件的 OUTPUT ACCEPT 小节里增多下边这一行。

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

重复开动 iptables 服务让刚刚的改善生效。

  1. # service iptables restart

在安装了防火墙的 CentOS/HavalHEL 7 上,大家这么做:

  1. # firewall-cmd –permanent –zone=public
    –add-port=8140/tcp
  2. # firewall-cmd –reload

3. 安装主要控克制务器软件

设置开源版本的 puppet 有过多的法子。在本教程中大家在 puppet
实验室官方网址下载一个名称叫 puppetlabs-release
的软件包的软件源,安装后它将为我们在软件源里面加多puppetmaster-passenger。puppetmaster-passenger 包涵包罗 apache 的 puppet
主要控克制务器。大家起头下载这一个软件包:

# cd /tmp/
# wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb

--2015-06-17 00:19:26-- https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
Resolving apt.puppetlabs.com (apt.puppetlabs.com)... 192.155.89.90, 2600:3c03::f03c:91ff:fedb:6b1d
Connecting to apt.puppetlabs.com (apt.puppetlabs.com)|192.155.89.90|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7384 (7.2K) [application/x-debian-package]
Saving to: ‘puppetlabs-release-trusty.deb’

puppetlabs-release-tr 100%[===========================>] 7.21K --.-KB/s in 0.06s

2015-06-17 00:19:26 (130 KB/s) - ‘puppetlabs-release-trusty.deb’ saved [7384/7384]

下载达成,大家来设置它:

# dpkg -i puppetlabs-release-trusty.deb

Selecting previously unselected package puppetlabs-release.
(Reading database ... 85899 files and directories currently installed.)
Preparing to unpack puppetlabs-release-trusty.deb ...
Unpacking puppetlabs-release (1.0-11) ...
Setting up puppetlabs-release (1.0-11) ...

行使 apt 包管理命令更新一下地面包车型大巴软件源:

# apt-get update

近年来大家就足以设置 puppetmaster-passenger 了

# apt-get install puppetmaster-passenger

提示: 在装置的时候或然会报错:

Warning: Setting templatedir is deprecated.see http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')

可是并非顾虑,忽视掉它就好,大家只须求在安装配置文件的时候把这一项禁止使用就能够了。

怎么着来查看 puppet
主要控克服务器是不是曾经设置成功了吧?特别轻巧,只要求利用上面包车型大巴通令查看它的本子就可以了。

# puppet --version

3.8.1

当今我们已经安装好了 puppet 主要控克制务器。因为大家应用的是协作 apache 的
passenger,由 apache 来调节 puppet 主要控克服务器,当 apache 运维时 puppet
主要控战胜务器才运转。

在带头早前,大家供给经过截止 apache 服务来让 puppet 主控服务器甘休运行。

# systemctl stop apache2

设置顾客端

进行上面包车型客车下令,在客商端节点安装 Puppet 客商端。

  1. # yum install puppet

安装完毕后,确认保证 Puppet 会随开机自动运维。

  1. # 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_SEKoleosVECR-V 变量的值改成你在 /etc/hosts 文件里钦点的 Puppet master
服务器的域名。

PUPPET_SERVER=server.your.domain

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

server=server.your.domain

现行反革命得以运营 Puppet 客商端了:

  1. # service puppet start

强迫大家的客户端在 Puppet master 服务器上登记:

  1. # puppet agent –test

您拜谒到近似于上边包车型大巴输出。别怕,那是常规景况,因为服务器还一贯不在 Puppet
master 服务器上说明过。

Exiting; no certificate found and waitforcert is disabled

回来 Puppet master 服务器,检核实明验证伏乞:

  1. # puppet cert list

您应该能来看二个列出了装有向 Puppet master
服务器发起证书签名呼吁的服务器。找到您客商端服务器的 hostname
然后使用上边包车型大巴指令签字(client-node 是您客户端节点的域名):

  1. # puppet cert sign client-node

到此截至 Puppet 客商端和服务器都不荒谬办事了。恭喜您!不过,今后 Puppet
master 未有其他要客商端做的事务。好啊,大家来创制一些宗旨的 manifest
文件然后让大家的顾客端节点安装一些主干工具。

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

  1. # mkdir -p /etc/puppet/manifests

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

  1. node ‘client-node'{
  2. include custom_utils
  3. }
  4.  
  5. class custom_utils
    {
  6. package{[“nmap”,”telnet”,”vim-enhanced”,”traceroute”]:
  7. ensure=> latest,
  8. allow_virtual =>false,
  9. }
  10. }

然后再次开动 puppetmaster 服务。

  1. # service puppetmaster restart

客商端私下认可每 30
分钟更新二次配置,如若您希望你的修正能强逼生效,就在客商端实行如下命令:

  1. # puppet agent -t

假如你需求改正客商端的私下认可刷新时间,编辑顾客端节点的
/etc/puppet/puppet.conf 文件中“[agent]”小节,扩张上边这一行:

runinterval =

其一选项的值能够是秒(格式举个例子 30 也许30s),分钟(30m),时辰(6h),天(2d)以致年(5y)。值得注意的是,0
意味着“立即施行”并非“从不实行”

4. 采取 Apt 工具锁定主要控克服务器的本子

今昔早就设置了 3.8.1 版的
puppet,大家锁定那个版本不让它率性晋级,因为进级会招致配置文件混乱。
使用 apt 工具来锁定它,这里大家要求运用文本编辑器来成立二个新的文件
/etc/apt/preferences.d/00-puppet.pref:

# nano /etc/apt/preferences.d/00-puppet.pref

在新创立的文本之中加多以下内容:

# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.8*
Pin-Priority: 501

这么在后来的系统软件进级中, puppet
主要调控伏务器将不会尾随系统软件同步进步。

2757com 3

晋升和本领

5. 布置 Puppet 主要控克服务器

Puppet
主要调控伏务器作为三个评释发行部门,必要扭转它和睦的证件,用于签订全体代理的证书的须要。首先我们要刨除全数在该软件包安装进度中创设出来的
ssl 证书。本地暗中同意的 puppet 证书放在
/var/lib/puppet/ssl。因而大家只必要选用 rm
命令来全数移除那些申明就足以了。

# rm -rf /var/lib/puppet/ssl

近来来结构该证件,在开创 puppet
主要控战胜务器证书时,大家供给包括代理节点与主要控制服务器交换所用的各类 DNS
名称。使用文本编辑器来校订服务器的铺排文件 puppet.conf:

# nano /etc/puppet/puppet.conf

输出的结果像下边那样

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

在那我们须求注释掉 templatedir 这行使它失效。然后在文书的 [main]
小节的尾声增加上边包车型地铁消息。

server = puppetmaster
environment = production
runinterval = 1h
strict_variables = true
certname = puppetmaster
dns_alt_names = puppetmaster, puppetmaster.example.com

还应该有大多您只怕用的到的结构选项。 如若你有供给,在 Puppet
实验室有一份详细的叙说文件供你读书: Main Config File
(puppet.conf)。

编写制定达成后保存退出。

选取上边的下令来生成叁个新的注明。

# puppet master --verbose --no-daemonize

Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): F6:2F:69:89:BA:A5:5E:FF:7F:94:15:6B:A7:C4:20:CE:23:C7:E3:C9:63:53:E0:F2:76:D7:2E:E0:BF:BD:A6:78
...
Notice: puppetmaster has a waiting certificate request
Notice: Signed certificate request for puppetmaster
Notice: Removing file Puppet::SSL::CertificateRequest puppetmaster at '/var/lib/puppet/ssl/ca/requests/puppetmaster.pem'
Notice: Removing file Puppet::SSL::CertificateRequest puppetmaster at '/var/lib/puppet/ssl/certificate_requests/puppetmaster.pem'
Notice: Starting Puppet master version 3.8.1
^CNotice: Caught INT; storing stop
Notice: Processing stop

时至今日,证书已经成形。一旦大家看出 Notice: Starting Puppet master version
3.8.1,就标识证书就已经创立好了。我们按下 CT瑞鹰L-C 回到 shell 命令行。

查看新生成证书的新闻,能够利用下边包车型地铁授命。

# puppet cert list -all

+ "puppetmaster" (SHA256) 33:28:97:86:A1:C3:2F:73:10:D1:FB:42:DA:D5:42:69:71:84:F0:E2:8A:01:B9:58:38:90:E4:7D:B7:25:23:EC (alt names: "DNS:puppetmaster", "DNS:puppetmaster.example.com")

专门的学问流程

1. 调试

您免不了会提交错误的配备,然后一定要通过调节和测量检验判定难点应际而生在何方。平日的话,你依旧通过查阅日志文件
/var/log/puppet 初叶消除难点,要么手动实施查看输出:

  1. # puppet agent -t

利用“-t”选项,你能够见见 Puppet
的亲力亲为输出。这条命令还应该有额外的选项可以帮你定位难题。首先要介绍的抉择是:

  1. # puppet agent -t –debug

debug 选项会突显 Puppet
本次运营时的大半每八个步骤,那在调解特别复杂的主题材料时很有用。另二个很有用的筛选是:

  1. # puppet agent -t –noop

这几个选项让 puppet 工作在
dry-run(译注:空转形式,不会对一步一个足迹意况产生听得多了就会说的清楚)情势下,不会使用任何改换。Puppet
只会把其专门的学问内容输出到显示器上,不会写到磁盘里去。

越来越多详细的情况见请继续读书下一页的美观内容
http://www.linuxidc.com/Linux/2014-10/107677p2.htm

2757com 4

6. 创建七个 Puppet 项目清单

暗许的主清单(Manifest)是 /etc/puppet/manifests/site.pp。
这些关键清单文件包蕴了用于在代理节点实践的构造定义。现在大家来创造三个项目清单文件:

# nano /etc/puppet/manifests/site.pp

在刚展开的文书之中增添上边这几行:

# execute 'apt-get update'
exec { 'apt-update': # exec resource named 'apt-update'
command => '/usr/bin/apt-get update' # command this resource will run
}

# install apache2 package
package { 'apache2':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}

# ensure apache2 service is running
service { 'apache2':
ensure => running,
}

上述这几行的意趣是给代理节点铺排 apache web 服务。

顾客端puppet调用facter(facter是经过ssl加密搜罗及检查测量试验剖判顾客端配置音讯的叁个工具),facter探测出主机的部分变量,如主机名,内部存款和储蓄器大小,ip地址等。Puppet把那一个新闻透过ssl连接发送到服务器器端

7. 运营 puppet 主要控战胜务

早就筹算好运行 puppet 主要控克制务器 了,那么开启 apache 服务来让它运转

# systemctl start apache2

我们 puppet 主要控克制务器已经运营,可是它还不可能管住任何代理节点。今后大家给
puppet 主要控克服务器增多代理节点.

提示: 假设报错

Job for apache2.service failed. see "systemctl status apache2.service" and "journalctl -xe" for details.

不容置疑是 apache 服务器有点主题素材,我们能够运用 root 或是 sudo
访谈权限来运维 apachectl start 查看它输出的日志。在本教程试行进程中,
大家开采叁个 /etc/apache2/sites-enabled/puppetmaster.conf
的注解配置难题。改进在那之中的 SSLCertificateFile
/var/lib/puppet/ssl/certs/server.pem 为 SSLCertificateFile
/var/lib/puppet/ssl/certs/puppetmaster.pem,然后注释掉前边那行 SSLCertificateKeyFile
。然后在命令行重新起动 apache。

劳务器端的puppetmaster通过facter工具解析检查实验客商端的主机名,然后找到项目主配置文件mainfest里直面应的node配置,并对该有的剧情张开解析。Facter发送过来的音讯能够当作变量管理,node牵扯到的代码才深入深入分析,别的没拖累的代码不拆解剖判,深入分析分为几个阶段,首先进行语法检查,假诺语法对的,就继续分析,拆解拆解分析的结果生成几个中档的“伪代码”,然后把伪代码发送给顾客端。

8. 安装 Puppet 代理节点的软件包

咱俩早已准备好了 puppet
的服务器,以往亟需一个得以管理的代理节点,大家将安装 puppet
代理软件到节点上去。这里大家要给每壹个急需管理的节点安装代理软件,并且保险这一个节点能够由此DNS 查询到服务器主机。上边将 安装新型的代办软件到 节点
puppetnode.example.com 上。

在代理节点上使用上面的下令下载 puppet 实验室提供的软件包:

# cd /tmp/
# wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb/

--2015-06-17 00:54:42-- https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
Resolving apt.puppetlabs.com (apt.puppetlabs.com)... 192.155.89.90, 2600:3c03::f03c:91ff:fedb:6b1d
Connecting to apt.puppetlabs.com (apt.puppetlabs.com)|192.155.89.90|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7384 (7.2K) [application/x-debian-package]
Saving to: ‘puppetlabs-release-trusty.deb’

puppetlabs-release-tr 100%[===========================>] 7.21K --.-KB/s in 0.04s

2015-06-17 00:54:42 (162 KB/s) - ‘puppetlabs-release-trusty.deb’ saved [7384/7384]

在 ubuntu 15.04 上大家选择 debian 包管理类别来安装它,命令如下:

# dpkg -i puppetlabs-release-trusty.deb

接受 apt 包管理命令更新一下本地的软件源:

# apt-get update

透过远程旅馆安装:

# apt-get install puppet

Puppet 代理暗许是不运行的。这里大家供给运用文本编辑器校正/etc/default/puppet 文件,使它常常办事:

# nano /etc/default/puppet

改正 START 的值改成 “yes” 。

START=yes

最后保存并退出。

顾客端采取到伪代码,并举行,顾客端把进行的结果发送给服务器。

9. 行使 Apt 工具锁定代理软件的版本

和上面的步骤相符为防止随便进级引致的配置文件混乱,我们要动用 apt
工具来把它锁定。具体做法是应用文本编辑器创造三个文本
/etc/apt/preferences.d/00-puppet.pref:

# nano /etc/apt/preferences.d/00-puppet.pref

在新建的文本之中出席如下内容

# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common
Pin: version 3.8*
Pin-Priority: 501

那般 puppet 就不会趁机系统软件晋级而随便进级了。

服务器把顾客端的施行结果写入日志。

10. 安排 puppet 代理节点

咱俩须要编写制定一下代理节点的 puppet.conf 文件,来使它运转。

# nano /etc/puppet/puppet.conf

它看起来和服务器的布局文件完全一致。同样注释掉 templatedir 那行。不一样的是在这里边大家必要删除掉全数关于[master]
的部分。

如若主要控克制务器能够因而名字“puppet-master”访谈,大家的顾客端应该能够和它相互连接通讯。若是不行的话,大家必要使用完整的主机域名
puppetmaster.example.com

[agent]
server = puppetmaster.example.com
certname = puppetnode.example.com

在文件的结尾扩充地方3行,扩充之后文件内容像下边这样:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
#templatedir=$confdir/templates

[agent]
server = puppetmaster.example.com
certname = puppetnode.example.com

终极保存并脱离。

使用上面包车型地铁下令来运维顾客端软件:

# systemctl start puppet

假如一切顺遂的话,大家不会见到命令行有任何输出。
第一遍运维的时候,代理节点会转移叁个 ssl
证书何况给服务器发送二个伸手,经过签名确认后,两台机器就足以相互通讯了。

提示
假诺那是你增多的首先个代理节点,提议您在足够任何节点前先给这一个申明签字。一旦能够由此并符合规律运维,回过头来再加多别的代理节点。

Puppet职业进程有以下两点值得注意:

11. 在主要控克制务器上对评释需要举行签名

先是次运营的时候,代理节点会变卦一个 ssl
证书况兼给服务器发送三个具名倡议。在主要控战胜务器给代理节点服务器证书签字之后,主服务器技能和代理服务器通讯何况决定代理服务器。

在主要控制服务器上使用下边的下令来列出最近的申明诉求:

# puppet cert list
"puppetnode.example.com" (SHA256) 31:A1:7E:23:6B:CD:7B:7D:83:98:33:8B:21:01:A6:C4:01:D5:53:3D:A0:0E:77:9A:77:AE:8F:05:4A:9A:50:B2

因为只设置了一台代理节点服务器,所以大家将只看见三个央求。看起来好像如上,代理节点的完整域名即其主机名。

瞩目有未有“+”号在头里,代表这么些申明有没有被具名。

应用含有主机名的 puppet cert sign 本条命令来签订那一个签字号召,如下:

# puppet cert sign puppetnode.example.com
Notice: Signed certificate request for puppetnode.example.com
Notice: Removing file Puppet::SSL::CertificateRequest puppetnode.example.com at '/var/lib/puppet/ssl/ca/requests/puppetnode.example.com.pem'

主要控战胜务器今后得以通信和垄断它具名过的代办节点了。

比如想签定全数的当下乞请,能够采纳 -all 选项,如下所示:

# puppet cert sign --all

为了有限支撑安全,client和master之间是依赖ssl和证件的,独有经master证书认证的client能够与master通讯。

12. 删减三个 Puppet 证书

假诺大家想移除三个主机,或然想重新建立一个主机然后再增多它。上边包车型客车例证里大家将显示怎么样删除
puppet 主要控克服务器下边包车型客车三个证书。使用的吩咐如下:

# puppet cert clean hostname
Notice: Revoked certificate with serial 5
Notice: Removing file Puppet::SSL::Certificate puppetnode.example.com at '/var/lib/puppet/ssl/ca/signed/puppetnode.example.com.pem'
Notice: Removing file Puppet::SSL::Certificate puppetnode.example.com at '/var/lib/puppet/ssl/certs/puppetnode.example.com.pem'

一经大家想查看所有的具名和未签订合同的乞请,使用下边那条命令:

# puppet cert list --all
+ "puppetmaster" (SHA256) 33:28:97:86:A1:C3:2F:73:10:D1:FB:42:DA:D5:42:69:71:84:F0:E2:8A:01:B9:58:38:90:E4:7D:B7:25:23:EC (alt names: "DNS:puppetmaster", "DNS:puppetmaster.example.com")

Puppet会让系统一保险险在人们所期望的某种景况并直接维持下去,例如:检验有个别文件并保险其一贯存在,保险ssh服务一向敞开,假如文件被剔除了照旧ssh服务被关门了,puppet下一次实践时(暗中同意30分钟),会另行创设该公文也许运行ssh服务。

13. 部署 Puppet 清单

当配置并完结 puppet
清单后,现在我们须求安顿清单到代办节点服务器上。要使用并加载主 puppet
清单,大家得以在代理节点服务器上边使用上面包车型大巴指令:

# puppet agent --test

Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppetnode.example.com
Info: Applying configuration version '1434563858'
Notice: /Stage[main]/Main/Exec[apt-update]/returns: executed successfully
Notice: Finished catalog run in 10.53 seconds

那边向大家来得了主清单怎么样及时影响到了三个纯净的服务器。

如果我们打算运行的 puppet 清单与主项目清单没有怎么关联,大家能够大约利用
puppet apply
带上相应的清单文件的渠道就可以。它仅将清单应用到大家运转该清单的代理节点上。

# puppet apply /etc/puppet/manifest/test.pp

案例处境

14. 为特定节点配置事项清单

倘使大家想安插三个清单到某些特定的节点,我们要求如下配置清单。

在主控服务器上边运用文本编辑器编辑 /etc/puppet/manifest/site.pp:

# nano /etc/puppet/manifest/site.pp

丰富上边包车型客车内容进去

node 'puppetnode', 'puppetnode1' {
# execute 'apt-get update'
exec { 'apt-update': # exec resource named 'apt-update'
command => '/usr/bin/apt-get update' # command this resource will run
}

# install apache2 package
package { 'apache2':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}

# ensure apache2 service is running
service { 'apache2':
ensure => running,
}
}

此处的配备展现我们将要名字为 puppetnode 和 puppetnode1
的2个钦赐的节点上边安装 apache
服务。这里能够增进任何我们供给设置配备的现实节点进去。

15. 构造清单模块

模块对于构成职分是可怜平价的,在 Puppet
社区有为数不菲人贡献了和煦的模块组件。

在主要控制伏务器上, 大家将使用 puppet module 命令来设置 puppetlabs-apache
模块。

# puppet module install puppetlabs-apache

警告: 千万不要在三个一度安插 apache
景况的机械下边使用那一个模块,不然它将清空你未曾被 puppet 管理的 apache
配置。

这段时间用文件编辑器来改过 site.pp :

# nano /etc/puppet/manifest/site.pp

加上底下的剧情进去,在 puppetnode 上边安装 apache 服务。

node 'puppet-node' {
class { 'apache': } # use apache module
apache::vhost { 'example.com': # define vhost resource
port => '80',
docroot => '/var/www/html'
}
}

保留退出。然后重国民党的新生活运动行该清单来为我们的代办节点陈设 apache 配置。

2757com 5

总结

今昔我们曾经打响的在 ubuntu 15.04 上面安排并运营 puppet
来管理代理节点服务器的底子运转情状。大家学习了 puppet
是何等专门的学业的,编写清单文件,节点与主机间使用 ssl
证书认证的认证进度。使用 puppet 开源软件布署管理工科具在无数的代办节点上来调整、管理和安排重复性职分是特别轻便的。假若您有任何的难点,提议,反馈,与大家赢得联络,大家将第有时间完备修改,感激。

设想机蒙受

2757com 6

安装puppet的实践步骤

搭建puppetmaster

搭建puppetclient

配备测量试验节点

顾客端主动拉取

服务器推送

搭建puppetmaster

设计服务器主机名(小圈圈得以修正/etc/hosts文件,服务器多的时候大家须要搭建dns服务器来促成劳务通过主机名进行通讯,这里就以/etc/hosts文件来兑现)

Vi  /etc/sysconfig/network

2757com 7

Vi  /etc/hosts

2757com 8

为了让主机名顿时生效,推行上面施命发号(可能重启服务器)

2757com 9

搭建NTP服务器(后面早就提到过facter使用证书与puppetmaster验证身份,所以必然要保管puppetclient与puppetmaster时间保持一致,要求单独筹划一台时间服务器来提供时间同步)

搭建NTP服务器

2757com 10

vim /etc/ntp.conf,增加以下两行:

2757com 11

初步ntp服务并开启iptables例外

2757com 12

[root@centos5]# iptables -I INPUT -p  udp –dport 123 -j
ACCEP**

[root@centos5]# service iptables save**

在puppetmaster上面配置时间同步,作为ntp的顾客端

2757com 13

安装ruby(puppet正是基于ruby语言开采的,所以供给安装ruby)

2757com 14

安装到位之后检查版本

2757com 15

安装facter

2757com 16

设置facter(通过facter工具解析检查评定顾客端传来的音信)

2757com 17

安装puppet

编写翻译安装:

2757com 18

复制配置文件

2757com 19

改善文件属性并创办puppet主目录

2757com 20

puppet服务证书央浼与签字

关门防火墙(也可开不一致)

Service iptables  stop

修改配置文件

2757com 21

在[main]标题下加多一行:配置服务器模块路线

2757com 22

启动puppet主程序

2757com 23

[root@master puppet-2.7.21]# netstat -anpt | grep ruby

tcp        0      0 0.0.0.0:8140                0.0.0.0:*
                  LISTEN      2306/ruby

puppetmaster所监听的端口为8140

配备防火墙:

[root@master puppet-2.7.21]# iptables -I INPUT -p tcp –dport 8140 -j
ACCEPT

[root@master puppet-2.7.21]# service iptables save

搭建puppetclient

统筹服务器主机名

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章