Cloud Assembly では、Puppet Enterprise 構成管理との統合がサポートされます。

Puppet Enterprise を外部システムとして Cloud Assembly に追加すると、デフォルトではすべてのプロジェクトで Puppet Enterprise を使用できます。特定のプロジェクトに限定することもできます。

Puppet Enterprise 統合を追加するには、Puppet のマスター名と、マスターのホスト名または IP アドレスが必要です。

エラーまたは情報に関して Puppet ログを確認する必要がある場合は、次の場所を参照してください。

説明 ログの場所
作成およびインストールに関連するイベントのログ

ログは、展開されたマシンの ` ~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/` にあります。

完全なログを確認するには、[log.txt] ファイルを参照してください。詳細な Puppet エージェント ログを確認するには、https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging を参照してください。
Puppet の削除および実行に関連するタスクのログ ログは、PE の `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/` にあります。完全なログを確認するには、[log.txt] ファイルを参照してください。

手順

  1. [インフラストラクチャ] > [接続] > [統合] の順に選択して、[統合の追加] をクリックします。
  2. [Puppet] を選択します。
  3. Puppet の設定画面で、必要な情報を入力します。
    Puppet 統合を適切に機能させるには、指定した認証情報が SSH アカウントと API アカウントの両方で有効である必要があります。また、指定した OS とアプリケーションのユーザー アカウントで、ユーザー名とパスワードが同じである必要があります。
  4. [検証] をクリックして、統合を検証します。
  5. [追加] をクリックします。

結果

Puppet はクラウド テンプレートで使用できます。

次のタスク

目的のクラウド テンプレートに Puppet コンポーネントを追加します。

  1. Cloud Assembly の [クラウド テンプレート] のクラウド テンプレート メニューで、[構成管理] の見出しの下にある [Puppet] を選択し、Puppet コンポーネントをキャンバスにドラッグします。
  2. 右側のペインで Puppet のプロパティを入力します。
    プロパティ 説明
    マスター このクラウド テンプレートで使用される Puppet プライマリ マシンの名前を入力します。
    環境 Puppet プライマリ マシンの環境を選択します。
    ロール このクラウド テンプレートで使用する Puppet のロールを選択します。
    エージェント実行間隔 このクラウド テンプレートに関連する展開済みの仮想マシンに設定の詳細を適用するために、Puppet エージェントが Puppet プライマリ マシンをポーリングする頻度。
  3. 右側のペインの [コード] タブをクリックすると、Puppet 設定プロパティの YAML コードが表示されます。

Puppet コンポーネントをクラウド テンプレートに追加するときは、installMaster プロパティを YAML ファイルに追加して、Puppet インストール マスター(コンパイル マスターとも呼ばれる)を参照できます。このプロパティの値には、Puppet コンパイル マスターの IP アドレスまたはホスト名を指定できます。このプロパティを使用すると、展開された Puppet 仮想マシンの拡張機能にアクセスできるとともに、追加の Day 2 アクションもサポートされます。

  Puppet_Agent:
    type: Cloud.Puppet
    properties:
      account: PEIntegrationAccount
      environment: production
      role: 'role::linux_webserver'
      host: '${CentOS-Puppet.*}'
      username: root
      password: password123!
      installMaster: my-pe-compile-master.example.com
      agentConfiguration:
        certName: '${CentOS-Puppet.address}'
      osType: linux
      count: 1
注: ここで定義するユーザーは root ですが、sudoers リストに含まれている任意のユーザーを使用してクラウド テンプレートを構成することができます。

場合によっては、デフォルトで、vRealize Automation から Puppet 仮想マシンに一部のマシン関連情報が実際の情報として渡されることがあります。独自の情報は、Windows マシンではサポートされていません。Linux マシンでは、デフォルトで一部の情報が渡され、ユーザーはカスタム プロパティを使用して追加情報を渡すことができます。

Linux で Puppet マシンに渡される情報には、いくつかの制限があります。ホスト リソースおよび Puppet エージェントに関するカスタム プロパティは、Puppet 仮想マシンに渡されます。ネットワーク リソースに関するカスタム プロパティは、仮想マシンに渡されません。渡されるアイテムには、単純なプロパティやブール値のプロパティのほか、カスタム名のプロパティ、配列を使用してネストされたマップなどの複雑な型のプロパティが含まれます。

次の例は、ホスト リソースに関するさまざまなカスタム リソースを呼び出す方法を示しています。

resources:
  Puppet-Host:
    type: Cloud.AWS.EC2.Instance
    properties:
      customer_specified_property_on_ec2_resource: "property"
      customer_specified_property_on_network_resource_that_should_also_be_a_fact_and_is_boolean: true
      CustomerNameStuff: "zone A"
      try_map:
      key: value
      keytwo: value
      nested_array:
        - one
        - two
        - true
      try_array:
        - one
        - two
        -three:
           inner_key: value

Puppet パージ コマンドでエラーが発生すると、ほとんどの場合、vRealize Automation はノードのパージ エラーを無視し、ノードの削除に進みます。特定のノードの証明書が見つからない場合でも、vRealize Automation は削除に進みます。何らかの理由で vRealize Automation がノードの削除を実行できない場合は、[展開] 画面の [アクション] メニューで [削除] をクリックしてダイアログを開き、ノードの削除を実行できます。クラウド テンプレートから Puppet 統合を削除した後、そのテンプレートを展開に適用すると、同様のワークフローが実行されます。このワークフローでは、前述のように処理されるノードのパージ操作がトリガされます。

Puppet Enterprise との統合には、パブリック IP アドレスが必要です。Puppet Enterprise マシンにパブリック IP アドレスが構成されていない場合は、最初の NIC の IP アドレスが使用されます。

Puppet によってプロビジョニングされ、vSphere マシン上で実行されるマシンの NIC に複数の IP アドレスがある場合は、クラウド テンプレートで primaryAddress YAML プロパティを使用して、接続に使用する IP アドレスを指定できます。NIC に primaryAddress プロパティを割り当てると、その NIC の IP アドレスが Puppet によって使用されます。プライマリとして指定できるのは、1 つの NIC のみです。次の YAML スニペットで、primaryAddress プロパティの使用方法の例を確認してください。

BaseVM:
  type: Cloud.vSphere.Machine
  properties:
   image: photon
   count: 2
   customizationSpec: Linux
   cpuCount: 1
   totalMemoryMB: 1024
   networks:
    - network: '${resource.dev.id}'
     deviceIndex: 0
     primaryAddress: true
     assignment: static
    - network: '${resource.prod.id}'
     deviceIndex: 1
     assignment: static

仮想マシンのいずれの NIC にも primaryAddress プロパティが設定されていない場合、クラウド テンプレートのロジックはデフォルトで、IP アドレス選択の現在の動作に従います。

Sudo 権限を持つ非 root ユーザーに対して Puppet 統合を設定する場合は、次のコマンドを実行する許可をユーザーに与える必要があります。
  • 新しい Puppet ファクト ディレクトリおよびファイルを作成する許可をユーザーに与える必要があります。
    sudo mkdir -p /etc/puppetlabs/facter/facts.d 
           sudo tee /etc/puppetlabs/facter/facts.d/puppet_cloudassembly_facts.json 
    
  • Puppet を実行する許可をユーザーに与える必要があります。
    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=stopped
           sudo /opt/puppetlabs/bin/puppet agent --test --color=false --detailed-exitcode
  • csr_attributes.yaml および CSR pem などの証明書署名リクエスト (CSR) ファイルを削除する許可をユーザーに与える必要があります。
     sudo rm /etc/puppetlabs/puppet/csr_attributes.yaml
           sudo rm -f /etc/puppetlabs/puppet/ssl/certificate_requests/*