﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-尽我所能，一步一个脚印-随笔分类-linux系统管理</title><link>http://www.blogjava.net/terrylc/category/47807.html</link><description>贵在执着</description><language>zh-cn</language><lastBuildDate>Tue, 01 Mar 2011 22:17:07 GMT</lastBuildDate><pubDate>Tue, 01 Mar 2011 22:17:07 GMT</pubDate><ttl>60</ttl><item><title>Puppet Get Started</title><link>http://www.blogjava.net/terrylc/archive/2011/02/21/344759.html</link><dc:creator>terrylc</dc:creator><author>terrylc</author><pubDate>Mon, 21 Feb 2011 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/terrylc/archive/2011/02/21/344759.html</guid><wfw:comment>http://www.blogjava.net/terrylc/comments/344759.html</wfw:comment><comments>http://www.blogjava.net/terrylc/archive/2011/02/21/344759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/terrylc/comments/commentRss/344759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/terrylc/services/trackbacks/344759.html</trackback:ping><description><![CDATA[<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&nbsp; 最近由于软件在多系统上的部署，集中配置管理即被提上日程了，简单的了解了几个常用的集中配置管理软件如cfengine,puppet，chef，下面的内容是对puppet入门的简单总结：<br />
</div>
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 服务器的环境：ubuntu9.04+<br />
<ul>
    <li>puppet概述</li>
</ul>
&nbsp; (1) puppet定义<br />
&nbsp;&nbsp;&nbsp; puppet是一种采用c/s架构，为实现数据库中心自动化管理而设计的配置管理软件。<br />
<br />
&nbsp;(2)puppet执行的基础流程<br />
puppet服务器端保存着对所有客户端配置的代码，puppet称之为manifest。<br />
<br />
<fieldset><legend>客户端</legend>客户端puppetd进程调用facter，facter探测出主机的一些变量，如主机名，ip，内存，puppted把这些信息通过ssl发送到服务器端。<br />
</fieldset><br />
<fieldset><legend>服务器端</legend>服务器端的puppetmaster检测客户端的信息，然后找到对应的manifest里面对应的node配置，并且对这部分的代码进行解析，生成伪代码发送给客户端。<br />
</fieldset><br />
<fieldset><legend>客户端</legend>客户端接受到相应的伪代码，并且执行，客户端将执行的结果发送到服务器上，以便服务器将相应的执行结果记录到日志中。<br />
</fieldset><br />
上面的一些信息中，可能涉及到一些专业的名词，其中它们puppet里面基础的语法，没有什么神秘的东东。<br />
<br />
<ul>
    <li>puppet的安装和配置</li>
</ul>
(1)服务器端的配置<br />
<br />
<fieldset><legend></legend>echo "ip puppet.server.com" &gt;&gt;/etc/hosts <br />
</fieldset><br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">aptitude&nbsp;install&nbsp;puppet&nbsp;puppetmaster</span></div>
&nbsp;<br />
(2)客户端的配置<br />
<br />
<fieldset>echo "ip puppet.server.com" &gt;&gt;/etc/hosts <br />
</fieldset>&nbsp;<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">aptitude&nbsp;install&nbsp;puppet <br />
</span></div>
<br />
(3)认证证书<br />
<br />
客户端请求认证的证书：<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">puppetd&nbsp;</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">test&nbsp;</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">server&nbsp;puppet.server.com</span></div>
<br />
服务器端对证书进行签名<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">puppetca&nbsp;</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">list<br />
puppetca&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">s&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">a</span></div>
<br />
(4)简单的测试<br />
修改服务器端/etc/puppet/manifest/site.pp<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">node&nbsp;</span><span style="color: rgb(0, 0, 255);">default</span><span style="color: rgb(0, 0, 0);">&nbsp;{<br />
file&nbsp;{<br />
</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/tmp/test.txt</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">:<br />
content&nbsp;</span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Hello&nbsp;World!</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br />
}<br />
}</span></div>
<br />
客户端执行如下操作：<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">puppetd&nbsp;</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">test&nbsp;</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">server&nbsp;puppet.server.com</span></div>
你将神奇的发现客户端生成了test.txt文件<br />
<ul>
    <li>&nbsp;puppet的语法</li>
</ul>
这里关于详细的语法我就不多讲了，需要的话可以访问http://docs.puppetlabs.com/guides/language_tutorial.html，进行学习。<br />
这里我重点说明下module。充分的利用module，将能起到事半功倍的效果。<br />
简单的介绍下apache2模块：<br />
<br />
mkdir /etc/puppet/modules/apache2<br />
<br />
cd /etc/puppet/modules/apache2<br />
<br />
其中的目录结构如下：<br />
<img src="http://www.blogjava.net/images/blogjava_net/terrylc/Screenshot.png" alt="" border="0" /><br />
<br />
edit /etc/puppet/modules/apache2/manifests/init.pp<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;apache2{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;libapache2</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">mod</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">php5,php5,apache2&nbsp;]:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensure&nbsp;</span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;installed;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">apache2</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensure&nbsp;</span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;running,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pattern&nbsp;</span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">apache2</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<br />
简单的入门我就说这么多了，可能有点云里雾里，没有关系，接下来我会介绍puppet的基础语法和详细日常使用教程。<br />
<img src ="http://www.blogjava.net/terrylc/aggbug/344759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/terrylc/" target="_blank">terrylc</a> 2011-02-21 15:47 <a href="http://www.blogjava.net/terrylc/archive/2011/02/21/344759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>