DOCS
インテグレーションガイド / Puppet
本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。
Puppetは、ソフトウェアがどこで実行されるかに関係なく、標準的な方法でソフトウェアを配布し、稼働できるようにします。 Puppetのアプローチでは、可読性の高い共通の言語を使用して、アプリやインフラストラクチャの見え方を定義します。それを基に、データセンター全体にわたって実施したいと思う変更、共有、テストを実施できます。また、あらゆる段階で、意思決定とコンプライアンスの証明に必要な可視性とレポートを提供する機能を備えています。
PagerDutyでの設定
-
ConfigurationメニューからServices を選択します。
-
Serviceページで:
- インテグレーションのために新しいサービスを作成する場合は、 +Add New Service をクリックします。
- 既存のサービスにインテグレーションを追加する場合は、追加するサービスのName をクリックし ます。 その後、Integrations タブをクリックし、+ New Integration ボタンをクリックします。
-
Integration Typeメニューから追加したいアプリを選択して、Integration Nameを入力してください。インテグレーションのために新しいサービスを作成する場合は、一般設定で新しいサービスの nameを 入力します。 次に、Incident Settingsで、新しいサービスの Escalation Policy(エスカレーションポリシー)、Notification Urgency(通知の緊急性)、Incident Behavior(インシデントの動作)を指定します。
-
Add Service または Add Integration ボタンをクリックして、新しいインテグレーションを保存します。 すると、サービスのIntegrationsページに回送されます。
-
新しいインテグレーションのIntegration Keyをコピーします。
Puppet Master Nodeでの設定
-
pdsupport-pagerdutyモジュールをインストールします。
/opt/puppetlabs/bin/puppet module install pdsupport-pagerduty
-
必要なRubyの依存関係をインストールします。
/opt/puppetlabs/server/bin/puppetserver gem install puppet
/opt/puppetlabs/server/bin/puppetserver gem install json
/opt/puppetlabs/server/bin/puppetserver gem install redphone
-
手動でpagerduty.rbスクリプトをインストールします。 注:このステップは、Puppet内のある問題のために必要です。この問題の詳細は、ここに記載されています。
cp /etc/puppetlabs/code/environments/production/modules/pagerduty/lib/puppet/reports/pagerduty.rb /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/reports/
-
マスターノードのメインマニフェストにpagerdutyクラスを追加します:
class { 'pagerduty': }
-
マスターノードのpuppet.confファイルにpagerdutyをレポートハンドラとして追加します。
[master] reports = pagerduty
-
pluginsyncとreportがマスターノードとクライアントノード上で有効になっていなければ、有効にします。 注:Puppet 3.0.0以降、これらの設定はデフォルトでtrueです。この手順は、これらの設定のいずれかがfalseに設定されている場合にのみ必要です。 puppet.confの設定を手動で有効にすることができます:
[master] report = true pluginsync = true [agent] report = true pluginsync = true
または、マスターノードのマニフェストでpagerdutyクラス内で有効にすることもできます。
class { 'pagerduty': pagerduty_puppet_reports => 'store,http,pagerduty', pagerduty_puppet_pluginsync => 'true', }
-
Puppetserverサービスを再起動します。
sudo service puppetserver restart
-
Pagerduty.yaml.erbテンプレートをマスターのconfdir移動し、ファイルpagerduty.yamlの名前を変更します。
mv /etc/puppetlabs/code/environments/production/modules/pagerduty/templates/pagerduty.yaml.erb /etc/puppetlabs/puppet/pagerduty.yaml
-
Pagerduty.yamlファイルを編集し、上記の手順5でコピーしたIntegration Keyを挿入します。
sudo vi /etc/puppetlabs/puppet/pagerduty.yaml
--- :pagerduty_api: 'INSERT_INTEGRATION_KEY_HERE'
-
実行の失敗がPagerDutyインシデントをトリガーするかどうかをテストするには、pagerdutyモジュールのinit.ppマニフェストを編集し、 9〜13行のコメントを外します。
sudo vi /etc/puppetlabs/code/environments/production/modules/pagerduty/manifests/init.pp
if ! defined(Service[$pagerduty_puppet_service]) { service { $pagerduty_puppet_service : ensure => running, } }
-
次に、クライアントノードのいずれかでPuppetエージェントを実行します。
/opt/puppetlabs/bin/puppet agent --test
よくある質問
このインテグレーションは、どのバージョンのPuppetと互換性がありますか?
このインテグレーションは、Puppet 3.xおよび4.xでテストされています。 旧バージョンのPuppetについては、Puppet 2.xのために作成されたこのモジュールをご覧ください。
Puppetを複数のPagerDutyサービスにインテグレートできますか?
各Puppetマスターノードは、1つのPagerDutyサービスとのみインテグレートできます。 ただし、環境内にPuppetマスターノードが複数ある場合は、P各ノードを別のサービスにインテグレートできます。 pagerduty.yamlファイルのIntegration Keyを更新して、その特定のノードとインテグレートしたいサービスを指すようにしてください。
Puppetで実行が成功するとPagerDutyでインシデントが自動的に解決されますか?
はい、PagerDutyのインシデントは、実行が成功するとすぐに解決になります。
Puppetで失敗する実行が複数あった場合、PagerDutyインシデントではどう重複排除されますか?
Puppetの実行は、レポートを生成したホストに基づいて重複排除されます。
このインテグレーションの問題をトラブルシューティングするためのログはどこにありますか?
Puppetログはlogdirのマスターノードにあり、puppet.confで設定できます。 Puppet 4.xのデフォルトディレクトリは次の通りです。
/var/log/puppetlabs/puppetserver