From 2aaec293dda665b83b371100d8768800856a99c3 Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 10:53:37 +0800 Subject: [PATCH 1/8] Create Installation Guide for Puppet on Ubuntu 15.04 --- ...tallation Guide for Puppet on Ubuntu 15.04 | 411 ++++++++++++++++++ 1 file changed, 411 insertions(+) create mode 100644 translated/tech/Installation Guide for Puppet on Ubuntu 15.04 diff --git a/translated/tech/Installation Guide for Puppet on Ubuntu 15.04 b/translated/tech/Installation Guide for Puppet on Ubuntu 15.04 new file mode 100644 index 0000000000..70bdb46ad9 --- /dev/null +++ b/translated/tech/Installation Guide for Puppet on Ubuntu 15.04 @@ -0,0 +1,411 @@ +如何在Ubuntu 15.04中安装puppet +================================================================================ + +大家好,本教程将教大家如何在ubuntu 15.04上面安装puppet,用它来管理你的服务器基础环境。puppet是由puppet实验室开发并维护的一款开源软件,它帮我们自动的管理配置服务器的基础环境。不管我们管理的是几个服务器还是数以千计的机器设备组成的业务流程及报表,puppet都能够使管理员从繁琐的手动调整中解放出来,腾出时间和精力去提升整体效率。它能够确保自动化流程作业的一致性,可靠性以及稳定性。它让管理员和开发者走得更近,叫付出更加简洁清晰设计良好的代码。puppet提供了管理配置和自动化数据中心的2个解决方案。分别是**puppet开源项目 and puppet商业版**.puppet开源项目在apache2.0上是灵活可定制的的解决方案,设置初衷是帮助他们完成那些经常操作的重复性工作。pupprt商业版是一个全平台复杂IT环境下的成熟解决方案,它除了拥有开源版本所有优势以外还有移动端apps,只有商业版才有的加强支持,以及模块化和集成管理等。Puppet使用SSL证书来认证主机与代理节点之间的通信。 + +本教程将要介绍如何在ubuntu15.04的主机和代理节点上面安装开源版的puppet。在这我们用一台服务器做主机管理和控制剩余的当作puppet的代理节点的服务器,这些代理节点将依据服务器来进行配置。在ubuntu 15.04只需要简单的几步就能安装配置好puppet,用它来管理我们的服务器基础环境非常的方便。(译者注:puppet采用的C/S架构所以必须有至少有一台作为服务端,其他作为客户端处理) +### 1.设置主机### + Here is the infrastructure of the server that we're gonna use for this tutorial. +在本教程里,我们将使用用2台运行ubuntu 15.04 "Vivid Vervet"的主机,一台作为服务端,另一台作为puppet的代理节点。这就是我们将用到的服务器基础环境。 + +puupet服务器IP:44.55.88.6,主机名: puppetmaster +puppet 代理节点 IP 45.55.86.39 ,主机名: puppetnode + +Now we'll add the entry of the machines to /etc/hosts on both machines node agent and master server. +我们要在代理节点和服务器这两天机器的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端口。 + +### 2. 用NTP更新时间 ### + +To do so, here's the command below that we need to run on both master and node agent. +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 (译者注:显示类似的输出结果表示运行正常) + +使用下面的命令更新你的软件仓库,安装并运行ntp服务 + + # apt-get update && sudo apt-get -y install ntp ; service ntp restart + +### 3. 安装服务器软件 ### + +There are many ways to install open source puppet. In this tutorial, we'll download and install a debian binary package named as **puppetlabs-release** packaged by the Puppet Labs which will add the source of the **puppetmaster-passenger** package. The puppetmaster-passenger includes the puppet master with apache web server. So, we'll now download the Puppet Labs package. +有很多的方法可以用来安装开源版本的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.请查看 http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')** 不过不用担心,忽略掉它就好,报错的意思是templatedir过时了,我们只需要在设置配置文件的时候把这一项disable就行了。 + +如何来查看puppet master是否已经安装成功了呢?非常简单只需要使用下面的命令查看它的版本就可以了。 + # puppet --version + + 3.8.1 + + +现在我们已经安装好了puppet master。要想使用puppet master apache服务就必须运行起来,因为puppet master进程的运行是基于apache的。 +在开始之前,我们将apache服务停止,这样puppet muster也会停止运行。 + + # systemctl stop apache2 + +### 4. 使用Apt工具锁定Master(服务端)版本 ### + +现在已经安装了 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将被锁住不会跟随系统软件一起升级。 + +### 5. 配置 Puppet### +Puppet master作为一个证书发行机构,所有代理证书的请求都将由它来处理。首先我们要删除所有在软件包安装过程中创建出来已经存在的ssl证书。本地默认的puppet证书在/var/lib/puppet/ssl。因此我们只需要使用rm命令来移除这些证书就可以了。 + # rm -rf /var/lib/puppet/ssl + + +现在来配置这些证书,在创建puppet master'证书的时候,需要用到能与服务器通信的代理节点的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 这行使它失效。在文件的结尾添加下面的信息。 + server = puppetmaster + environment = production + runinterval = 1h + strict_variables = true + certname = puppetmaster + dns_alt_names = puppetmaster, puppetmaster.example.com + +这里有很多有用的建立适合你的配置项。 如果你有需要,在Puppet实验室有一份详细的描述文件供你阅读。 [Main Config File (puppet.conf)][1]. + +编辑完成后保存退出。 + +使用下面的命令来生成一个新的证书。 + # 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**, 表明证书就已经制作好了.我们按下 CTRL-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") + +### 6. 创建一个Puppet清单 ### + +默认的主要清单在/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 服务来部署代理节点 +### 7. 运行Master服务### + +已经准备好运行puppet master了,那么开启apache服务来让它运行 + + # systemctl start apache2 + +我们puppet master已经跑起来了, 但是现在他还不能管理任何代理节点。现在我们给master添加代理节点. + +**Note**: If you get an error **Job for apache2.service failed. See "systemctl status apache2.service" and "journalctl -xe" for details.** then it must be that there is some problem with the apache server. So, we can see the log what exactly has happened by running **apachectl start** under root or sudo mode. Here, while performing this tutorial, we got a misconfiguration of the certificates under **/etc/apache2/sites-enabled/puppetmaster.conf** file. We replaced **SSLCertificateFile /var/lib/puppet/ssl/certs/server.pem with SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.pem** and commented **SSLCertificateKeyFile** line. Then we'll need to rerun the above command to run apache server. +**提示**: 如果报错 **Job for apache2.service failed. 查看"systemctl status apache2.service" and "journalctl -xe" 所给出的信息.** 肯定是apache server有一些问题. 我们可以使用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 +### 8. 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工具锁定Agent(客户端)版本### + +和上面的步骤一样为防止随意升级造成的配置文件混乱,我们要将该版本使用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]的部分。 + + +假定服务端可用我们的客户端应该是可以和它相互连接通信的。如果不行我们需要使用完整的域名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证书并且发送一个请求给服务端,通过确认后,两台机器就可以互相通信了。 + +**Note**: If you are adding your first node, it is recommended that you attempt to sign the certificate on the puppet master before adding your other agents. Once you have verified that everything works properly, then you can go back and add the remaining agent nodes further. + +**提示**: 如果这是你添加的第一个代理节点,建议你在添加其他节点前先给这个证书签名。一旦能够通过并正常运行,回过头来再添加其他代理节点。 + +### 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**到**hostname**这个命令来签署这个签名请求。 + # 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 + +### 删除一个Puppet证书 ### + +如果我们想移除一个主机,或者想重建一个主机然后再添加它. 下面的例子我们将展示如何删除puppet master上面的一个证书. 使用的命令如下: + + # 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") + +### 12. 部署一个 Puppet清单 ### + +After we configure and complete the puppet manifest, we'll wanna deploy the manifest to the agent nodes server. To apply and load the main manifest we can simply run the following command in the agent node. +当我们配置并完成主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 + +这里像我们展示了主清单如何去管理一个单一的服务器。 +If we wanna run a puppet manifest that is not related to the main manifest, we can simply use puppet apply followed by the manifest file path. It only applies the manifest to the node that we run the apply from. +如果我们打算运行的puppet清单与主清单没有什么关联,那么需要使用puppet apply 到相应的路径。它仅适用于该代理节点。 + # puppet apply /etc/puppet/manifest/test.pp + +### 13. 配置一个特殊节点清单 ### + +如果我们想部署一个清单到某个特定的节点,我们需要配置清单如下。 + +在主服务器上面使用文本编辑器编辑/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 and puppetnode1的2个特殊节点上面安装apache服务. 这里可以添加更多我们需要安装部署的具体节点进去。 +### 14. 配置清单模块 ### + +模块化组件组是非常实用的,在Puppet社区有很多人提交自己的模块。 + +在主puppet服务器上, 我们将使用uppet module命令来安装**puppetlabs-apache** 模块。 + + # puppet module install puppetlabs-apache + +**警告**: 千万不要在一个已经部署apache环境的机器上面使用这个模块,否则它将清空你的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' + } + } + +保存退出。这样为我们的代理服务器重新配置部署基础环境。 + +### 总结 ### + +现在我们已经成功的在ubuntu 15.04上面部署并运行puppet来管理代理节点服务器的基础运行环境.我们学习了,puppet是如何工作的,配置清单文件,节点与主机间的ssl证书认证。使用puppet控制,管理并且配置众多的代理节点服务器是非常容易的。如果你有任何的问题,建议,反馈,请务必与我们取得联系我们将及时的改善更新,谢谢。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/install-puppet-ubuntu-15-04/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/ivo-wang) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://docs.puppetlabs.com/puppet/latest/reference/config_file_main.html From ab096a3c4cb4e3140fd9944688e1dbf34023f938 Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 11:43:48 +0800 Subject: [PATCH 2/8] Update and rename Installation Guide for Puppet on Ubuntu 15.04 to 20150806 Installation Guide for Puppet on Ubuntu 15.04 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完成 --- ...allation Guide for Puppet on Ubuntu 15.04} | 119 ++++++++---------- 1 file changed, 54 insertions(+), 65 deletions(-) rename translated/tech/{Installation Guide for Puppet on Ubuntu 15.04 => 20150806 Installation Guide for Puppet on Ubuntu 15.04} (56%) diff --git a/translated/tech/Installation Guide for Puppet on Ubuntu 15.04 b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04 similarity index 56% rename from translated/tech/Installation Guide for Puppet on Ubuntu 15.04 rename to translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04 index 70bdb46ad9..290698a62f 100644 --- a/translated/tech/Installation Guide for Puppet on Ubuntu 15.04 +++ b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04 @@ -1,18 +1,16 @@ 如何在Ubuntu 15.04中安装puppet ================================================================================ -大家好,本教程将教大家如何在ubuntu 15.04上面安装puppet,用它来管理你的服务器基础环境。puppet是由puppet实验室开发并维护的一款开源软件,它帮我们自动的管理配置服务器的基础环境。不管我们管理的是几个服务器还是数以千计的机器设备组成的业务流程及报表,puppet都能够使管理员从繁琐的手动调整中解放出来,腾出时间和精力去提升整体效率。它能够确保自动化流程作业的一致性,可靠性以及稳定性。它让管理员和开发者走得更近,叫付出更加简洁清晰设计良好的代码。puppet提供了管理配置和自动化数据中心的2个解决方案。分别是**puppet开源项目 and puppet商业版**.puppet开源项目在apache2.0上是灵活可定制的的解决方案,设置初衷是帮助他们完成那些经常操作的重复性工作。pupprt商业版是一个全平台复杂IT环境下的成熟解决方案,它除了拥有开源版本所有优势以外还有移动端apps,只有商业版才有的加强支持,以及模块化和集成管理等。Puppet使用SSL证书来认证主机与代理节点之间的通信。 +大家好,本教程将教各位如何在ubuntu 15.04上面安装puppet,用它来管理你的服务器基础环境。puppet是由puppet实验室开发并维护的一款开源软件,它能够帮我们自动的管理配置服务器的基础环境。不管我们管理的是几个服务器还是数以千计的计算机组成的业务报表体系,puppet都能够使管理员从繁琐的手动配置调整中解放出来,腾出时间和精力去提系统的升整体效率。它能够确保所有自动化流程作业的一致性,可靠性以及稳定性。它让管理员和开发者更紧密的联系在一起,使开发者更容易产出付出设计良好,简洁清晰的代码。puppet提供了管理配置和自动化数据中心的2个解决方案。这两个解决方案分别是**puppet开源项目 和 puppet商业版**。puppet开源项目依赖于apache2.0,它是一个非常灵活可随意定制的解决方案,设置初衷是帮助管理员去完成那些重复性操作工作。pupprt商业版是一个全平台复杂IT环境下的成熟解决方案,它除了拥有开源版本所有优势以外还有移动端apps,只有商业版才有的加强支持,以及模块化和集成管理等。Puppet使用SSL证书来认证主机与代理节点之间的通信。 -本教程将要介绍如何在ubuntu15.04的主机和代理节点上面安装开源版的puppet。在这我们用一台服务器做主机管理和控制剩余的当作puppet的代理节点的服务器,这些代理节点将依据服务器来进行配置。在ubuntu 15.04只需要简单的几步就能安装配置好puppet,用它来管理我们的服务器基础环境非常的方便。(译者注:puppet采用的C/S架构所以必须有至少有一台作为服务端,其他作为客户端处理) +本教程将要介绍如何在ubuntu 15.04的主机和代理节点上面安装开源版的puppet。在这我们用一台服务器做主机,管理和控制剩余当作puppet的代理节点的服务器,这些代理节点将依据服务器来进行配置。在ubuntu 15.04只需要简单的几步就能安装配置好puppet,用它来管理我们的服务器基础环境非常的方便。(译者注:puppet采用的C/S架构所以必须有至少有一台作为服务端,其他作为客户端处理) ### 1.设置主机### - Here is the infrastructure of the server that we're gonna use for this tutorial. -在本教程里,我们将使用用2台运行ubuntu 15.04 "Vivid Vervet"的主机,一台作为服务端,另一台作为puppet的代理节点。这就是我们将用到的服务器基础环境。 +在本教程里,我们将使用用2台运行ubuntu 15.04 "Vivid Vervet"的主机,一台作为服务端,另一台作为puppet的代理节点。下面是我们将用到的服务器的基础信息。 puupet服务器IP:44.55.88.6,主机名: puppetmaster -puppet 代理节点 IP 45.55.86.39 ,主机名: puppetnode +puppet代理节点IP: 45.55.86.39 ,主机名: puppetnode -Now we'll add the entry of the machines to /etc/hosts on both machines node agent and master server. -我们要在代理节点和服务器这两天机器的hosts里面都添加上相应的条目,使用root或是sudo访问权限来编辑/etc/hosts文件命令如下: +我们要在代理节点和服务器这两天机器的hosts里面都添加上相应的条目,使用root或是sudo访问权限来编辑/etc/hosts文件,命令如下: # nano /etc/hosts 45.55.88.6 puppetmaster.example.com puppetmaster @@ -22,20 +20,18 @@ Now we'll add the entry of the machines to /etc/hosts on both machines node agen ### 2. 用NTP更新时间 ### -To do so, here's the command below that we need to run on both master and node agent. -puppet的代理节点所使用系统时间必须要准确,这样可以避免代理证书出现问题。如果有时间差异,那么证书将过期失效,所以服务器与代理节点的系统时间必须双方互相同步。我们使用NTP(Network Time Protocol,网络时间协议)来更新同步时间。在服务器与代理节点上面分别运行以下命令来同步时间: +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 (译者注:显示类似的输出结果表示运行正常) + 17 Jun 00:17:08 ntpdate[882]: adjust time server 66.175.209.17 offset -0.001938 sec (译者注:显示类似的输出结果表示运行正常) -使用下面的命令更新你的软件仓库,安装并运行ntp服务 +如果没有ntp,请使用下面的命令更新你的软件仓库,安装并运行ntp服务 # apt-get update && sudo apt-get -y install ntp ; service ntp restart ### 3. 安装服务器软件 ### -There are many ways to install open source puppet. In this tutorial, we'll download and install a debian binary package named as **puppetlabs-release** packaged by the Puppet Labs which will add the source of the **puppetmaster-passenger** package. The puppetmaster-passenger includes the puppet master with apache web server. So, we'll now download the Puppet Labs package. -有很多的方法可以用来安装开源版本的puppet。在本教程中我们在puppet实验室官网下载一个名为puppetlabs-release的软件包,安装后它为我们在软件源里面添加puppetmaster-passenger。puppetmaster-passenger是基于apache的puppet服务端。我们开始下载这个软件包 +安装开源版本的puppet有很多的方法。在本教程中我们在puppet实验室官网下载一个名为puppetlabs-release的软件包,安装后它将为我们在软件源里面添加puppetmaster-passenger。puppetmaster-passenger依赖于apache的puppet服务端。我们开始下载这个软件包 # cd /tmp/ # wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb @@ -50,7 +46,7 @@ There are many ways to install open source puppet. In this tutorial, we'll downl 2015-06-17 00:19:26 (130 KB/s) - ‘puppetlabs-release-trusty.deb’ saved [7384/7384] -下载完成后我们要安装这个软件包 +下载完成,我们来安装它 # dpkg -i puppetlabs-release-trusty.deb @@ -64,26 +60,25 @@ There are many ways to install open source puppet. In this tutorial, we'll downl # apt-get update -现在我们就可以使用下面的命令来安装puppetmaster-passenger了 +现在我们就可以安装puppetmaster-passenger了 # apt-get install puppetmaster-passenger -**提示**: 在安装的时候可能会报错**Warning: Setting templatedir is deprecated.请查看 http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')** 不过不用担心,忽略掉它就好,报错的意思是templatedir过时了,我们只需要在设置配置文件的时候把这一项disable就行了。 +**提示**: 在安装的时候可能会报错**Warning: Setting templatedir is deprecated.请查看 http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')** 不过不用担心,忽略掉它就好,我们只需要在设置配置文件的时候把这一项disable就行了。 -如何来查看puppet master是否已经安装成功了呢?非常简单只需要使用下面的命令查看它的版本就可以了。 +如何来查看puppet master是否已经安装成功了呢?非常简单,只需要使用下面的命令查看它的版本就可以了。 # puppet --version 3.8.1 - -现在我们已经安装好了puppet master。要想使用puppet master apache服务就必须运行起来,因为puppet master进程的运行是基于apache的。 +现在我们已经安装好了puppet master。要想使用puppet master apache服务就必须运行起来,因为puppet master进程的运行是依赖于apache的。 在开始之前,我们将apache服务停止,这样puppet muster也会停止运行。 # systemctl stop apache2 ### 4. 使用Apt工具锁定Master(服务端)版本 ### -现在已经安装了 3.8.1版的puppet,我们锁定这个版本不让它随意升级,因为升级会造成配置文件混乱。 使用apT工具来锁定它,这里我们需要使用文本编辑器来创建一个新的文件 **/etc/apt/preferences.d/00-puppet.pref** +现在已经安装了 3.8.1版的puppet,我们锁定这个版本不让它随意升级,因为升级会造成配置文件混乱。 使用apt工具来锁定它,这里我们需要使用文本编辑器来创建一个新的文件 **/etc/apt/preferences.d/00-puppet.pref** # nano /etc/apt/preferences.d/00-puppet.pref @@ -93,14 +88,13 @@ There are many ways to install open source puppet. In this tutorial, we'll downl Pin: version 3.8* Pin-Priority: 501 -这样在以后的系统软件升级中puppet将被锁住不会跟随系统软件一起升级。 +这样在以后的系统软件升级中puppet master将被锁住不会跟随系统软件一起升级。 -### 5. 配置 Puppet### -Puppet master作为一个证书发行机构,所有代理证书的请求都将由它来处理。首先我们要删除所有在软件包安装过程中创建出来已经存在的ssl证书。本地默认的puppet证书在/var/lib/puppet/ssl。因此我们只需要使用rm命令来移除这些证书就可以了。 +### 5. 配置 Puppet Master### +Puppet master作为一个证书发行机构,所有代理证书的请求都将由它来处理。首先我们要删除所有在软件包安装过程中创建出来的ssl证书。本地默认的puppet证书在/var/lib/puppet/ssl。因此我们只需要使用rm命令来移除这些证书就可以了。 # rm -rf /var/lib/puppet/ssl - -现在来配置这些证书,在创建puppet master'证书的时候,需要用到能与服务器通信的代理节点的DNS名称。使用文本编辑器来编辑服务器的配置文件puppet.conf +现在来配置这些证书,在创建puppet master证书的时候,需要用使用DNS能查找到的代理节点名称。使用文本编辑器来修改服务器的配置文件puppet.conf # nano /etc/puppet/puppet.conf 输出的结果像下面这样 @@ -120,7 +114,7 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 ssl_client_verify_header = SSL_CLIENT_VERIFY -在这我们需要注释掉templatedir 这行使它失效。在文件的结尾添加下面的信息。 +在这我们需要注释掉templatedir 这行使它失效。然后在文件的结尾添加下面的信息。 server = puppetmaster environment = production runinterval = 1h @@ -128,7 +122,7 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 certname = puppetmaster dns_alt_names = puppetmaster, puppetmaster.example.com -这里有很多有用的建立适合你的配置项。 如果你有需要,在Puppet实验室有一份详细的描述文件供你阅读。 [Main Config File (puppet.conf)][1]. +还有很多你可能用的到的配置选项。 如果你有需要,在Puppet实验室有一份详细的描述文件供你阅读。 [Main Config File (puppet.conf)][1]. 编辑完成后保存退出。 @@ -147,9 +141,9 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 ^CNotice: Caught INT; storing stop Notice: Processing stop -至此,证书已经生成. 一旦我们看到 **Notice: Starting Puppet master version 3.8.1**, 表明证书就已经制作好了.我们按下 CTRL-C 回到shell命令行. +至此,证书已经生成。一旦我们看到 **Notice: Starting Puppet master version 3.8.1**, 表明证书就已经制作好了.我们按下 CTRL-C 回到shell命令行。 -如果你想看刚生成证书的信息,可以使用下面的命令来进行查看。 +查看新生成证书的信息,可以使用下面的命令。 # puppet cert list -all @@ -157,7 +151,7 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 ### 6. 创建一个Puppet清单 ### -默认的主要清单在/etc/puppet/manifests/site.pp. 这个主要清单文件定义着控制哪些代理节点。我们现在使用下面的命令来创建一个清单文件 +默认的主要清单是/etc/puppet/manifests/site.pp。 这个主要清单文件定义着控制哪些代理节点。现在我们来创建一个清单文件 # nano /etc/puppet/manifests/site.pp @@ -179,21 +173,20 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 ensure => running, } -以上这几行的意思是通过apache web 服务来部署代理节点 -### 7. 运行Master服务### +以上这几行的意思是给代理节点部署apache web 服务 +### 7. 运行puppet Master服务 ### -已经准备好运行puppet master了,那么开启apache服务来让它运行 +已经准备好运行puppet master了,那么开启apache服务来让它启动 # systemctl start apache2 -我们puppet master已经跑起来了, 但是现在他还不能管理任何代理节点。现在我们给master添加代理节点. +我们puppet master已经运行,不过它还不能管理任何代理节点。现在我们给puppet master添加代理节点. -**Note**: If you get an error **Job for apache2.service failed. See "systemctl status apache2.service" and "journalctl -xe" for details.** then it must be that there is some problem with the apache server. So, we can see the log what exactly has happened by running **apachectl start** under root or sudo mode. Here, while performing this tutorial, we got a misconfiguration of the certificates under **/etc/apache2/sites-enabled/puppetmaster.conf** file. We replaced **SSLCertificateFile /var/lib/puppet/ssl/certs/server.pem with SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.pem** and commented **SSLCertificateKeyFile** line. Then we'll need to rerun the above command to run apache server. -**提示**: 如果报错 **Job for apache2.service failed. 查看"systemctl status apache2.service" and "journalctl -xe" 所给出的信息.** 肯定是apache server有一些问题. 我们可以使用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 +**提示**: 如果报错 **Job for apache2.service failed. 查看"systemctl status apache2.service" and "journalctl -xe" 所给出的信息.** 肯定是apache server有一些问题. 我们可以使用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 ### 8. Puppet客户端安装 ### -我们已经准备好了puppet的服务端,现在来安装代理节点安装客户端。这里我们要给每一个需要管理的节点安装客户端,并且确保这些节点能够通过DNS查找的服务器主机。下面将 puppetnode.example.com作为代理节点安装客户端 -在代理节点上使用下面的命令下载puppet实验室提供的软件包。 +我们已经准备好了puppet的服务端,现在来为代理节点安装客户端。这里我们要给每一个需要管理的节点安装客户端,并且确保这些节点能够通过DNS查询到服务器主机。下面将 puppetnode.example.com作为代理节点安装客户端 +在代理节点服务器上,使用下面的命令下载puppet实验室提供的软件包。 # cd /tmp/ # wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb\ @@ -226,9 +219,9 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 最后保存并退出。 -### 9. 使用APT工具锁定Agent(客户端)版本### +### 9. 使用APT工具锁定Agent(客户端)版本 ### -和上面的步骤一样为防止随意升级造成的配置文件混乱,我们要将该版本使用apt工具锁定。具体做法是使用文本编辑器来创建一个新的文件 **/etc/apt/preferences.d/00-puppet.pref** +和上面的步骤一样为防止随意升级造成的配置文件混乱,我们要使用apt工具来把它锁定。具体做法是使用文本编辑器创建一个文件 **/etc/apt/preferences.d/00-puppet.pref** # nano /etc/apt/preferences.d/00-puppet.pref 在新建的文件里面加入如下内容 @@ -246,11 +239,10 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 # nano /etc/puppet/puppet.conf -它看起来和服务端的配置文件完全一样。 -同样注释掉**templatedir**这行. 在这里我们需要删除掉所有关于[master]的部分。 +它看起来和服务端的配置文件完全一样。同样注释掉**templatedir**这行。不同的是在这里我们需要删除掉所有关于[master]的部分。 -假定服务端可用我们的客户端应该是可以和它相互连接通信的。如果不行我们需要使用完整的域名puppetmaster.example.com +假定服务端可用,我们的客户端应该是可以和它相互连接通信的。如果不行我们需要使用完整的主机域名puppetmaster.example.com [agent] server = puppetmaster.example.com certname = puppetnode.example.com @@ -275,22 +267,20 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 # systemctl start puppet -如果一切顺利的话,我们不会看到命令行有任何输出。 第一次运行的时候,代理节点会生成一个ssl证书并且发送一个请求给服务端,通过确认后,两台机器就可以互相通信了。 - -**Note**: If you are adding your first node, it is recommended that you attempt to sign the certificate on the puppet master before adding your other agents. Once you have verified that everything works properly, then you can go back and add the remaining agent nodes further. +如果一切顺利的话,我们不会看到命令行有任何输出。 第一次运行的时候,代理节点会生成一个ssl证书并且给服务端发送一个请求,经过签名确认后,两台机器就可以互相通信了。 **提示**: 如果这是你添加的第一个代理节点,建议你在添加其他节点前先给这个证书签名。一旦能够通过并正常运行,回过头来再添加其他代理节点。 -### 11. 主服务器上的签名证书请求 ### +### 11. 服务器上的签名证书请求 ### -第一次运行的时候,代理节点会生成一个ssl证书并且发送一个请求给服务端.在主服务器给代理节点服务器的证书签名之后,主服务器才能和代理服务器通信并且控制代理服务器。 +第一次运行的时候,代理节点会生成一个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**到**hostname**这个命令来签署这个签名请求。 @@ -299,15 +289,15 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 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选项,如下所示。 +如想我们想签署所有的请求, 需要使用-all选项,如下所示。 # puppet cert sign --all ### 删除一个Puppet证书 ### -如果我们想移除一个主机,或者想重建一个主机然后再添加它. 下面的例子我们将展示如何删除puppet master上面的一个证书. 使用的命令如下: +如果我们想移除一个主机,或者想重建一个主机然后再添加它。下面的例子里我们将展示如何删除puppet master上面的一个证书。使用的命令如下: # puppet cert clean hostname @@ -315,15 +305,14 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 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") -### 12. 部署一个 Puppet清单 ### +### 12. 部署代理节点Puppet清单 ### -After we configure and complete the puppet manifest, we'll wanna deploy the manifest to the agent nodes server. To apply and load the main manifest we can simply run the following command in the agent node. -当我们配置并完成主puppet清单,我们现在署代理节点服务器清单。要应用并加载主清单,我们可以在代理节点服务器上面使用下面的命令 +当配置并完成主puppet清单后,现在我们需要署代理节点服务器清单。要应用并加载主puppet清单,我们可以在代理节点服务器上面使用下面的命令 # puppet agent --test @@ -335,13 +324,13 @@ After we configure and complete the puppet manifest, we'll wanna deploy the mani Notice: Finished catalog run in 10.53 seconds 这里像我们展示了主清单如何去管理一个单一的服务器。 -If we wanna run a puppet manifest that is not related to the main manifest, we can simply use puppet apply followed by the manifest file path. It only applies the manifest to the node that we run the apply from. -如果我们打算运行的puppet清单与主清单没有什么关联,那么需要使用puppet apply 到相应的路径。它仅适用于该代理节点。 + +如果我们打算运行的puppet清单与主puppet清单没有什么关联,那么需要使用puppet apply 到相应的路径。它仅适用于该代理节点。 # puppet apply /etc/puppet/manifest/test.pp -### 13. 配置一个特殊节点清单 ### +### 13. 配置特殊节点清单 ### -如果我们想部署一个清单到某个特定的节点,我们需要配置清单如下。 +如果我们想部署一个清单到某个特定的节点,我们需要进行以下操作。 在主服务器上面使用文本编辑器编辑/etc/puppet/manifest/site.pp # nano /etc/puppet/manifest/site.pp @@ -366,12 +355,12 @@ If we wanna run a puppet manifest that is not related to the main manifest, we c } } -这里的配置显示我们将在名为puppetnode and puppetnode1的2个特殊节点上面安装apache服务. 这里可以添加更多我们需要安装部署的具体节点进去。 +这里的配置显示我们将在名为puppetnode and puppetnode1的2个特殊节点上面安装apache服务. 这里可以添加其他我们需要安装部署的具体节点进去。 ### 14. 配置清单模块 ### -模块化组件组是非常实用的,在Puppet社区有很多人提交自己的模块。 +模块化组件组是非常实用的,在Puppet社区有很多人贡献自己的模块组件。 -在主puppet服务器上, 我们将使用uppet module命令来安装**puppetlabs-apache** 模块。 +在主puppet服务器上, 我们将使用puppet module命令来安装**puppetlabs-apache** 模块。 # puppet module install puppetlabs-apache @@ -395,7 +384,7 @@ If we wanna run a puppet manifest that is not related to the main manifest, we c ### 总结 ### -现在我们已经成功的在ubuntu 15.04上面部署并运行puppet来管理代理节点服务器的基础运行环境.我们学习了,puppet是如何工作的,配置清单文件,节点与主机间的ssl证书认证。使用puppet控制,管理并且配置众多的代理节点服务器是非常容易的。如果你有任何的问题,建议,反馈,请务必与我们取得联系我们将及时的改善更新,谢谢。 +现在我们已经成功的在ubuntu 15.04上面部署并运行puppet来管理代理节点服务器的基础运行环境。我们学习了puppet是如何工作的,编写清单文件,节点与主机间使用ssl证书认证的认证过程。使用puppet管理配置众多的代理节点服务器是非常容易的。如果你有任何的问题,建议,反馈,与我们取得联系,我们将第一时间完善更新,谢谢。 -------------------------------------------------------------------------------- From 7e6e201929e878809237fb28db4f8e7df529fd34 Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 11:45:02 +0800 Subject: [PATCH 3/8] =?UTF-8?q?Rename=2020150806=20Installation=20Guide=20?= =?UTF-8?q?for=20Puppet=20on=20Ubuntu=2015.04.md=20to=2020150806=20Install?= =?UTF-8?q?ation=20Guide=20for=20Puppet=20on=20Ubuntu=2015.04.md=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0806 Installation Guide for Puppet on Ubuntu 15.04.md翻译完毕} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/tech/{20150806 Installation Guide for Puppet on Ubuntu 15.04.md => 20150806 Installation Guide for Puppet on Ubuntu 15.04.md翻译完毕} (100%) diff --git a/sources/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md b/sources/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md翻译完毕 similarity index 100% rename from sources/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md rename to sources/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md翻译完毕 From 98864bbc306ea66c39e5877022b6f4f0371d959b Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 11:45:43 +0800 Subject: [PATCH 4/8] Rename 20150806 Installation Guide for Puppet on Ubuntu 15.04 to 20150806 Installation Guide for Puppet on Ubuntu 15.04.md --- ... => 20150806 Installation Guide for Puppet on Ubuntu 15.04.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename translated/tech/{20150806 Installation Guide for Puppet on Ubuntu 15.04 => 20150806 Installation Guide for Puppet on Ubuntu 15.04.md} (100%) diff --git a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04 b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md similarity index 100% rename from translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04 rename to translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md From 9dddb652df763de9f174f0c15b79188399841adb Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 11:48:57 +0800 Subject: [PATCH 5/8] Update 20150806 Installation Guide for Puppet on Ubuntu 15.04.md --- .../20150806 Installation Guide for Puppet on Ubuntu 15.04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md index 290698a62f..4b40960c1c 100644 --- a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md +++ b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md @@ -391,7 +391,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 via: http://linoxide.com/linux-how-to/install-puppet-ubuntu-15-04/ 作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/ivo-wang) +译者:[ivo-wang](https://github.com/ivo-wang) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出 From 2df47a9d28ed1f130287c489b9fc2e3b4a0db688 Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 11:50:16 +0800 Subject: [PATCH 6/8] Update 20150806 Installation Guide for Puppet on Ubuntu 15.04.md --- .../20150806 Installation Guide for Puppet on Ubuntu 15.04.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md index 4b40960c1c..8c96091bf0 100644 --- a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md +++ b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md @@ -32,6 +32,8 @@ puppet代理节点所使用系统时间必须要准确,这样可以避免代 ### 3. 安装服务器软件 ### 安装开源版本的puppet有很多的方法。在本教程中我们在puppet实验室官网下载一个名为puppetlabs-release的软件包,安装后它将为我们在软件源里面添加puppetmaster-passenger。puppetmaster-passenger依赖于apache的puppet服务端。我们开始下载这个软件包 + + # cd /tmp/ # wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb From f8fbc01efa7115e507606303e35524081016f088 Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 11:53:30 +0800 Subject: [PATCH 7/8] Update 20150806 Installation Guide for Puppet on Ubuntu 15.04.md --- ...lation Guide for Puppet on Ubuntu 15.04.md | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md index 8c96091bf0..93a9d05f80 100644 --- a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md +++ b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md @@ -11,6 +11,8 @@ 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 @@ -21,6 +23,8 @@ puppet代理节点IP: 45.55.86.39 ,主机名: puppetnode ### 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 (译者注:显示类似的输出结果表示运行正常) @@ -69,6 +73,8 @@ puppet代理节点所使用系统时间必须要准确,这样可以避免代 **提示**: 在安装的时候可能会报错**Warning: Setting templatedir is deprecated.请查看 http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')** 不过不用担心,忽略掉它就好,我们只需要在设置配置文件的时候把这一项disable就行了。 如何来查看puppet master是否已经安装成功了呢?非常简单,只需要使用下面的命令查看它的版本就可以了。 + + # puppet --version 3.8.1 @@ -85,6 +91,8 @@ puppet代理节点所使用系统时间必须要准确,这样可以避免代 # 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* @@ -94,6 +102,8 @@ puppet代理节点所使用系统时间必须要准确,这样可以避免代 ### 5. 配置 Puppet Master### Puppet master作为一个证书发行机构,所有代理证书的请求都将由它来处理。首先我们要删除所有在软件包安装过程中创建出来的ssl证书。本地默认的puppet证书在/var/lib/puppet/ssl。因此我们只需要使用rm命令来移除这些证书就可以了。 + + # rm -rf /var/lib/puppet/ssl 现在来配置这些证书,在创建puppet master证书的时候,需要用使用DNS能查找到的代理节点名称。使用文本编辑器来修改服务器的配置文件puppet.conf @@ -117,6 +127,8 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 在这我们需要注释掉templatedir 这行使它失效。然后在文件的结尾添加下面的信息。 + + server = puppetmaster environment = production runinterval = 1h @@ -129,6 +141,8 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 编辑完成后保存退出。 使用下面的命令来生成一个新的证书。 + + # puppet master --verbose --no-daemonize Info: Creating a new SSL key for ca @@ -189,6 +203,8 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 我们已经准备好了puppet的服务端,现在来为代理节点安装客户端。这里我们要给每一个需要管理的节点安装客户端,并且确保这些节点能够通过DNS查询到服务器主机。下面将 puppetnode.example.com作为代理节点安装客户端 在代理节点服务器上,使用下面的命令下载puppet实验室提供的软件包。 + + # cd /tmp/ # wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb\ @@ -204,9 +220,12 @@ Puppet master作为一个证书发行机构,所有代理证书的请求都将 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 通过远程仓库安装 @@ -224,6 +243,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 ### 9. 使用APT工具锁定Agent(客户端)版本 ### 和上面的步骤一样为防止随意升级造成的配置文件混乱,我们要使用apt工具来把它锁定。具体做法是使用文本编辑器创建一个文件 **/etc/apt/preferences.d/00-puppet.pref** + # nano /etc/apt/preferences.d/00-puppet.pref 在新建的文件里面加入如下内容 @@ -245,6 +265,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 假定服务端可用,我们的客户端应该是可以和它相互连接通信的。如果不行我们需要使用完整的主机域名puppetmaster.example.com + [agent] server = puppetmaster.example.com certname = puppetnode.example.com @@ -278,16 +299,16 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 第一次运行的时候,代理节点会生成一个ssl证并且给服务端发送一个请求。在主服务器给代理节点服务器证书签名之后,主服务器才能和代理服务器通信并且控制代理服务器。 在主服务器上使用下面的命令来列出当前的证书请求 - # puppet cert list + # 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**到**hostname**这个命令来签署这个签名请求。 - # puppet cert sign puppetnode.example.com + # 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' @@ -302,16 +323,16 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 如果我们想移除一个主机,或者想重建一个主机然后再添加它。下面的例子里我们将展示如何删除puppet master上面的一个证书。使用的命令如下: # 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") + ### 12. 部署代理节点Puppet清单 ### 当配置并完成主puppet清单后,现在我们需要署代理节点服务器清单。要应用并加载主puppet清单,我们可以在代理节点服务器上面使用下面的命令 @@ -328,6 +349,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 这里像我们展示了主清单如何去管理一个单一的服务器。 如果我们打算运行的puppet清单与主puppet清单没有什么关联,那么需要使用puppet apply 到相应的路径。它仅适用于该代理节点。 + # puppet apply /etc/puppet/manifest/test.pp ### 13. 配置特殊节点清单 ### @@ -335,6 +357,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 如果我们想部署一个清单到某个特定的节点,我们需要进行以下操作。 在主服务器上面使用文本编辑器编辑/etc/puppet/manifest/site.pp + # nano /etc/puppet/manifest/site.pp 添加下面的内容进去 From 0cecba377b72802d1f04ac0251224d5a176f512b Mon Sep 17 00:00:00 2001 From: ivo wang Date: Fri, 4 Dec 2015 11:55:16 +0800 Subject: [PATCH 8/8] Update 20150806 Installation Guide for Puppet on Ubuntu 15.04.md --- ...50806 Installation Guide for Puppet on Ubuntu 15.04.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md index 93a9d05f80..7195dbe268 100644 --- a/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md +++ b/translated/tech/20150806 Installation Guide for Puppet on Ubuntu 15.04.md @@ -318,7 +318,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 # puppet cert sign --all -### 删除一个Puppet证书 ### +### 12.删除一个Puppet证书 ### 如果我们想移除一个主机,或者想重建一个主机然后再添加它。下面的例子里我们将展示如何删除puppet master上面的一个证书。使用的命令如下: @@ -333,7 +333,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 + "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") -### 12. 部署代理节点Puppet清单 ### +### 13. 部署代理节点Puppet清单 ### 当配置并完成主puppet清单后,现在我们需要署代理节点服务器清单。要应用并加载主puppet清单,我们可以在代理节点服务器上面使用下面的命令 @@ -352,7 +352,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 # puppet apply /etc/puppet/manifest/test.pp -### 13. 配置特殊节点清单 ### +### 14. 配置特殊节点清单 ### 如果我们想部署一个清单到某个特定的节点,我们需要进行以下操作。 @@ -381,7 +381,7 @@ Puppet客户端默认是不启动的。这里我们需要使用文本编辑器 } 这里的配置显示我们将在名为puppetnode and puppetnode1的2个特殊节点上面安装apache服务. 这里可以添加其他我们需要安装部署的具体节点进去。 -### 14. 配置清单模块 ### +### 15. 配置清单模块 ### 模块化组件组是非常实用的,在Puppet社区有很多人贡献自己的模块组件。