SlideShare a Scribd company logo
PUPPET 入門
2017.4
富田 章義
目次
 Puppetとは
 Puppetの基本動作
 Puppetのインストール方法(Puppet 4+Puppet DB)
 3つの基本リソースを覚えよう
 APPENDIX 1 . Puppet Quick Install
 APPENDIX 2 . Puppet User Group
自己紹介
自己紹介
 名前 富田 章義
 所属 株式会社ネットワールド SI技術本部 統合基盤技術部 データセンタソリューション課
 Puppetとの関係
Puppet Enterpriseの有償版のプリセールスを実施
 プライベート(趣味など)
D.I.Yなど、自分で作ることが好き
マイコンを使った電子工作からウッドデッキまで何でも自作します。
PUPPETとは
Puppetとは
 よく言われているのは?
自動化
構成管理ツール
 実際は、それ以上のことが出来ます。
サーバの状態収集(Fact機能)
レポート機能(コンプライアンスやセキュリティの補助)
ほかのシステムとの連携するAPI
などなど・・・実際に使ってみると、適用範囲は非常に広い
PUPPETの基本動作
Puppetの基本動作
Puppetエージェント
Puppetマスター
① Fact
(ファクト)
② Catalog
(カタログ)
③ Report
(レポート)
④ Report output
(レポート出力)
他のシステム
Puppetの基本動作
Puppetエージェント
Puppetマスター
① Fact
(ファクト)
② Catalog
(カタログ)
③ Report
(レポート)
④ Report output
(レポート出力)
他のシステム
①エージェントの情報を収集し、Factを作ります。
収集される情報は、CPUの種類、OSの種類、バー
ジョン、メモリ情報、IPアドレスなどが含まれます。
収集した情報は、yaml形式でFactとしてPuppetマ
スターに送られます。
Puppetの基本動作
Puppetエージェント
Puppetマスター
① Fact
(ファクト)
② Catalog
(カタログ)
③ Report
(レポート)
④ Report output
(レポート出力)
他のシステム
②Factを受け取ったPuppetマスターは、マニフェ
ストやPuppet DBなどを元に、yaml形式のCatalog
を作ります。
この中で、ファンクションなどのスクリプト動作は
ここで処理され、リソースのみに集約されます。
Puppet
DB
マニフェスト
Puppetの基本動作
Puppetエージェント
Puppetマスター
① Fact
(ファクト)
② Catalog
(カタログ)
③ Report
(レポート)
④ Report output
(レポート出力)
他のシステム
③カタログに記載されたリソースを元に、必要に
応じて変更を行います。この実行結果をReportとし
てyaml形式でPuppetマスターに送ります。
Puppetの基本動作
Puppetエージェント
Puppetマスター
① Fact
(ファクト)
② Catalog
(カタログ)
③ Report
(レポート)
④ Report output
(レポート出力)
他のシステム
④他のシステムへReportの結果を基にアクション
を行うことが出来ます。
具体的には、メール通知、Syslog送信、REST APIな
どの動作を行います。
PUPPET 4のインストール方法
Puppet 4のインストール
 Puppet OSS版
 Puppet社のリポジトリからインストール
Redhat系 yumリポジトリ : https://yum.puppetlabs.com/
Debian系 aptリポジトリ :https://apt.puppetlabs.com/
(注意) OS標準のリポジトリからダウンロードを行った場合は、Puppet3以下がインストールされることが多いので、
Puppet社のリポジトリからインストールすることが望ましい
 Puppet Enterprise(10ノードまでは無料)
 パッケージ化されたアーカイブファイルからインストール
https://puppet.com/download-puppet-enterprise
 Puppet Learning VM(学習専用)
 OVAパッケージとしてPuppetがインストール済みの環境を提供
(注意)
OSはCent OSで既にインストールされています。
https://puppetlabs.com/download-learning-vm
各インストール方法は、Appendixを参照
3つの基本リソースを覚えよう
3つの基本リソースを覚えよう
 サーバの構築するときの手順を見ると「パッケージソフトのインストール」「設定ファイルの編集」「サービ
スの起動(再起動)」に分割できます。これらの、作業をPuppetで行うため、Puppetは3つの基
本的リソースが用意されています。
 packageリソース
パッケージソフトをインストールすることが出来ます。他にも、バージョンアップやアンインストールなどが
出来ます。
 fileリソース
設定ファイルを作る(編集する)ことが出来ます。他にも、ディレクトリの操作やリンクの作成、ファイ
ルの削除などを行うことが出来ます。
 serviceリソース
サービスの起動(再起動)を行うことが出来ます。他にも、サービスの停止やOSの起動時の自動
起動設定変更などを行うことが出来ます。
3つの基本リソースを覚えよう
 使い方1(基本的な設定ファイルを作る、まずは定型文として覚えてください)
以下のファイルをPuppet Master上に作ろう
/etc/puppetlabs/code/environments/production/manifests/node1.pp
node "node1" { # Puppetエージェントの名前(node1を指定)
include role::basic
}
/etc/puppetlabs/code/environments/production/modules/role/manifests/basic.pp
class role::basic{
include profile::basic
}
/etc/puppetlabs/code/environments/production/modules/profile/manifests/basic.pp
class profile::basic{
class{"ntp":}
}
3つの基本リソースを覚えよう
 使い方2(NTPの定義を行おう)
/etc/puppetlabs/code/environments/production/modules/ntp/manifests/init.
pp
class ntp{
package { 'ntpd' :
ensure => installed,
}
file { '/etc/ntp.conf':
ensure => file,
sourece =>["puppet:///modules/ntp/ntp.conf/${facts['hostname']}.conf",
"puppet:///modules/ntp/ntp.conf/common.conf"],
notify => Service['ntpd']
}
service { 'ntpd' :
ensure => running,
}
}
3つの基本リソースを覚えよう
 使い方3(ntp.confの設定)
/etc/puppetlabs/code/environments/production/modules/ntp/files/ntp.conf/c
ommon.conf
restrict default ignore
restrict 127.0.0.1
server 192.168.1.11
authentication no
 /etc/puppetlabs/code/environments/production/modules/ntp/files/ntp.conf/n
ode1.conf
restrict default ignore
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap noquery
server 127.127.1.0
fudge 127.127.1.0 stratum 9
authentication no
3つの基本リソースを覚えよう
 使い方2(NTPの定義を行おう)
/etc/puppetlabs/code/environments/production/modules/ntp/manifests/init.
pp
class ntp{
package { 'ntpd' :
ensure => installed,
}
file { '/etc/ntp.conf':
ensure => file,
sourece =>["puppet:///modules/ntp/ntp.conf/${facts['hostname']}.conf",
"puppet:///modules/ntp/ntp.conf/common.conf"],
notify => Service['ntpd']
}
service { 'ntpd' :
ensure => running,
}
}
Package リソースの指定例、package の後にインストールするyumやaptリ
ポジトリのパッケージ名を入力することで、パッケージをインストールし
ます。
※ 緑色の部分を入れ替えます。
3つの基本リソースを覚えよう
 使い方2(NTPの定義を行おう)
/etc/puppetlabs/code/environments/production/modules/ntp/manifests/init.
pp
class ntp{
package { 'ntpd' :
ensure => installed,
}
file { '/etc/ntp.conf':
ensure => file,
sourece =>["puppet:///modules/ntp/ntp.conf/${facts['hostname']}.conf",
"puppet:///modules/ntp/ntp.conf/common.conf"],
notify => Service['ntpd']
}
service { 'ntpd' :
ensure => running,
}
}
file リソースの指定例、file の後に設定ファイルを絶対パスで指定します。
設定内容は、Puppetサーバからダウンロードするようにしています。
ノードごとに設定が異なる場合は、node名の設定ファイルを利用し、ない
場合はcommonという名前のファイルが適用されます。
3つの基本リソースを覚えよう
 使い方2(NTPの定義を行おう)
/etc/puppetlabs/code/environments/production/modules/ntp/manifests/init.
pp
class ntp{
package { 'ntpd' :
ensure => installed,
}
file { '/etc/ntp.conf':
ensure => file,
sourece =>["puppet:///modules/ntp/ntp.conf/${facts['hostname']}.conf",
"puppet:///modules/ntp/ntp.conf/common.conf"],
notify => Service['ntpd']
}
service { 'ntpd' :
ensure => running,
}
}
Service リソースの指定例、serviceの後の名前のサービスを起動を行うよう
に設定しています。
緑色の部分はsystemctl で指定するサービス名を指定します。
Service リソース名と一致させること
で、設定ファイルを変更したときに自
動的にサービスを再起動する
3つの基本リソースを覚えよう
 使い方3(ntp.confの設定)
/etc/puppetlabs/code/environments/production/modules/ntp/files/ntp.conf/c
ommon.conf
restrict default ignore
restrict 127.0.0.1
server 192.168.1.11
authentication no
 /etc/puppetlabs/code/environments/production/modules/ntp/files/ntp.conf/
node1.conf
restrict default ignore
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap noquery
server 127.127.1.0
fudge 127.127.1.0 stratum 9
authentication no
NTPの設定ファイルの場所
このファイルの内容がPuppetエー
ジェントにコピーされます。
共通設定ではなく、ノード名のファイ
ルを作ることで個別の設定ファイルを
指定可能
※ NTPサーバとしての動作を追加
3つの基本リソースを覚えよう
 リソースの詳細は、以下のURLで確認できます(英語)
https://docs.puppet.com/puppet/latest/type.html
(補足)
必要なリソースがない場合は、Rubyで独自にプログラムを行いカスタムリソースとして増やすことも
出来ます。いくつかのカスタムリソースは、Puppet Forge からダウンロードして使うことが可能です。
APPENDIX 1 : PUPPET QUICK
INSTALL
1. Redhat系 OSS
1. インストール前準備(Puppet Master/Puppet Agent共通)
Puppet社のYumリポジトリの登録
# rpm -Uvh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-
7.noarch.rpm
※ elの後の数字は、OSのバージョンを指定、例ではRedhat 7.x 又はCentOS 7.xの場合
2. ホスト名の編集
デフォルトでは、ホスト名がノード名として利用されるため、事前に編集しておきます。
* ホスト名はDNSで名前解決又は、/etc/hostsに記載が必要です。
* 確認は、hostname –fで確認してください。
1. Redhat系 OSS
Puppet Master(Puppet Server)のインストール
3. yumからのインストール
# yum install puppetserver
* PATHを更新するため、シェルへ再ログインする
4. Puppet Serverの開始
# puppet resource service puppetserver ensure=running
* デフォルトでは、2GBのメモリを必要とするため、スモールスタートする場合は
[/etc/sysconfig/puppetserver]ファイルの]JAVA_ARGS=“-Xms2g –Xmx2g”]を
[JAVA_ARGS=“-Xms512m –Xmx512m”]に編集してください。
5. Puppet DBモジュールのダウンロード
# puppet module install puppetlabs-puppetdb
1. Redhat系 OSS
6. Puppet DB用 マニフェストの編集して、以下の行を追加
# vi /etc/puppetlabs/code/environment/production/manifest/site.pp
node <puppet masterのホスト名> {
class { ‘puppetdb‘ :}
class { ‘puppetdb::master::config’ : }
}
7. Puppet DBのインストール
# puppet config set server `hostname -f` --section agent
# puppet agent –t
(補足)
TCP 8140ポートがファイアウォールなどでブロックされている場合は、解除が必要です。
1. Redhat系 OSS
Puppet Agentのインストール
※ puppet masterと同じように
8. yumからのインストール
# yum install puppet-agent
* PATHを更新するため、シェルへ再ログインする
9. /etc/hostsファイルに、puppet masterのFQDN名とIPアドレスを登録する
10. puppet masterの名前を登録する
# puppet config set server <puppet masterのFQDN> --section agent
11. puppet masterに証明書のリクエストを送信する
# puppet agent –t
1. Redhat系 OSS
11. puppet master上で、Agentからの証明書リクエストを許可
# puppet cert list
<node名を確認>
# puppet cert sign <node名>
(補足)
puppet agentから強制的にリクエストを送る場合はpuppet agent上で
「puppet agent -t」と入力します。
2. Debian系 OSS
1. インストール前準備(Puppet Master/Puppet Agent共通)
Puppet社のAptリポジトリの登録
# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-wheezy.deb
# dpkg -i puppetlabs-release-pc1-wheezy.deb
※whezzyは、OSの種類に対応するリポジトリ名に変更してください
2. ホスト名の編集
デフォルトでは、ホスト名がノード名として利用されるため、事前に編集しておきます。
* ホスト名はDNSで名前解決又は、/etc/hostsに記載が必要です。
* 確認は、hostname –fで確認してください
2. Debian系 OSS
Puppet Master(Puppet Server)のインストール
3. aptからのインストール
# apt-get install puppetserver
* PATHを更新するため、シェルへ再ログインする
4. Puppet Serverの開始
# puppet resource service puppetserver ensure=running
* デフォルトでは、2GBのメモリを必要とするため、スモールスタートする場合は
[/etc/default/puppetserver]ファイルの]JAVA_ARGS="-Xms2g –Xmx2g"]を
[JAVA_ARGS="-Xms512m –Xmx512m"]に編集してください。
5. Puppet DBモジュールのダウンロード
# puppet module install puppetlabs-puppetdb
2. Debian系 OSS
6. Puppet DB用 マニフェストの編集して、以下の行を追加
# vi /etc/puppetlabs/code/environment/production/manifest/site.pp
node <puppet masterのホスト名> {
class { ‘puppetdb‘ :}
class { ‘puppetdb::master::config’ : }
}
7. Puppet DBのインストール
# puppet agent –t
(補足)
TCP 8140ポートがファイアウォールなどでブロックされている場合は、解除が必要です。
2. Debian系 OSS
Puppet Agentのインストール
※ puppet masterと同じように
8. apt-getからのインストール
# apt-get install puppet-agent
* PATHを更新するため、シェルへ再ログインする
9. /etc/hostsファイルに、puppet masterのFQDN名とIPアドレスを登録する
10. puppet masterの名前を登録する
# puppet config set server <puppet masterのFQDN> --section agent
11. puppet masterに証明書のリクエストを送信する
# puppet agent –t
2. Debian系 OSS
11. puppet master上で、Agentからの証明書リクエストを許可
# puppet cert –list
<node名を確認>
# puppet cert sign <node名>
(補足)
puppet agentから強制的にリクエストを送る場合はpuppet agent上で
「puppet agent -t」と入力します。
3. Puppet Enterprise
Puppet Enterpriseのインストールは、Redhat系、Debian系共に共通です。
1. ホスト名の編集(Puppet Master/ Agent共通)
デフォルトでは、ホスト名がノード名として利用されるため、事前に編集しておきます。
確認は、host –fで確認してください
Puppet Masterのインストール
2. http://www.puppet.com/ja の無料で試すから、イメージをダウンロードしてPuppet
Masterをインストールするサーバへファイルをコピーする
3. ファイルの解凍
# tar –xf <puppet enterpriseのインストールイメージ>
4. インストーラーの起動
# ./puppet-enterprise-installer
3. Puppet Enterprise
5. 選択肢で1を選択して、GUIモードでウィザードを実行
6. PCなどのブラウザから、https://<puppet マスターのIP>:3000に接続して、ウィザードどおりに
インストールを実施
ウィザードが終了すれば、設定終了です。
https://<puppet マスターのIP> に接続することでPEコンソールが利用できます。
3. Puppet Enterprise
Puppet Agentのインストール
7. /etc/hostsファイルに、puppet masterのFQDN名とIPアドレスを登録する
8. エージェントサーバから、以下のコマンドを入力
# curl -k https://<MASTER
HOSTNAME>:8140/packages/current/install.bash | sudo bash
9. puppet master上で、Agentからの証明書リクエストを許可
# puppet cert –list
<node名を確認>
# puppet cert sign <node名>
* GUIでも実施可能
4. Puppet Learning VM
 内容はPuppet Enterpriseと同じですが、既にPuppet マスターがインストールされたOVAファイル
で提供されています。
「3.Puppet Enterprise」の「手順7」までが終了した状態です。
※ コンソールにログインパスワードが表示されます。
(補足)
httpでLearning VMアクセスすることでPuppetを学習するためのテキスト(英語)が表示されます。
APPENDIX 2 : PUPPET USER GROUP
Puppet User Group Tokyo
Puppet User Group 関連リンク集
 PUG Compass
https://japanpuppetusergroup.connpass.com
 Meetup
https://www.meetup.com/ja-JP/meetup-group-uKfObeFg/
 Slack
http://slack.puppet.com/
※ Joinの後にJapaneseのグループに参加

More Related Content

PDF
Ansibleはじめよぉ -Infrastructure as Codeを理解-
PDF
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
PDF
Keycloak拡張入門
PDF
Ansibleで始めるインフラ構築自動化
PDF
AWS のコスト管理をちゃんとしたくてやったこと
PDF
20180914 security iotlt#1_ほんとうにあった怖い話_aws_iot編
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Ansibleはじめよぉ -Infrastructure as Codeを理解-
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
Keycloak拡張入門
Ansibleで始めるインフラ構築自動化
AWS のコスト管理をちゃんとしたくてやったこと
20180914 security iotlt#1_ほんとうにあった怖い話_aws_iot編
なぜOpenID Connectが必要となったのか、その歴史的背景
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)

What's hot (20)

PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
Redmineの情報を自分好みに見える化した話
PDF
Ansible勉強会資料
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
サーバ構築を自動化する 〜Ansible〜
PDF
[GKE & Spanner 勉強会] GKE 入門
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
PDF
忙しい人の5分で分かるDocker 2017年春Ver
PDF
Dockerを活用したリクルートグループ開発基盤の構築
PDF
Kubernetes Security with DevSecOps
PDF
開発者のためのActive Directory講座
PDF
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
PDF
IT エンジニアのための 流し読み Windows 10 - 超概要!Windows Defender シリーズ
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PDF
超簡単! Bitnami RedmineをWindowsにインストール
PDF
Spring Boot × Vue.jsでSPAを作る
PDF
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Redmineの情報を自分好みに見える化した話
Ansible勉強会資料
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
サーバ構築を自動化する 〜Ansible〜
[GKE & Spanner 勉強会] GKE 入門
20220409 AWS BLEA 開発にあたって検討したこと
忙しい人の5分で分かるDocker 2017年春Ver
Dockerを活用したリクルートグループ開発基盤の構築
Kubernetes Security with DevSecOps
開発者のためのActive Directory講座
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
分散トレーシング技術について(Open tracingやjaeger)
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
IT エンジニアのための 流し読み Windows 10 - 超概要!Windows Defender シリーズ
単なるキャッシュじゃないよ!?infinispanの紹介
超簡単! Bitnami RedmineをWindowsにインストール
Spring Boot × Vue.jsでSPAを作る
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
Ad

Similar to Puppet入門 (20)

PPTX
Puppetのススメ
PDF
Personal Cloud Automation
PDF
環境構築自動化ツールのご紹介
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
PPT
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
ZIP
クックパッドのスケーリング
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
PDF
Puppet on AWS
PDF
CloudFoundry 2 on Apache CloudStack 4.2.1
PDF
Ansible quickstart
PDF
PyQtではじめるGUIプログラミング
PDF
Distutil setuptools distribute
PDF
意外と知らない?Yumパッケージ管理
PDF
Cent osにpyhtonをインストールしてみよう
PDF
Infrastructure as CodeでReNom環境構築入門
PDF
What is an Ansible?
PDF
Windows PowerShell 2.0 の基礎知識
PDF
ラズパイ × Bluemix IoTハンズオンセミナー
ODP
コンピュータビジョン 1章
Puppetのススメ
Personal Cloud Automation
環境構築自動化ツールのご紹介
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
クックパッドのスケーリング
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
Puppet on AWS
CloudFoundry 2 on Apache CloudStack 4.2.1
Ansible quickstart
PyQtではじめるGUIプログラミング
Distutil setuptools distribute
意外と知らない?Yumパッケージ管理
Cent osにpyhtonをインストールしてみよう
Infrastructure as CodeでReNom環境構築入門
What is an Ansible?
Windows PowerShell 2.0 の基礎知識
ラズパイ × Bluemix IoTハンズオンセミナー
コンピュータビジョン 1章
Ad

Puppet入門

Editor's Notes

  • #10: Chefでいう、Ohai
  • #11: Chefでいう、Ohai
  • #12: Chefでいう、Ohai
  • #13: Chefでいう、Ohai
  • #18: 共通的な部分のため、