Puppet Enterprise 2017.2

windows logoこのセクションでは、Windowsの機能について取り上げます。 Puppet Enterpriseを*nixノードにインストールする場合は、「Puppet Enterpriseのインストール」を参照してください。

サポート対象のWindowsバージョンについては、サポート対象のオペレーティングシステムに関するドキュメントを参照してください。

Puppet EnterpriseのWindowsノードについて:

  • Puppet masterから設定を取得し、マニフェストをローカルで適用することができます。
  • オーケストレーションコマンドに応答することができます。
  • Puppet master、コンソール、データベースサポートサーバーとして使用することはできません。

注意: Puppetを実行するには、権限を昇格(コマンドプロンプトを開く際に管理者として実行(Run as administrator)を選択)する必要があります

Windows agentのインストールには、Puppet Enterpriseパッケージ管理またはWindowsの.msiパッケージを使用できます。

Puppet Enterpriseパッケージ管理を用いたインストール

Puppet Enterpriseパッケージ管理を使用してWindows agentをインストールする場合、はじめに、Windows agentパッケージを含む適切なクラスをpe_repoに追加します。次に、このクラスをPuppet Enterprise Masterノードグループに分類します。 その後、agentからインストールスクリプトを実行し、インストールに必要なパッケージを取得します。

重要: このタスクを実行するには、PowerShell 2.0以降を使用する必要があります。

注: 以下の例で使用するインストーラスクリプトで、 <PUPPET MASTER FQDN>の部分はPuppet masterのFQDNを指します。 このFQDNは、agentをインストールするWindowsマシンから完全に解決可能でなければなりません。

  1. コンソールで[分類]の順にクリックし、PE InfrastructureグループでPE Mastersグループを選択します。

  2. [Class name]フィールドの[Classes]タブにpe_repoと入力し、表示されるクラスのリストからリポジトリクラスを選択します。

    • 64ビット(x86_64) Windows agentの場合、pe_repo::platform::windows_x86_64を選択します。

    • 32ビット(i386) Windows agentの場合、pe_repo::platform::windows_i386を選択します。

  3. Add classをクリックし、変更を保存ボタンをクリックします。

  4. Puppet masterでPuppetを実行して、新しく割り当てたクラスを設定します。

    新しいリポジトリは、Puppet masterの/opt/puppetlabs/server/data/packages/public/<PE VERSION>/<PLATFORM>/に作成されています。

  5. Windows agentで管理用のPowerShellウィンドウを開き、以下のコマンドを実行します。

    [Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; $webClient = New-Object System.Net.WebClient; $webClient.DownloadFile('https://<PUPPET MASTER FQDN>:8140/packages/current/install.ps1', 'install.ps1'); .\install.ps1
    

インストーラの実行後に以下の出力が表示された場合、agentが正しくインストールされています。

Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running'
service { 'puppet':
  ensure => 'running',
  enable => 'true',
}

インストールスクリプトへの設定パラメータの受け渡し

インストールスクリプトの末尾にパラメータを受け渡し、puppet.confに追加する設定を指定したり、csr_attributes.yamlcustom_attributesおよびextension_requestsセクションに含める設定を指定したりすることができます。 例えば以下のようなものです。

[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; $webClient = New-Object System.Net.WebClient; $webClient.DownloadFile('https://<PUPPET MASTER FQDN>:8140/packages/latest/install.ps1', 'install.ps1'); .\install.ps1 agent:certname=<certnameOtherThanFQDN> custom_attributes:challengePassword=<passwordForAutosignerScript> extension_requests:pp_role=<puppetNodeRole>

必要な数のパラメータを受け渡すことができます。 必ずsection:key=valueのパターンに従い、パラメータとパラメータの間にスペースを入れてください。

puppet.confの値のリストの完全版については、設定リファレンスを参照してください。 csr_attributes.yamlの設定の詳細については、CSR特性と証明書のエクステンションページを参照してください。

.msiパッケージを使用したインストール

PE Windowsインストーラは標準的なWindows .msiパッケージで、グラフィカルウィザードとして動作します。 インストール中にPuppet agentサービスのアカウントユーザ、アカウントパスワード、またはアカウントドメインを設定する場合、.msiインストーラパッケージを使用すると便利です。

このインストーラは昇格した権限で実行する必要があります。 Puppetのインストールには、システムの再起動は必要ありません

  1. インストーラをダウンロードして実行します。

  2. インストールダイアログで求められたら、Puppet masterサーバーのホスト名を入力します。

    Puppet master hostname selection

  3. [無署名の証明書]の順にクリックし、保留中のノード要求のリストを読み込みます。

  4. [Accept All]ボタンをクリックして、要求を承認してノードを追加します。

これで、次回Puppetを実行した時に、Puppet agentがmasterから設定を取得できるようになります。

インストール後

  • Puppet agentはWindowsサービスとして稼働します。デフォルトでは、30分ごとに設定が取得され適用されます。 以降は、通常どおりクラスをノードに割り当てることができます。詳細については、「Getting started with classification(分類をはじめる)」を参照してください。 Puppetの初回実行後にMCollectiveサービスが実行され、ノードをMCollectiveで制御できるようになります。 Puppet agentサービスとMCollectiveサービスは、サービスコントロールマネージャのUIか、コマンドラインsc.exeユーティリティのいずれかを用いて、個別に起動および停止することができます。詳細については、「Running Puppet on Windows(WindowsでPuppetを実行する)」を参照してください。

  • スタートメニューにPuppetフォルダが含まれます。このフォルダには、Puppet agentの手動実行、Facter実行、Puppetツールで使用するコマンドプロンプトの起動のショートカットが含まれています。 これらのツールの詳細については、「Windowsの基本的なタスクとコンセプト」を参照してください。

    Start Menu icons

  • Puppetが自動的にマシンの PATH環境変数に追加されます。 これにより、コマンドラインを開いて、puppetfacter、およびPuppetインストールbinディレクトリに含まれるその他のバッチファイルを実行できるようになります。 また、Puppet環境に必要な項目がシェルに追加されますが、これは特定の各コマンドの実行期間に限られます。

無人インストール

コマンドラインからPuppetを無人インストールするには、以下を実行します。

msiexec /qn /norestart /i puppet.msi

また、/l*v install.txtを指定し、ファイルインストールの進捗状況をログすることもできます。

MSIプロパティ

これらのオプションは、コマンドラインでPuppetをインストールする場合にのみ利用できます。

MSIプロパティ Puppet設定 デフォルト値
INSTALLDIR n/a バージョンによって異なる;以下を参照
PUPPET_MASTER_SERVER server puppet
PUPPET_CA_SERVER ca_server PUPPET_MASTER_SERVERの値
PUPPET_AGENT_CERTNAME certname facter fdqnの値(小文字を使用すること)
PUPPET_AGENT_ENVIRONMENT environment production
PUPPET_AGENT_STARTUP_MODE n/a Automaticスタートアップモードを参照
PUPPET_AGENT_ACCOUNT_USER n/a LocalSystemagentアカウントを参照
PUPPET_AGENT_ACCOUNT_PASSWORD n/a 値なし;agentアカウントを参照
PUPPET_AGENT_ACCOUNT_DOMAIN n/a .agentアカウントを参照

例えば以下のようなものです。

msiexec /qn /norestart /i puppet.msi PUPPET_MASTER_SERVER=puppet.acme.com

注意: environment変数の値がすでにpuppet.confに存在する場合、インストール時に指定してもその値は上書きされません。

INSTALLDIR

Puppetとその従属物がインストールされる場所。

デフォルト:

Puppetのインストールタイプ OSの種類 デフォルトのインストールパス
32ビット 32ビット C:\Program Files\Puppet Labs\Puppet
64ビット 64ビット C:\Program Files \Puppet Labs\Puppet

注意:32ビットPuppetを64ビットWindows上で実行することはサポート終了です。OSバージョンと一致するPuppetバージョンをインストールしてください。

プログラムファイルディレクトリの関連情報については、以下のプログラムディレクトリセクションを参照してください。

PUPPET_MASTER_SERVER

Puppet masterサーバーにアクセス可能なホスト名。 これにより、puppet.conf[main]セクションのserver設定の値が設定されます。

デフォルト: puppet

注意:このプロパティをデフォルトではない値に設定すると、puppet.confに既存の値がある場合、インストーラはその値を置き換えます。また、次回のアップグレード時には、コマンドラインで新たな値を設定しない限り、このプロパティについては前回の値が再利用されます。 そのため、このプロパティを使用したことがある場合は、puppet.confでserver設定を直接変更しないでください。その代わりに、インストーラを再実行し、新たな値を設定してください。

PUPPET_CA_SERVER

CA Puppet masterサーバーにアクセス可能なホスト名。複数のmasterを使用している場合は、いずれか1つのみがCAとして機能します。 これにより、puppet.conf[main]セクションのca_server設定の値が設定されます。

デフォルト: PUPPET_MASTER_SERVERプロパティの値

注意:このプロパティをデフォルトではない値に設定すると、puppet.confに既存の値がある場合、インストーラはその値を置き換えます。また、次回のアップグレード時には、コマンドラインで新たな値を設定しない限り、このプロパティについては前回の値が再利用されます。 そのため、このプロパティを使用したことがある場合は、puppet.confでca_server設定を直接変更しないでください。その代わりに、インストーラを再実行し、新たな値を設定してください。

PUPPET_AGENT_CERTNAME

ノードの証明書名、およびカタログ要求の際に使用する名前。 これにより、puppet.conf[main]セクションのcertname設定の値が設定されます。

最良の互換性を得るために、certnameの値については、小文字、数字、ピリオド、アンダースコア、ダッシュのみを使用してください。 (つまり、/\A[a-z0-9._-]+\Z/に相当します )。

デフォルト: ノードの完全修飾ドメイン名。facter fqdnで見つかります。

注意:このプロパティをデフォルトではない値に設定すると、puppet.confに既存の値がある場合、インストーラはその値を置き換えます。また、次回のアップグレード時には、コマンドラインで新たな値を設定しない限り、このプロパティについては前回の値が再利用されます。 そのため、このプロパティを使用したことがある場合は、puppet.confでcertname設定を直接変更しないでください。その代わりに、インストーラを再実行し、新たな値を設定してください。

PUPPET_AGENT_ENVIRONMENT

ノードの環境。 これにより、puppet.conf[main]セクションのenvironment設定の値が設定されます。

デフォルト: production

注意:このプロパティをデフォルトではない値に設定すると、puppet.confに既存の値がある場合、インストーラはその値を置き換えます。また、次回のアップグレード時には、コマンドラインで新たな値を設定しない限り、このプロパティについては前回の値が再利用されます。 そのため、このプロパティを使用したことがある場合は、puppet.confでenvironment設定を直接変更しないでください。その代わりに、インストーラを再実行し、新たな値を設定してください。

PUPPET_AGENT_STARTUP_MODE

Puppet agentサービスを実行するか (または実行を許可するか) どうか。 使用可能な値:

  • Automatic (デフォルト) — Puppet agentがWindowsとともに起動し、そのままバックグラウンドで実行されます。
  • Manual — Puppet agentはデフォルトでは実行されませんが、サービスコンソールで、またはコマンドラインでnet startを用いて起動させることができます。
  • Disabled — Puppet agentはインストールされますが無効化されます。サービスを開始するには、サービスコンソールでスタートアップタイプを変更する必要があります。

PUPPET_AGENT_ACCOUNT_USER

Puppet agentサービスが使用すべきWindowsユーザアカウント。 Puppet agentがUNCシェアのファイルにアクセスする必要がある場合、デフォルトのLocalServiceアカウントはそれらのネットワークリソースにアクセスできないため、この値が重要となります。

  • このユーザアカウントは、すでに存在している必要があります。ローカルユーザでもドメインユーザでもかまいません (ドメインユーザがそれまでにこのマシンにアクセスしたことがない場合でも、インストーラがドメインユーザを許可します)。
  • ユーザがまだローカル管理者になっていない場合は、インストーラがユーザをAdministratorsグループに追加します。
  • また、ユーザにLogon as Serviceが許可されます。

このプロパティは、PUPPET_AGENT_ACCOUNT_PASSWORDおよびPUPPET_AGENT_ACCOUNT_DOMAINと組み合わせる必要があります。 たとえば、agentをドメインユーザExampleCorp\bobに割り当てる場合、以下を用いてインストールします。

msiexec /qn /norestart /i puppet-<VERSION>.msi PUPPET_AGENT_ACCOUNT_DOMAIN=ExampleCorp PUPPET_AGENT_ACCOUNT_USER=bob PUPPET_AGENT_ACCOUNT_PASSWORD=password

デフォルト: LocalSystem

PUPPET_AGENT_ACCOUNT_PASSWORD

Puppet agentのユーザアカウントのパスワード。上述のユーザに関する注記を参照してください。

デフォルト: 値なし

PUPPET_AGENT_ACCOUNT_DOMAIN

Puppet agentのユーザアカウントのドメイン。上述のユーザに関する注記を参照してください。

デフォルト: .

アップグレード

詳しい手順は、「Windows agentのアップグレード」を参照してください。

アンインストール

Puppetをアンインストールするには、WindowsのAdd or Remove Programs(プログラムの追加と削除)インタフェースを使用します。または、コマンドラインでのアンインストールも可能です。

コマンドラインでアンインストールするには、インストールされているMSIのオリジナルの.msiファイルを所有しているか、ProductCodeを知っている必要があります。

msiexec /qn /norestart /x [puppet.msi|product-code]

アンインストールすると、Puppetのプログラムディレクトリ、Puppet agentサービス、および関連するすべてのレジストリキーが削除されます。 SSLキーなどのデータディレクトリはそのまま残されます。 データディレクトリを手動で削除すれば、システムからPuppetを完全に削除することができます。

インストールに関する詳細

インストールされるもの

自己完結型のインストールを実施するために、PuppetインストーラにはRuby、Gems、Facterを含むすべてのPuppetの従属要素が含まれています。 (Puppetはrubyinstaller.orgから32ビットRubyアプリケーションを再配布します。 また、Puppet 3.8.x以降では64ビットRubyも提供されます )。MCollectiveもインストールされます。

これらの前提条件はPuppet Enterpriseコンポーネントのみに用いられるもので、その他のRubyのローカルコピーには干渉しません。

プログラムディレクトリ

インストール時にオーバーライドされない限り、PEとその従属要素は、以下のデフォルトのインストールパスにインストールされます。

Puppetのインストールタイプ OSの種類 デフォルトのインストールパス
32ビット 32ビット C:\Program Files\Puppet Labs\Puppet
64ビット 64ビット C:\Program Files \Puppet Labs\Puppet

注意:32ビットPuppetを64ビットWindows上で実行することはサポート終了です。OSバージョンと一致するPuppetバージョンをインストールしてください。

PROGRAMFILES変数またはPROGRAMFILES(X86)変数を使用して、Program Filesディレクトリのロケーションを決めることができます。 どの変数を使用するかは、上の表の「デフォルトのインストールパス」を参照してください。

Puppetのプログラムディレクトリには、以下のサブディレクトリが含まれます。

ディレクトリ 説明
bin PuppetおよびFacter実行のためのスクリプト
facter Facterソース
hiera Hieraソース
mcollective MCollectiveソース
misc リソース
puppet Puppetソース
service Puppet agentをサービスとして実行するコード
sys Rubyおよびその他のツール

Agentスタートアップモード

agentはデフォルトではAutomaticスタートアップに設定されていますが、ManualまたはDisabledも使用できます。

  • Automaticでは、Puppet agentがWindowsとともに起動し、常時バックグラウンドで実行されます。masterとともにPuppetを実行するには、これを選択します。
  • Manualでは、サービスコンソールまたはコマンドラインのnet startで起動した場合にのみ、agentが起動します。一般に、これはPuppetを応用的に使用する場合に用いられます。
  • Disabledでは、agentはインストールされますが、サービスコンソールでは起動できません (サービスコンソールでスタートアップタイプを変更する場合を除く)。Puppetをインストールして指定したときだけ呼び出し、masterと同時には使用しないという場合には、この選択肢が適しています。

Agentアカウント

デフォルトでは、PuppetはagentをビルトインのSYSTEMアカウントともにインストールします。 このアカウントは、ネットワークにアクセスできません。そのため、ネットワークにアクセスする別のアカウントを指定することを推奨します。 アカウントは既存のアカウントでなければなりません。 ドメインユーザの場合、アカウントがボックスにアクセスできる必要はありません。このアカウントがローカル管理者ではなく、インストールの一環として指定された場合は、特定のノード上でこのアカウントがAdministratorsグループに追加されます。 また、インストールプロセスの一環として、アカウントにLogon as Serviceが許可されます。

たとえば、agentアカウントをドメインユーザAbcCorp\bobに設定する場合は、コマンドラインでインストーラを実行し、以下の項目を追加します:PUPPET_AGENT_ACCOUNT_DOMAIN=AbcCorp PUPPET_AGENT_ACCOUNT_USER=bob PUPPET_AGENT_ACCOUNT_PASSWORD=password

データディレクトリ

Puppet Enterpriseとそのコンポーネントの設定 (puppet.conf)、マニフェスト、生成したデータ (ログ、カタログなど)はデータディレクトリに保存されます。Puppetのデータディレクトリには、各種のコンポーネント(facter、MCollectiveなど)に対応する2つのサブディレクトリがあります。

  • etc($confdir):設定ファイル、マニフェスト、証明書、その他の重要なファイルが含まれます。
  • var ($vardir):生成したデータとログが含まれます。

昇格した権限を用いて実行する場合(Puppet本来の状態)、データディレクトリはCOMMON_APPDATAフォルダに配置されます。 このフォルダは、%PROGRAMDATA%\PuppetLabs\にあります。通常はC:\ProgramData\PuppetLabs\です。

CommonAppDataディレクトリはシステムフォルダであるため、デフォルトでは表示されません。 システムと隠しファイルおよびフォルダを表示する手順については、http://support.microsoft.com/kb/812003を参照してください。

昇格した権限を用いずにPuppetを実行する場合、現在のユーザのホームフォルダにある.puppetディレクトリがデータディレクトリとして使われます。 この結果、Puppetに予期せぬ設定が生じる可能性があります。

Back to top