2017-01-18 4 views
1

私は実行中の人形のマスターエージェントのセットアップがあり、現在はhieraを使ってPHPをプロビジョニングする方法を理解しようとしています。人形のヒエラの設置場所

マイPuppetfile:

forge "http://forge.puppetlabs.com" 

mod "jfryman/nginx" 
mod "puppetlabs/mysql" 
mod "mayflower/php" 
mod 'puppetlabs-vcsrepo' 
mod 'puppetlabs/ntp', '4.1.0' 
mod 'puppetlabs/stdlib' 

マイsite.pp

hiera_include('classes') 

私のModulePathが維持されているenvironment.conf、:パペットマスターの

manifest = site.pp 
modulepath = modules:site 

マイhieraの設定/etc/puppetlabs/puppet/hiera.ymlで:

--- 
:backends: 
    - yaml 
:hierarchy: 
    - "nodes/%{::trusted.certname}" 
    - "environment/%{server_facts.environment}" 
    - common 

:yaml: 
# datadir is empty here, so hiera uses its defaults: 
# - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix 
# - %CommonAppData%\PuppetLabs\code\environments\%{environment}\hieradata on Windows 
# When specifying a datadir, make sure the directory exists. 
    :datadir: 

私が理解しているところでは、すべてのサーバーに存在するはずの一般設定はcommon.yamlになります。この設定で、私はhieradata/common.yamlで、この設定で自分のノード上でNTPをインストールするために管理:

--- 
classes: 
- 'profile::base' 

ntp::servers: 
    - server 0.de.pool.ntp.org 
    - server 1.de.pool.ntp.org 
    - server 2.de.pool.ntp.org 
    - server 3.de.pool.ntp.org 

は今、私の階層はまた、すべてのノードの特定の設定がhieradata/nodes/{fqdn-of-the-node}.ymlに入るべきであると述べています。今

は、最終的には私の質問に来る:site/profile/manifests/php.pp

classes: 
    - 'profile::php' 

とマニフェスト:

class profile::php { 
    class { '::php': } 
} 

しかし、これは規定をしません

私は、この保持するファイルhieradata/nodes/myserver.example.com.ymlを持っていますphp。あなたが見たように、私は鍛造からmayflower/phpを使用します。

は今、私の二つの質問は以下のとおりです。

phpのための私のhieraファイルが正しい場所に

ですか?私はそれから私の代理人にphpをプロビジョニングするために何が欠けていますか?

答えて

2

ここには複数の問題や可能性がありますので、繰り返してみましょう。あなたが優先権を持っているので、これは意味がありません

"environment/%{server_facts.environment}" 


まず、あなたがデフォルトdatadirの使用している。しかし

/etc/puppetlabs/code/environments/%{environment}/hieradata 

を、あなたはの優先順位を持っていますそのディレクトリ環境に基づいてノードのデータを区別しますが、ディレクトリ環境に直接hieradataを配置しています。あなたは、ディレクトリ環境に基づいて優先順位をしたい場合は、その後で直接環境外であるためにあなたのhieradataディレクトリを変更します。それは何も値を追加しないと、検索時間を増加させるよう

/etc/puppetlabs/code/hieradata 

そうしないと、あなたはあなたの優先順位から、そのレベルを削除する必要があります。


第二に、あなたはあなたのsite.ppを示さなかったが、あなたはあなたのhiera_include('classes')を覚えていたのですか?それは配列classesを検索し、それらを含むことになります。これはあなたの望む通りです。実行していない場合、記述したノードのプロビジョニングの問題が発生します。


第3に、modulepathsiteがありますか? puppet.confまたはenvironment.confのいずれかに追加する必要があります。


第四に、あなたのノードのfqdncertnameと一致しない場合があります。 Puppetmasterのcertsディレクトリでノードの証明書を確認してください。


サイドノート:あなたの質問の

  • 前半は無関係な情報が多く含まれ、役立つ関連情報の多くが欠落しています。より有用な情報を提供し、より簡潔になるように質問を編集することを検討してください。
  • ntpが機能しているので、あなたのモジュールがr10kでインストールされ、環境ディレクトリが正常にインストールされたと仮定しています。また、あなたのノードのディレクトリ環境にモジュールが存在すると仮定しています。
  • ::phpで宣言にphpクラスをグローバルとして指定する本当の理由はありません。
+0

ありがとう!私はイントロを短くした。また、私はsite.ppと、modulepathを保持する私のenvironment.confを追加しました。さらに、私は自分のcertsを 'puppet cert list --all'でチェックし、certnameはそこに含まれていて、' + 'はそれが追加されたことを意味します。さらに、あなたが提案したように階層から環境部品を削除しました。私はとにかくそれを使用する予定はありませんでした。それでも、それはPHPを提供していません。 – Chrisissorry

+0

実際には、私はあなたがグローバルモジュールとしてPHPを持つことが何を意味するのか分かりません。モジュールは自分の環境パスに存在します。 – Chrisissorry

+0

@Chrisissorryグローバルな 'php'宣言コメントを明確にするために答えを更新しました。 –

関連する問題