Puppet基礎編7-最初の完全テストモジュールpuppetを作成する
23670 ワード
Puppet基礎編7-最初の完全テストモジュールpuppetを作成する
ゼロ基礎学習Puppet自動化構成管理シリーズドキュメント
Puppetを本番に導入する最初のモジュールはpuppet自体です.puppetは他のすべてのモジュールを実行してそれぞれの導入を完了できますが、puppetに問題が発生すると、すべてが停止します.もちろんpuppet自体のモジュールのほか、ネットワークのスムーズさや追加の環境などを保証する必要があります.
以前は簡単なmotdモジュールを書いたことがありますが、いくつかのモジュールの構造と簡単なpp文法を大体理解しています.次に詳しく説明します.では、完全なpuppetモジュールを作成するには、どのような要素を考慮すればいいのでしょうか.
次にagent 1とagent 3を例に説明します
1、puppetモジュールディレクトリ構造の作成
[root@puppetmaster ~]# cd /etc/puppet/modules/
[root@puppetmaster modules]# mkdir puppet
[root@puppetmaster modules]# cd puppet/
[root@puppetmaster puppet]# mkdir files manifests templates #
[root@puppetmaster puppet]# tree ../puppet
../puppet
├── files #
├── manifests # puppet
└── templates # , pp
3 directories, 0 files
[root@puppetmaster puppet]#
2、puppetプロファイルの作成
[root@puppetmaster puppet]# cd manifests/
[root@puppetmaster manifests]# touch init.pp config.pp install.pp service.pp params.pp
[root@puppetmaster manifests]# tree ../
../
├── files
├── manifests
│ ├── config.pp # puppet
│ ├── init.pp # pp
│ ├── install.pp # puppet
│ ├── params.pp #
│ └── service.pp # puppet
└── templates
3 directories, 5 files
3、puppetモジュールプロファイルの作成
プロセス全体は、まずpuppet(install.pp)をインストールし、puppet(config.pp)を構成し、最後にpuppetサービス(service.pp)を開始する必要があります.
注意:次のプロセスは一歩一歩ではなく、比較的完全なモジュールが完成するまで、逐次漸進的なプロセスです.
3.1、インストールプロファイルinstallを作成する.pp
パッケージリソースによるパッケージの構文およびケースの詳細については、http://kisspuppet.com/2013/11/11/package/
class名は、プロファイル全体にinitがあるため、作成されたモジュール名と一致する必要があります.puppetという名前です.ppは開始プロファイルであり、すべてがサブプロファイルであるべきであり、すべてが「classプライマリクラス名::classサブクラス名」と書くべきであり、classサブクラス名はpuppet::installのように作成されたppファイル名と一致する必要がある、作成されたサブクラス名はinstallであるべきである.pp
3.1.1、判断条件を満たさない配置書類を作成する
ノードインストールpuppetは主にfactorに依存する
[root@puppetmaster manifests]# vim install.pp
class puppet::install{ #
include puppet::puppet_install,puppet::facter_install
}
class puppet::puppet_install{
package { 'puppet':
ensure => installed, #
}
}
class puppet::facter_install{
package { 'facter':
ensure => installed,
}
}
以下の2つの書き方も可能です
[root@puppetmaster manifests]# vim install.pp
class puppet::install{ #
package { 'puppet':
ensure => installed,
}
package { 'facter':
ensure => installed,
}
}
[root@puppetmaster manifests]# vim install.pp
class puppet::install{
package { ['puppet','facter']: #
ensure => installed,
}
}
3.1.2.システムのバージョンを判断する条件を備えたモジュールを作成する
このような場合、yumソースにはpuppetバージョンがたくさんありますが、すべてのノードに指定したバージョンだけをインストールしてほしいと思っています.例えば2.7.25ですが、どのように設定しますか?次に,ノードのシステムバージョンが異なる場合,例えばRHEL 5,RHEL 6などが考えられるが,puppetモジュールを自分で判断させるにはどうすればよいのだろうか.
以下のfactorで判断する
[root@agent1 ~]# facter | grep operatingsystemmajrelease
operatingsystemmajrelease => 5
[root@agent3 ~]# facter | grep operatingsystemmajrelease
operatingsystemmajrelease => 6
以下のように書くのが合理的です
[root@puppetmaster manifests]# vim install.pp
class puppet::install{
include puppet::puppet_install,puppet::facter_install
}
class puppet::puppet_install{
package { 'puppet':
ensure => $operatingsystemmajrelease ?{ #
5 => '2.7.25-1.el5',
6 => '2.7.25-1.el6',
}
}
}
class puppet::facter_install{
package { 'facter':
ensure => $operatingsystemmajrelease ?{
5 => '1.7.5-1.el5',
6 => '1.7.5-1.el6',
}
}
}
3.1.3子をinitに追加する.pp中
[root@puppetmaster manifests]# vim init.pp
class puppet{
include puppet::install
}
3.1.4 puppetメインプロファイルsiteに適用する.ppのノード上
[root@puppetmaster ~]# vim /etc/puppet/manifests/site.pp
$puppetmaster = 'puppetmaster.kisspuppet.com'
node 'puppetmaster_cert.kisspuppet.com'{
include motd,puppet
}
node 'agent1_cert.kisspuppet.com'{
include motd,puppet
}
node 'agent2_cert.kisspuppet.com'{
include motd,puppet
}
node 'agent3_cert.kisspuppet.com'{
include motd,puppet
}
以下のような書き方も可能です
[root@puppetmaster ~]# vim /etc/puppet/manifests/site.pp
$puppetmaster = 'puppetmaster.kisspuppet.com'
class environments{
include motd,puppet
}
node 'puppetmaster_cert.kisspuppet.com'{
include environments
}
node 'agent1_cert.kisspuppet.com'{
include environments
}
node 'agent2_cert.kisspuppet.com'{
include environments
}
node 'agent3_cert.kisspuppet.com'{
include environments
}
すべてのノードが同じモジュールを使用する方法は、次のように書くこともできます.
[root@puppetmaster ~]# vim /etc/puppet/manifests/site.pp
$puppetmaster = 'puppetmaster.kisspuppet.com'
class environments{
include motd,puppet
}
node default{
include environments
}
3.1.5、簡単なテストを行う
ファクタバージョンを1.7.3に下げる
[root@agent1 ~]# rpm -e facter --nodeps
[root@agent1 ~]# rpm -ivh facter-1.7.3-1.el5.x86_64.rpm
warning: facter-1.7.3-1.el5.x86_64.rpm: Header V3 RSA/SHA1 signature: NOKEY, key ID 4bd6ec30
Preparing... ########################################### [100%]
1:facter ########################################### [100%]
[root@agent1 ~]# facter --version
1.7.3
--noopで試行的なテストを行うことで、ノードの変化が見られますが、変更は行われません.これもpuppetの強みの一つです.
[root@agent1 ~]# puppet agent -t --noop
notice: Ignoring --listen on onetime run
info: Caching catalog for agent1_cert.kisspuppet.com
info: Applying configuration version '1394794815'
notice: /Stage[main]/Puppet::Facter_install/Package[facter]/ensure: current_value 1.7.3-1.el5, should be 1.7.5-1.el5 (noop)
notice: Class[Puppet::Facter_install]: Would have triggered 'refresh' from 1 events
notice: Stage[main]: Would have triggered 'refresh' from 1 events
notice: Finished catalog run in 0.23 seconds
[root@agent1 ~]# facter --version
1.7.3
強制的に実行すると、管理側のfacterバージョンがpuppetモジュールで指定されたバージョン1.7.5になったことがわかります.これはrpmパッケージのアップグレード方法を説明しています.
[root@agent1 ~]# puppet agent -t
notice: Ignoring --listen on onetime run
info: Caching catalog for agent1_cert.kisspuppet.com
info: Applying configuration version '1394794815'
notice: /Stage[main]/Puppet::Facter_install/Package[facter]/ensure: ensure changed '1.7.3-1.el5' to '1.7.5-1.el5'
notice: Finished catalog run in 6.27 seconds
[root@agent1 ~]# facter --version
1.7.5
全体のプロセスは、ノードがpuppetmasterエンドを同期した後、factorバージョン番号が間違っていることに気づき、システムタイプに応じてすぐに下位レベルのインストールツールyum(suseがzypperを呼び出すなど)を呼び出してインストールを行い、プロセス全体が透明であり、puppetが示す強力な機能の2つです.
3.2、プロファイルconfigを作成する.pp
fileリソースによるfileリソースの構成とケースの詳細については、http://kisspuppet.com/2013/11/14/file/
3.2.1、私達はしばらくpuppetだけを配置する.confファイル
[root@puppetmaster manifests]# vim config.pp
class puppet::config{
file { '/etc/puppet/puppet.conf': #
ensure => present, #
content => template('puppet/puppet.conf.erb'), # , (templates )
owner => 'root', # root
group => 'root', # root
mode => '0644', # 644
require => Class['puppet::install'], # install.pp , puppet
}
}
3.2.2、puppetを書く.conf.erbテンプレート
puppetのerbテンプレートの存在は、erbテンプレートがfact変数を参照することができ、変数の内容はノードシステムによって変化するため、ノードごとにファイルを個別に構成する問題を解決するためである.
以下に、いずれかのノードの現在のpuppetを示す.confプロファイル、まず変化する内容を見つけます
[root@agent1 ~]# vim /etc/puppet/puppet.conf
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppetmaster.kisspuppet.com #
certname = agent1_cert.kisspuppet.com #
runinterval = 10
listen = true
次に、この2つの変数を解決します.
paramsを作成すると言ったppは変数問題を解決するために、私たちはまずこれを使って解決します.
hostnameなどのfact値が一意であるfactを見つけます
[root@agent1 ~]# facter |grep hostname
hostname => agent1
[root@agent3 ~]# facter |grep hostname
hostname => agent3
作成params.ppファイル、certname変数を追加
[root@puppetmaster manifests]# vim params.pp
class puppet::params {
$puppetserver = 'puppetmaster.kisspuppet.com' # puppetserver puppetmaster
case $hostname{ # certname
agent1: {
$certname = 'agent1_cert.kisspuppet.com'
}
agent3: {
$certname = 'agent3_cert.kisspuppet.com'
}
default: { #
fail("certname is not supported on ${::operatingsystem}")
}
}
}
注意:このような変数を作成する方法は、多くのノードの場合、明らかに最善の方法ではありません.fact変数で実現できますか.答えは可能です.以下のように書くことができます.
[root@puppetmaster manifests]# vim params.pp
class puppet::params {
$puppetserver = 'puppetmaster.kisspuppet.com'
$certname = "${::hostname}_cert.kisspuppet.com" # fact:hostname
case $operatingsystemmajrelease{
5: {
$puppet_release = '2.7.23-1.el5'
$facter_release = '1.7.3-1.el5'
}
6: {
$puppet_release = '2.7.23-1.el6'
$facter_release = '1.7.3-1.el6'
}
default: {
fail("Module puppet is not supported on ${::operatingsystem}")
}
}
}
備考:ここではデフォルトのfactを使用していますが、システムにないfactをどのように実現するかは、後述する『Puppet拡張編1-カスタムfact結合ENC(hirea)の応用実践』でご紹介します
思考:変数、特にhostname変数によってcertnameを決定することはhostnameが変わらない場合にのみcertnameが変わらないことを保証することができる.そうしないと、ノードが任意にhostnameを修正するとcertnameが変更され、前期の認証が失効し、再認証が必要になる.では、hostnameが変化した場合にcertnameが変わらない、つまり証明書を再申請する必要はないのではないでしょうか.後述する『Puppet拡張編1-カスタムfactとENC(hirea)の応用実践』で紹介します.
テンプレートにcertname変数を参照するテンプレートの格納場所とconfigに注意する.ppで参照テンプレートの位置を一致させる
[root@puppetmaster manifests]# vim ../templates/puppet.conf.erb
### config by puppet ###
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = # puppetserver
certname = # certname
runinterval = 10
listen = true
configのためppはparamsに依存する.ppの変数なのでconfig.ppにはclass puppet::paramsを適用するべきである
3.3.3依存関係の決定
[root@puppetmaster manifests]# vim config.pp
class puppet::config{
include puppet::params #
file { '/etc/puppet/puppet.conf':
ensure => present,
content => template('puppet/puppet.conf.erb'),
owner => 'root',
group => 'root',
mode => '0644',
require => Class['puppet::install'],
}
}
init.ppにはclass puppet::configを含めるべきである
[root@puppetmaster manifests]# vim init.pp
class puppet{
include puppet::install,puppet::config
}
3.3.4更新テスト
まずnoopテストを行います
[root@agent1 ~]# puppet agent -t --noop
notice: Ignoring --listen on onetime run
info: Caching catalog for agent1_cert.kisspuppet.com
info: Applying configuration version '1394797763'
notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content:
--- /etc/puppet/puppet.conf 2014-03-10 08:22:33.000000000 +0800
+++ /tmp/puppet-file20140314-7231-f50ehp-0 2014-03-14 19:49:24.000000000 +0800
@@ -1,3 +1,4 @@
+### config by puppet ### #
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content: current_value {md5}fb17740fd53d8d4dfd6d291788a9bda3, should be {md5}134bae34adddbf30a3fe02ff0eb3c6a6 (noop)
notice: Class[Puppet::Config]: Would have triggered 'refresh' from 1 events
notice: Stage[main]: Would have triggered 'refresh' from 1 events
notice: Finished catalog run in 0.43 seconds
更新の強制
[root@agent1 ~]# puppet agent -t
notice: Ignoring --listen on onetime run
info: Caching catalog for agent1_cert.kisspuppet.com
info: Applying configuration version '1394797763'
notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content:
--- /etc/puppet/puppet.conf 2014-03-10 08:22:33.000000000 +0800
+++ /tmp/puppet-file20140314-7475-mlybgg-0 2014-03-14 19:50:16.000000000 +0800
@@ -1,3 +1,4 @@
+### config by puppet ###
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
info: FileBucket adding {md5}fb17740fd53d8d4dfd6d291788a9bda3
info: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]: Filebucketed /etc/puppet/puppet.conf to puppet with sum fb17740fd53d8d4dfd6d291788a9bda3
notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content: content changed '{md5}fb17740fd53d8d4dfd6d291788a9bda3' to '{md5}134bae34adddbf30a3fe02ff0eb3c6a6'
notice: Finished catalog run in 0.34 seconds
[root@agent1 ~]# cat /etc/puppet/puppet.conf
### config by puppet ###
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppetmaster.kisspuppet.com # puppetserver
certname = agent1_cert.kisspuppet.com # certname
runinterval = 10
[root@agent3 ~]# puppet agent -t
info: Caching certificate for agent3_cert.kisspuppet.com
info: Caching certificate_revocation_list for ca
info: Caching catalog for agent3_cert.kisspuppet.com
info: Applying configuration version '1394797763'
notice: /Stage[main]/Motd/File[/etc/motd]/content:
--- /etc/motd 2010-01-12 21:28:22.000000000 +0800
+++ /tmp/puppet-file20140314-2786-1wb4mas-0 2014-03-14 19:51:27.589533699 +0800
@@ -0,0 +1,3 @@
+-- --
+--------puppet test---------
+-- --
info: FileBucket adding {md5}d41d8cd98f00b204e9800998ecf8427e
info: /Stage[main]/Motd/File[/etc/motd]: Filebucketed /etc/motd to puppet with sum d41d8cd98f00b204e9800998ecf8427e
notice: /Stage[main]/Motd/File[/etc/motd]/content: content changed '{md5}d41d8cd98f00b204e9800998ecf8427e' to '{md5}87ea3a1af8650395038472457cc7f2b1'
notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content:
--- /etc/puppet/puppet.conf 2014-03-09 01:50:46.112175841 +0800
+++ /tmp/puppet-file20140314-2786-z4e844-0 2014-03-14 19:51:27.719533700 +0800
@@ -1,3 +1,4 @@
+### config by puppet ###
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
@@ -8,3 +9,5 @@
localconfig = $vardir/localconfig
server = puppetmaster.kisspuppet.com
certname = agent3_cert.kisspuppet.com
+ runinterval = 10
+ listen = true
info: FileBucket adding {md5}03cbe6d4def560996eeacedfaef229b4
info: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]: Filebucketed /etc/puppet/puppet.conf to puppet with sum 03cbe6d4def560996eeacedfaef229b4
notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content: content changed '{md5}03cbe6d4def560996eeacedfaef229b4' to '{md5}4f57479998961563e3306b5d0e02a678'
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 2.86 seconds
[root@agent3 ~]# cat /etc/puppet/puppet.conf
### config by puppet ###
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppetmaster.kisspuppet.com
certname = agent3_cert.kisspuppet.com
runinterval = 10
3.3、プロファイルサービスを作成する.pp
サービスリソースによるサービスリソースおよびケースの詳細については、http://kisspuppet.com/2013/11/12/service/
3.3.1、サービスを作成する.ppファイル
[root@puppetmaster manifests]# vim service.pp
class puppet::service{
service { 'puppet':
ensure => running, # puppet
hasstatus => true, # “service server_name status"
hasrestart => true, # puppet restart
enable => true, # , chkconfig puppet on
}
}
3.3.2、configを更新する.ppファイル、通知サービス再起動機能を追加
この設定が完了したら、更新後にpuppetサービスの自動再起動を要求するように構成されていることを考えてみましょう.以下の設定を行う必要があります.
[root@puppetmaster manifests]# vim config.pp
class puppet::config{
include puppet::params
file { '/etc/puppet/puppet.conf':
ensure => present,
content => template('puppet/puppet.conf.erb'),
owner => 'root',
group => 'root',
mode => '0644',
require => Class['puppet::install'],
notify => Class['puppet::service'], # puppet
}
}
3.3.3、class puppet::サービスをinitに追加する.pp中
[root@puppetmaster manifests]# vim init.pp
class puppet{
include puppet::install,puppet::config,puppet::service
}
3.3.4、テスト
テスト1:起動が設定されているかどうかを確認し、puppetサービスの状態を確認する
[root@agent1 ~]# chkconfig puppet off
[root@agent1 ~]# /etc/init.d/puppet status
puppetd is stopped
[root@agent1 ~]# puppet agent -t
notice: Ignoring --listen on onetime run
info: Caching catalog for agent1_cert.kisspuppet.com
info: Applying configuration version '1394798692'
notice: /Stage[main]/Puppet::Service/Service[puppet]/ensure: ensure changed 'stopped' to 'running'
notice: Finished catalog run in 1.42 seconds
[root@agent1 ~]# chkconfig --list | grep puppet
puppet 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@agent1 ~]# /etc/init.d/puppet status
puppetd (pid 8537) is running...
テスト2、構成が変更されて復元された後、サービスが自動的に再起動するかどうかを確認する
[root@agent1 ~]# echo "#add a line" >>/etc/puppet/puppet.conf
[root@agent1 ~]# tailf /var/log/messages
Mar 14 21:18:52 agent1 puppet-agent[10803]: Reopening log files
Mar 14 21:18:52 agent1 puppet-agent[10803]: Starting Puppet client version 2.7.25
Mar 14 21:18:53 agent1 puppet-agent[10803]: Finished catalog run in 0.27 seconds
Mar 14 21:19:05 agent1 puppet-agent[10803]: Finished catalog run in 0.35 seconds
Mar 14 21:19:16 agent1 puppet-agent[10803]: Finished catalog run in 0.71 seconds
Mar 14 21:19:27 agent1 puppet-agent[10803]: Finished catalog run in 0.30 seconds
Mar 14 21:19:38 agent1 puppet-agent[10803]: Finished catalog run in 0.37 seconds
Mar 14 21:19:50 agent1 puppet-agent[10803]: Finished catalog run in 0.42 seconds
Mar 14 21:20:01 agent1 puppet-agent[10803]: Finished catalog run in 0.28 seconds
Mar 14 21:20:12 agent1 puppet-agent[10803]: Finished catalog run in 0.36 seconds
Mar 14 21:20:23 agent1 puppet-agent[10803]: Finished catalog run in 0.27 seconds
Mar 14 21:20:34 agent1 puppet-agent[10803]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) content changed '{md5}898865b650b9af4cae1886a894ce656e' to '{md5}8c67cb8c039bb6436556b91f0c6678c4'
Mar 14 21:20:34 agent1 puppet-agent[10803]: Caught TERM; calling stop
Mar 14 21:20:36 agent1 puppet-agent[13068]: Reopening log files
Mar 14 21:20:36 agent1 puppet-agent[13068]: Starting Puppet client version 2.7.25 #
3.3.5、サービス設定reload動作
場合によっては、構成を変更した後、restartではなくサービスを再reloadさせるだけで、どのように設定すればいいのでしょうか.
[root@puppetmaster manifests]# vim config.pp
class puppet::service{
service { 'puppet':
ensure => running,
hasstatus => true,
hasrestart => true,
enable => true,
provider => init,
path => "/etc/init.d", #
restart => "/etc/init.d/sshd reload", # restart reload
start => "/etc/init.d/sshd start",
stop => "/etc/init.d/sshd stop",
}
}
テストでは、サービスが停止していないことがわかりますが、refreshです.
[root@agent1 ~]# echo "#add a line" >>/etc/puppet/puppet.conf
[root@agent1 ~]# tailf /var/log/messages
Mar 14 21:32:03 agent1 puppet-agent[13068]: Finished catalog run in 0.33 seconds
Mar 14 21:32:13 agent1 puppet-agent[13068]: Reparsing /etc/puppet/puppet.conf
Mar 14 21:32:14 agent1 puppet-agent[13068]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) content changed '{md5}898865b650b9af4cae1886a894ce656e' to '{md5}8c67cb8c039bb6436556b91f0c6678c4'
Mar 14 21:32:14 agent1 puppet-agent[13068]: (/Service[puppet]) Triggered 'refresh' from 1 events
Mar 14 21:32:14 agent1 puppet-agent[13068]: Finished catalog run in 0.32 seconds
Mar 14 21:32:25 agent1 puppet-agent[13068]: Finished catalog run in 0.25 seconds
Mar 14 21:32:35 agent1 puppet-agent[13068]: Reparsing /etc/puppet/puppet.conf
Mar 14 21:32:36 agent1 puppet-agent[13068]: Finished catalog run in 0.25 seconds
4、最適化コード
4.1、install.ppの判定文はparamsに追加する.pp中
[root@puppetmaster manifests]# vim params.pp
class puppet::params {
$puppetserver = 'puppetmaster.kisspuppet.com'
case $hostname{
agent1: {
$certname = 'agent1_cert.kisspuppet.com'
}
agent3: {
$certname = 'agent3_cert.kisspuppet.com'
}
default: {
fail("certname is not supported on ${::operatingsystem}")
}
}
case $operatingsystemmajrelease{ #
5: {
$puppet_release = '2.7.23-1.el5'
$facter_release = '1.7.3-1.el5'
}
6: {
$puppet_release = '2.7.23-1.el6'
$facter_release = '1.7.3-1.el6'
}
default: {
fail("Module puppet is not supported on ${::operatingsystem}")
}
}
}
[root@puppetmaster manifests]# vim install.pp #
class puppet::install{
include puppet::puppet_install,puppet::facter_install
}
class puppet::puppet_install{
package { 'puppet':
ensure => $puppet::params::puppet_release, #puppet “$class:: class:: ”
}
}
class puppet::facter_install{
package { 'facter':
ensure => $puppet::params::facter_release,
}
}
4.2、テスト(略)
ホームに戻る
コミュニケーション:
微信公衆番号:puppet 2014、微信検索加入可能、以下のQRコードをスキャンして加入可能
微信公衆番号
QQ交流群:296934942
Puppet_Learning
puppet基礎知識、puppet学習、puppet資料、puppetモジュール