<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>mizzy.org: puppet &#12398;&#35328;&#35486;&#27083;&#36896;</title>
    <link>http://blog.mizzy.org/articles/2007/03/19/puppet02</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>puppet &#12398;&#35328;&#35486;&#27083;&#36896;</title>
      <description>&lt;p&gt;
&lt;a class="ext-link" href="http://reductivelabs.com/trac/puppet/wiki/InstallationGuide"&gt;&lt;span class="icon"&gt;&lt;/span&gt;Installation Guide&lt;/a&gt; &#12434;&#35501;&#12417;&#12400;&#12289;&#12392;&#12426;&#12354;&#12360;&#12378; puppet &#12434;&#21205;&#12363;&#12377;&#12371;&#12392;&#12399;&#12391;&#12365;&#12427;&#12369;&#12393;&#12289;&#12420;&#12426;&#12383;&#12356;&#12371;&#12392;&#12434;&#12420;&#12429;&#12358;&#12392;&#24605;&#12387;&#12390;&#12418;&#12377;&#12368;&#12395;&#12391;&#12365;&#12427;&#12431;&#12369;&#12391;&#12418;&#12394;&#12356;&#12290;&#12392;&#12356;&#12358;&#12431;&#12369;&#12391;&#12289;&#12489;&#12461;&#12517;&#12513;&#12531;&#12488;&#12434;&#12385;&#12419;&#12435;&#12392;&#35501;&#12435;&#12391;&#12415;&#12427;&#12371;&#12392;&#12395;&#12375;&#12383;&#12290;
&lt;/p&gt;
&lt;p&gt;
&#12414;&#12378;&#12399; puppet &#12398;&#35373;&#23450;&#12501;&#12449;&#12452;&#12523;&#12391;&#20351;&#12431;&#12428;&#12390;&#12356;&#12427;&#20869;&#37096;&#35328;&#35486;&#12398;&#29702;&#35299;&#12363;&#12425;&#12289;&#12392;&#12356;&#12358;&#12371;&#12392;&#12391;&#12289;&lt;a class="ext-link" href="http://reductivelabs.com/trac/puppet/wiki/LanguageStructures"&gt;&lt;span class="icon"&gt;&lt;/span&gt;Language Structures&lt;/a&gt; &#12434;&#36229;&#24847;&#35379;&#12375;&#12390;&#12415;&#12427;&#12290;
&lt;/p&gt;
&lt;h3 id="Types"&gt;Types&lt;/h3&gt;
&lt;p&gt;
puppet &#35373;&#23450;&#12398;&#22522;&#26412;&#27083;&#25104;&#21336;&#20301;&#12290;&#31649;&#29702;&#12373;&#12428;&#12427;&#12467;&#12531;&#12500;&#12517;&#12540;&#12479;&#19978;&#12398;&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#65288;&#12501;&#12449;&#12452;&#12523;&#12392;&#12363;&#12497;&#12483;&#12465;&#12540;&#12472;&#12392;&#12363;&#65289;&#12434;&#34920;&#12377;&#12418;&#12398;&#12391;&#12289;&#12354;&#12425;&#12363;&#12376;&#12417;&#29992;&#24847;&#12373;&#12428;&#12383;&#12499;&#12523;&#12488;&#12452;&#12531;&#12479;&#12452;&#12503;&#20197;&#22806;&#12395;&#12418;&#12289;&#33258;&#12425;&#23450;&#32681;&#12377;&#12427;&#12371;&#12392;&#12418;&#21487;&#33021;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
file { "/etc/passwd": owner =&gt; root, mode =&gt; 644 } 
package { apache: install =&gt; true }
&lt;/pre&gt;
&lt;p&gt;
&#35443;&#12375;&#12367;&#12399; &lt;a class="ext-link" href="http://reductivelabs.com/trac/puppet/wiki/TypeReference"&gt;&lt;span class="icon"&gt;&lt;/span&gt;Type Reference&lt;/a&gt; &#12434;&#21442;&#29031;&#12290;
&lt;/p&gt;
&lt;h3 id="Assignment"&gt;Assignment&lt;/h3&gt;
&lt;p&gt;
&#22793;&#25968;&#12364;&#21033;&#29992;&#12391;&#12365;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
$variable = value
&lt;/pre&gt;
&lt;pre class="wiki"&gt;
$x = foo
$y = bar
$z = "$x$y"
&lt;/pre&gt;
&lt;h3 id="BringingConfigfilestogether"&gt;Bringing Config files together&lt;/h3&gt;
&lt;p&gt;
&#35373;&#23450;&#12501;&#12449;&#12452;&#12523;&#12395;&#12289;&#21029;&#12398;&#35373;&#23450;&#12501;&#12449;&#12452;&#12523;&#12434;&#12452;&#12531;&#12509;&#12540;&#12488;&#12391;&#12365;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
import "filename"
&lt;/pre&gt;
&lt;p&gt;
&#27491;&#35215;&#34920;&#29694;&#12418;&#21033;&#29992;&#21487;&#33021;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
import "classes/*"
import "packages/[a-z]*"
&lt;/pre&gt;
&lt;h3 id="Scope"&gt;Scope&lt;/h3&gt;
&lt;p&gt;
{ } &#12395;&#12424;&#12387;&#12390;&#12473;&#12467;&#12540;&#12503;&#12364;&#24418;&#25104;&#12373;&#12428;&#12427;&#12290;
&lt;/p&gt;
&lt;p&gt;
&#22793;&#25968;&#12399;&#19968;&#24230;&#21106;&#12426;&#24403;&#12390;&#12425;&#12428;&#12427;&#12392;&#12289;&#21516;&#19968;&#12473;&#12467;&#12540;&#12503;&#20869;&#12391;&#12399;&#22793;&#26356;&#12391;&#12365;&#12394;&#12356;&#12364;&#12289;&#12469;&#12502;&#12473;&#12467;&#12540;&#12503;&#20869;&#12391;&#12399;&#21516;&#19968;&#21517;&#12398;&#22793;&#25968;&#12434;&#21106;&#12426;&#24403;&#12390;&#12427;&#12371;&#12392;&#12364;&#12391;&#12365;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
$var = value

# override $var
define testing {
    $var = othervalue
}
&lt;/pre&gt;
&lt;h3 id="Components"&gt;Components&lt;/h3&gt;
&lt;p&gt;
&#12371;&#12371;&#12391;&#12356;&#12358; Components &#12392;&#12399;&#12289;&#33258;&#20998;&#12391;&#23450;&#32681;&#12377;&#12427; Type &#12398;&#12371;&#12392;&#12387;&#12413;&#12356;&#12290;Components &#12398;&#23450;&#32681;&#12392;&#21033;&#29992;&#12399;&#20197;&#19979;&#12398;&#27096;&#12394;&#24863;&#12376;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
define svnserve($source, $path, $user = false, $password = false) {
    file { $path:
        create =&gt; directory,
        owner =&gt; root,
        group =&gt; root
    }
    $svncmd = $user ? {
        false =&gt; "/usr/bin/svn co --non-interactive $source/$name .",
        default =&gt; "/usr/bin/svn co --non-interactive --username $user --password '$password' $source/$name ."
    }   
    exec { $svncmd: 
        cwd =&gt; $path,
        require =&gt; file[$path],
        creates =&gt; "$path/.svn"
    }   
}

svnserve { dist:
    source =&gt; "https://reductivelabs.com/svn",
    path =&gt; "/dist",
    user =&gt; "puppet",
    password =&gt; "password"
}

svnserve { "dist/config/apps/puppet":
    source =&gt; "https://reductivelabs.com/svn",
    path =&gt; "/etc/puppet",
    user =&gt; "puppet",
    password =&gt; "password"
}
&lt;/pre&gt;
&lt;p&gt;
&#21033;&#29992;&#12377;&#12427;&#26178;&#12399;&#12499;&#12523;&#12488;&#12452;&#12531;&#12479;&#12452;&#12503;&#12392;&#27083;&#25991;&#19978;&#12398;&#36949;&#12356;&#12399;&#12394;&#12356;&#12290;
&lt;/p&gt;
&lt;h3 id="ServerClasses"&gt;Server Classes&lt;/h3&gt;
&lt;p&gt;
Class &#12434;&#23450;&#32681;&#12375;&#12390;&#12452;&#12531;&#12463;&#12523;&#12540;&#12489;&#12377;&#12427;&#12371;&#12392;&#12364;&#12391;&#12365;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
class &lt;class_name&gt; [inherits &lt;super_class_name&gt;] { ... }
&lt;/pre&gt;
&lt;p&gt;
&#32153;&#25215;&#12418;&#21487;&#33021;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
# really simple example
class solaris {
    file {
        "/etc/passwd": owner =&gt; root, group =&gt; root, mode =&gt; 644;
        "/etc/shadow": owner =&gt; root, group =&gt; root, mode =&gt; 440
    }
}

class solworkstation inherits solaris {
    file {
        "/etc/sudoers": owner =&gt; root, group =&gt; root, mode =&gt; 440;
        "/bin/sudo": owner =&gt; root, group =&gt; root, mode =&gt; 4111
    }
}

include solworkstation
&lt;/pre&gt;
&lt;p&gt;
&#20197;&#19979;&#12398;&#20363;&#12384;&#12392;&#12289;$operatingsystem &#12398;&#20516;&#12392;&#21516;&#21517;&#12398; Class &#12392;&#12289;$hostname &#12395;&#24540;&#12376;&#12383; Class &#12364;&#12452;&#12531;&#12463;&#12523;&#12540;&#12489;&#12373;&#12428;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
include $operatingsystem, $hostname ? {
    myhost =&gt; classA, default =&gt; classB
}
&lt;/pre&gt;
&lt;p&gt;
$operatingsystem &#12392;&#12363; $hostname &#12392;&#12363;&#12399;&#12289;&lt;a class="ext-link" href="http://reductivelabs.com/projects/facter/"&gt;&lt;span class="icon"&gt;&lt;/span&gt;Facter&lt;/a&gt;&#12392;&#12356;&#12358;&#12521;&#12452;&#12502;&#12521;&#12522;&#12434;&#20351;&#12387;&#12390;&#12503;&#12522;&#12475;&#12483;&#12488;&#12373;&#12428;&#12390;&#12356;&#12427;&#12415;&#12383;&#12356;&#12290;
&lt;/p&gt;
&lt;h3 id="Classesvs.Components"&gt;Classes vs. Components&lt;/h3&gt;
&lt;p&gt;
Classes &#12392; Components &#12398;&#36949;&#12356;&#12399;&#20197;&#19979;&#12398;&#36890;&#12426;&#12290;
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Classes &#12399;&#12471;&#12531;&#12464;&#12523;&#12488;&#12531;&#12394;&#12398;&#12391;&#12289;&#12507;&#12473;&#12488;&#19978;&#12391;&#12402;&#12392;&#12388;&#12375;&#12363;&#12394;&#12356;&#12418;&#12398;&#12434;&#23450;&#32681;&#12377;&#12427;&#12398;&#12395;&#21033;&#29992;&#12377;&#12427;&#65288;OS&#12398;&#31278;&#39006;&#12392;&#12363;&#12289;&#29305;&#23450;&#12398;&#12497;&#12483;&#12465;&#12540;&#12472;&#12392;&#12363;&#12469;&#12540;&#12499;&#12473;&#12392;&#12363;&#12290;&#65289;&lt;/li&gt;
&lt;li&gt;Components &#12399;&#12507;&#12473;&#12488;&#19978;&#12391;&#35079;&#25968;&#12354;&#12427;&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#65288;&#12496;&#12540;&#12481;&#12515;&#12523;&#12507;&#12473;&#12488;&#12394;&#12393;&#65289;&#12434;&#23450;&#32681;&#12377;&#12427;&#12398;&#12395;&#21033;&#29992;&#12377;&#12427;&#12290;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
&#12354;&#12392;&#12289;Classes &#12399;&#24341;&#25968;&#12434;&#21463;&#12369;&#21462;&#12428;&#12394;&#12356;&#12289;&#12392;&#12356;&#12358;&#36949;&#12356;&#12418;&#12354;&#12427;&#12290;
&lt;/p&gt;
&lt;h3 id="Subclssing"&gt;Subclssing&lt;/h3&gt;
&lt;p&gt;
Class &#12399;&#32153;&#25215;&#12364;&#12391;&#12365;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
class unix {
    file { "/etc/sudoers":
        owner =&gt; root,
        group =&gt; root,
        mode =&gt; 440
    }
}

class bsd inherits unix {
    File["/etc/sudoers"] {
        group =&gt; wheel
    }
}
&lt;/pre&gt;
&lt;h3 id="UsingClassesOutsideofPuppet"&gt;Using Classes Outside of Puppet&lt;/h3&gt;
&lt;p&gt;
puppet &#12469;&#12540;&#12496;&#12391;&#35373;&#23450;&#12373;&#12428;&#12383; Class &#21517;&#12364;&#12289;puppet &#12463;&#12521;&#12452;&#12450;&#12531;&#12488;&#12398; /etc/puppet/classes.txt &#12395;&#20445;&#23384;&#12373;&#12428;&#12427;&#12398;&#12391;&#12289;&#12381;&#12428;&#12434;&#22806;&#37096;&#12503;&#12525;&#12464;&#12521;&#12512;&#12394;&#12393;&#12363;&#12425;&#35501;&#12415;&#36796;&#12435;&#12391;&#21033;&#29992;&#12375;&#12383;&#12426;&#12391;&#12365;&#12427;&#12424;&#12289;&#12392;&#12358;&#12371;&#12392;&#12425;&#12375;&#12356;&#12290;
&lt;/p&gt;
&lt;p&gt;
FC4 &#12391; yum insall &#12375;&#12383; puppet &#12398;&#22580;&#21512;&#12399;&#12289;/var/lib/puppet/classes.txt &#12395;&#20445;&#23384;&#12373;&#12428;&#12390;&#12356;&#12383;&#12290;
&lt;/p&gt;
&lt;h3 id="Nodes"&gt;Nodes&lt;/h3&gt;
&lt;pre class="wiki"&gt;
node &lt;hostname&gt; { ... }
&lt;/pre&gt;
&lt;p&gt;
&#29305;&#23450;&#12398;&#12507;&#12473;&#12488;&#12395;&#36969;&#29992;&#12377;&#12427;&#35373;&#23450;&#12434;&#21106;&#12426;&#24403;&#12390;&#12427;&#12290;
&lt;/p&gt;
&lt;p&gt;
&#20197;&#19979;&#12398;&#20363;&#12384;&#12392;&#12289;file type &#12399;&#12377;&#12409;&#12390;&#12398;&#12507;&#12473;&#12488;&#12395;&#21106;&#12426;&#24403;&#12390;&#12425;&#12428;&#12427;&#12369;&#12393;&#12289;webserver class &#12392; dbserver class &#12398;&#20013;&#12395;&#26360;&#12363;&#12428;&#12383;&#35373;&#23450;&#12399;&#12289;&#12381;&#12428;&#12382;&#12428;&#29305;&#23450;&#12398;&#12507;&#12473;&#12488;&#12395;&#12398;&#12415;&#21106;&#12426;&#24403;&#12390;&#12425;&#12428;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
class webserver { ... }
class dbserver { ... }

file { "/etc/sudoers": mode =&gt; 440 } # apply to everyone

node host1, host2 {
    include webserver
}
node host3, host4 {
    include dbserver
}
&lt;/pre&gt;
&lt;p&gt;
node &#12399;&#32153;&#25215;&#12377;&#12427;&#12371;&#12392;&#12418;&#21487;&#33021;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
node base {
    include $operatingsystem
}

node kirby inherits base {
    include webserver
}
&lt;/pre&gt;
&lt;p&gt;
FQDN &#12391;&#25351;&#23450;&#12377;&#12427;&#26178;&#12399;&#12289;&#12471;&#12531;&#12464;&#12523;&#12463;&#12457;&#12540;&#12488;&#12391;&#22258;&#12416;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
node 'host.domain.com' {
    ...
}
&lt;/pre&gt;
&lt;h3 id="Conditionals"&gt;Conditionals&lt;/h3&gt;
&lt;p&gt;
&#26465;&#20214;&#25351;&#23450;&#12364;&#21487;&#33021;&#12290;
&lt;/p&gt;
&lt;p&gt;
&#20197;&#19979;&#12398;&#20363;&#12399; $os &#12364;&#20309;&#12363;&#12395;&#12424;&#12387;&#12390;&#12289; $owner &#12395;&#20837;&#12427;&#20516;&#12364;&#22793;&#12431;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
define testing(os) {
    $owner = $os ? {
        sunos =&gt; adm,
        redhat =&gt; bin,
        default =&gt; root
    }
    file { "/some/file": owner =&gt; $owner }
}
&lt;/pre&gt;
&lt;p&gt;
&#20197;&#19979;&#12398;&#20363;&#12399; $operatingsystem &#12364;&#20309;&#12363;&#12395;&#12424;&#12387;&#12390;&#12289;&#36969;&#29992;&#12377;&#12427; class &#12364;&#22793;&#12431;&#12427;&#12290;
&lt;/p&gt;
&lt;pre class="wiki"&gt;
case $operatingsystem {
    sunos:      { solaris {} } # apply the solaris class
    redhat:     { redhat  {} } # apply the redhat class
    default:    { generic {} } # apply the generic class
}
&lt;/pre&gt;
&lt;h3 id="Reservedwords"&gt;Reserved words&lt;/h3&gt;
&lt;p&gt;
true, define, inherits, class &#12399;&#20104;&#32004;&#35486;&#12290;
&lt;/p&gt;
&lt;h3 id="Comments"&gt;Comments&lt;/h3&gt;
&lt;p&gt;
sh &#12473;&#12479;&#12452;&#12523;&#12398;&#12467;&#12513;&#12531;&#12488;&#12364;&#21033;&#29992;&#21487;&#12290;
&lt;/p&gt;

</description>
      <pubDate>Mon, 19 Mar 2007 13:34:13 +0900</pubDate>
      <guid isPermaLink="false">urn:uuid:82EBADD6-FB43-11DB-B19E-9689BF6E4193</guid>
      <author>Gosuke Miyashita</author>
      <link>http://blog.mizzy.org/articles/2007/03/19/puppet02</link>
      <category>linux</category>
      <trackback:ping>http://blog.mizzy.org/articles/trackback/407</trackback:ping>
    </item>
  </channel>
</rss>
