Puppet
Puppetカタログ実行でシークレットにアクセスするためのKeeperシークレットマネージャーモジュール

概要
Puppetは、IT環境全体で一貫性と拡張性のある構成管理を実現する強力なインフラ自動化プラットフォームです。Infrastructure as Code (IaC)、自動プロビジョニング、DevOpsプロセスにおける継続的コンプライアンスを支援します。
このモジュールは、PuppetとKeeperシークレットマネージャーを安全に統合し、カタログ実行時にシークレットを取得できるようにします。
機能
カタログ実行時にPuppetでKeeperボルト内のシークレットを使用可能
Base64、JSON、トークン認証構成をサポート
シークレット出力をJSONレスポンス、ファイル、環境変数に対応
要件
Keeperシークレットマネージャーへのアクセス (詳細はクイックスタートガイドを参照)
Keeperのサブスクリプションでシークレットマネージャーアドオンが有効になっていること
シークレットマネージャーポリシーが有効なロールに所属していること
シークレットが共有されているKeeperシークレットマネージャーアプリケーション (アプリケーション作成手順はクイックスタートガイドを参照)
Keeperシークレットマネージャー構成が初期化されていること
PuppetモジュールはBase64、トークン、JSON形式の構成を受け付けます
システム要件
Puppet: 7.24以降 (preprocess_deferredをサポート)
Python: 3.6以降 (エージェントノード上)
対応OS: Linux、macOS、Windows
重要な構成
必須: エージェントの puppet.conf に次の設定を追加してください。
この設定により、遅延関数がカタログ適用中に実行され、事前に実行されないようになります。
シークレット表記法
フォーマット
表記は "KEEPER_NOTATION > OUTPUT_SPECIFICATION" という形式を取ります。
左側: Keeper表記法を使用
右側: 出力仕様
VARIABLE_NAME(例:Label2)env:VARIABLE_NAME(例:env:Label2)file:/path/to/file-on-agent(例:file:/opt/ssl/cert.pem)
field または custom_field
表記クエリの結果はJSON出力に配置される
表記クエリの結果はエージェント上の環境変数としてエクスポートされる
許可されていない
file
ファイルがダウンロードされ、エージェントの指定先に配置される
ファイルがダウンロードされ、エージェントの指定先に配置される
ファイルがダウンロードされ、エージェントの指定先に配置される
例
デフォルト (空)
環境変数出力 (env:)
ファイル出力 (file:)
セットアップ
手順1: モジュールのインストール
Puppet Forgeからインストールします。
手順2: Hieraの設定
Hiera構成ファイルを作成または更新します (例: data/common.yaml)。
構成の構造
基本構成 (必須)
シークレットの追加 (任意)
構成の詳細
keeper::config(必須): メインの構成コンテナauthentication(必須): 要素数2の配列[0]: 認証タイプ (base64、token、json)[1]: 認証値 (認証情報かENV:VARIABLE_NAME)
secrets(任意): シークレット表記法文字列の配列
手順3: 環境変数の設定 (任意)
AUTH_VALUE に ENV:KEEPER_CONFIG を使用する場合、Puppetマスターに環境変数を設定してください。
使用方法
モジュールを含める
実行時に遅延実行されるカスタムルックアップ関数
このモジュールには keeper_secrets_manager_puppet::lookup というカスタム関数が用意されており、Puppetの Deferred() ラッパーと組み合わせて実行時に使用する必要があります。
詳細については「関数を遅延させる」をご参照ください。
Deferred('keeper_secrets_manager_puppet::lookup', []) 関数は3種類のパラメーターオプションを受け付けます。
パラメータなし
Hiera構成からシークレットを使用
Deferred('keeper_secrets_manager_puppet::lookup', [])
配列[文字列]
パラメーターからシークレットを使用
Deferred('keeper_secrets_manager_puppet::lookup', [$secrets_array])
文字列
パラメーターからシークレットを使用
Deferred('keeper_secrets_manager_puppet::lookup', ['UID/field/login > login_name'])
詳細な例
オプション1: デフォルトルックアップ (パラメーターなし)
オプション2: 文字列配列
オプション3: 単一文字列
完全な例
トラブルシューティング
デバッグモード
Puppet構成でログレベルを設定してデバッグログを有効化します。
よくある問題
1. "preprocess_deferred = false" エラー
問題: 構成エラーでモジュールが失敗する
解決策:
puppet.confの[agent]セクションに以下を追加します。
2. "KSM script not found" エラー
問題: 初回実行で Deferred 関数が失敗する
解決策: モジュールが正しく含まれていること、Pythonのインストールが完了していることを確認します。
認証エラー
問題:
"Authentication failed"やError: access_denied, message=Unable to validate Keeper application accessが発生する解決策: 構成内のKeeper認証情報を再確認し、ネットワーク接続を確認します。
最終更新

