SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Copyright © 2016 NTT DATA Corporation
2016/7/20
NTTデータ 公共・社会基盤事業推進部 プロジェクト推進統括 技術戦略担当
横山 浩輔
Hieraテクニック
パラメータシート⇒マニフェスト生成の紹介
Web公開向け資料
2Copyright © 2016 NTT DATA Corporation
目次
1. 自己紹介
2. システム構成と自動化背景
 公共系の大規模社会インフラシステム(合計200台規模)
 台数、面数が多い
 パラメータシートの変更時に手作業での修正箇所が多い
3. パラメータシート⇒マニフェスト生成の仕組み
• Hieraとは
• パラメータシート⇒マニフェスト生成の実現方法
Puppet資材構成
ExcelマクロでHiera値(yaml)生成
• 変更への対応パターン
4. まとめ
Copyright © 2016 NTT DATA Corporation 3
1.自己紹介
4Copyright © 2016 NTT DATA Corporation
自己紹介
名前:横山 浩輔
所属:株式会社 NTTデータ
公共・社会基盤事業推進部 プロジェクト推進統括 技術戦略担当
略歴:
オープン系システム基盤の技術支援に従事
 現在、公共系の大規模社会インフラシステム(200台規模)で
のPuppetやServerspecをメインで担当(過去には法人系の大
規模HadoopシステムのPuppetも)
 過去にNagiosでのHadoopシステムの監視・運用、
Nicira(Vmware NSX前身)の動作検証等も担当
 プライベートは弓道家(参段、2年目)、最近は新型アルトワー
クス(MT、赤) 乗り回したりしてます。
Copyright © 2016 NTT DATA Corporation 5
2.システム構成と自動化背景
6Copyright © 2016 NTT DATA Corporation
担当システム規模、構成
サブシステム数:6
論理ノード(物理):100台
クラスタ構成あり
お客様用本番環境面
サブシステム数:5
論理ノード(仮想):60台
クラスタ構成なし
単体試験等実施用の環境
サブシステム数:6
論理ノード(仮想):60台
クラスタ構成あり
結合試験等実施用の環境
本番環境 開発環境B面開発環境A面本番環境
追加構築予定(5面)
⇒台数、面数が多く、Puppetでの管理に適したシステム構成
お客様 自社
7Copyright © 2016 NTT DATA Corporation
Puppet導入検討
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
手動
Puppet導入
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
手動
マニフェ
スト(本)
マニフェ
スト(A)
マニフェ
スト(B)
Puppet
設定ファ
イル(本)
設定ファ
イル(A)
設定ファ
イル(B)
手動配布
Puppetで改善
現場での作業効率と品質が向上
要改善
修正頻度や修正箇所が多いため
自動化したい
○×
××
8Copyright © 2016 NTT DATA Corporation
Hiera機能で処理と値を分離
(Hiera機能は次ページから説明)
更にパラメーターシートからマニフェストを自動生成したい
Puppet導入検討
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
手動
マニフェ
スト(本)
マニフェ
スト(A)
マニフェ
スト(B)
Puppet
値を分離する事でパラシ
から生成しやすい形に
値 処理
値+処理
× ○
○パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
Excel
マクロ
yaml(本)
yaml(A)
yaml(B)
マニフェ
スト(本)
マニフェ
スト(A)
マニフェ
スト(B)
Puppet
○
Copyright © 2016 NTT DATA Corporation 9
3.パラメータシート⇒マニフェスト生成の仕組み
10Copyright © 2016 NTT DATA Corporation
Hieraとは – Hiera機能の特徴
Hieraとは…
① Puppetマニフェストの「値」と「処理」の分離を実現可能
「値」はyamlに変数(key)と値(value)の対応を定義するだけ
② 「値」の読み込みなどはPuppetが自動で行う為、導入に伴
う処理の追加等は不要 (automatic parameter lookup)
③ ノード定義が簡潔に記述可能(hiera_include)
⇒次ページから例を示します
11Copyright © 2016 NTT DATA Corporation
Hieraなしのマニフェスト、ノード構成
Hieraとは – Hiera機能の利用例
node1
Tomcat
Xmx:2g
Xms:2g
node2
Tomcat
Xmx:4g
Xms:4g
node3
Tomcat
Xmx:8g
Xms:8g
#site.pp
node node1 {
class{ ‘tomcat’ :
xmx => “2g”,
xms => “2g”,
}
}
node node2 {
class{ ‘tomcat’ :
xmx => “4g”,
xms => “4g”,
}
}
node node3 {
class{ ‘tomcat’ :
xmx => “8g”,
xms => “8g”,
}
}
12Copyright © 2016 NTT DATA Corporation
前頁のマニフェストをHiera化
Hieraとは – Hiera機能の利用例
#common.yaml
classes:
- tomcat
#node1.yaml
tomcat::xmx:2g
tomcat::xms:2g
#site.pp
node default {
hiera_include('classes')
}
#node2.yaml
tomcat::xmx:4g
tomcat::xms:4g
#node3.yaml
tomcat::xmx:8g
tomcat::xms:8g
#site.pp
node node1 {
class{ ‘tomcat’ :
xmx => “2g”,
xms => “2g”,
}
}
node node2 {
class{ ‘tomcat’ :
xmx => “4g”,
xms => “4g”,
}
}
node node3 {
class{ ‘tomcat’ :
xmx => “8g”,
xms => “8g”,
}
}
③ノード定義が簡潔に
(hiera_include)
before after
①マニフェストの
処理と値を分離
②マニフェストへの処理追記は不要、yamlでの「値」定義のみ
#hiera()関数でマニフェストの対応箇所に明示することも可能
(automatic parameter lookup)
13Copyright © 2016 NTT DATA Corporation
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
yaml(本)
yaml(A)
yaml(B)
マニフェ
スト(本)
マニフェ
スト(A)
マニフェ
スト(B)
Puppet
②: Hiera値(yaml)生成
Excelマクロでyamlファイルを生成
Excel
マクロ
①:Puppet資材構成
自動生成したyamlを組み込む為に、Puppet資
材構成、マニフェストを変更
パラメータシート⇒マニフェスト生成の実現方法
14Copyright © 2016 NTT DATA Corporation
・yaml格納ディレクトリ構成とsite.ppの書き方
#site.pp
node default {
hiera_include('classes')
}
/etc/puppet
/hieradata/
tomcat
os
apache
postgresql
Hiera呼び出しの定義のみ記述
モジュール間の依存関係、順序性が存在する
場合にはここに定義
node2
.yaml
node1.
yaml
担当者やパラメータシートが製品(モジュー
ル)ごとに分かれるため、yaml配置ディレクト
リもモジュール単位で分割
・・・
パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成
15Copyright © 2016 NTT DATA Corporation
#node1.yaml
classes:
-tomcat
tomcat::params::conf_server_xml_flag:on
tomcat::params::conf_server_xml_http_port: 8080
tomcat::params::bin_catalina_sh_flag:on
tomcat::params::bin_catalina_sh_xms: 1g
tomcat::params::install_tomcat6: true
・モジュール内マニフェストの書き方(tomcatのinstall.pp例)
※本来、マニフェストのコーディングスタイルとしてif文は可能な限り使わずクラスを分割
する事が望ましい
class tomcat::install (
install_tomcat6 = tomcat::params::install_tomcat6,
install_tomcat8 = tomcat::params::install_tomcat8,
) {
if install_tomcat6 {
package { ‘tomcat6’ :
ensure => latest,
}
}
if install_tomcat8 {
package { ‘tomcat8’ :
ensure => latest,
}
}
}
install_tomcat6の
フラグがtrueの時の
みリソースが動作
パラメータシートの構成上、マニフェストを統合し数を減らす必要があり、
1つのマニフェスト内でノード間差分を表す方法としてif文を利用
パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成
install_tomcat8の
フラグがtrueの時の
みリソースが動作
16Copyright © 2016 NTT DATA Corporation
#node1.yaml
classes:
-tomcat
tomcat::params::conf_server_xml_flag:on
tomcat::params::conf_server_xml_http_port: 8080
tomcat::params::bin_catalina_sh_flag:on
tomcat::params::bin_catalina_sh_xms: 1g
tomcat::params::install_tomcat6: true
・モジュール内マニフェストの書き方(tomcatのconfig.ppとserver.xml.erb例示)
※本来、マニフェストのコーディングスタイルとしてif文は可能な限り使わずクラスを分割
する事が望ましい
class tomcat::config (
conf_server_xml_flag = tomcat::params::conf_server_xml_flag,
conf_server_xml_xmx = tomcat::params::conf_server_xml_xmx,
conf_server_xml_xms = tomcat::params::conf_server_xml_xms,
conf_server_xml_http_port = tomcat::params::conf_server_xml_http_port,
(中略)
) {
if conf_server_xml_flag {
file { ‘/opt/tomcat6/conf/server.xml’ :
ensure => file,
content => template(“tomcat/server.xml.erb"),
owner => “tomcat",
group => “tomcat",
mode => 600,
}
}
(中略)
}
#server.xml.erb
(中略)
<Connector port="<%= @
tomcat::params::conf_server_xml_http_port %>"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
(中略)
conf_server_xml_flag
のフラグがonの時の
みリソースが動作
パラメータ値
パラメータシートの構成上、マニフェストを統合し
数を減らす必要があり、1つのマニフェスト内で
ノード間差分を表す方法としてif文を利用
パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成
17Copyright © 2016 NTT DATA Corporation
・モジュール内マニフェストの書き方(tomcatのparams.pp例示)
※本来、paramsクラスはOS毎のデフォルト値を定義する用途で利用するのが一般的
class tomcat::params (
conf_server_xml_flag = “”,
conf_server_xml_http_port = “”,
:
bin_catalina_sh_flag = “”,
bin_catalina_sh_xms = “”,
:
install_tomcat6 = “”,
install_tomcat8 = “”,
) {}
モジュール毎にyamlから値を一括で受け取る為の変数郡を定義
(デフォルト値はyamlに自動で含まれるため、params.ppは全値が空)
#node1.yaml
classes:
-tomcat
tomcat::params::conf_server_xml_flag:on
tomcat::params::conf_server_xml_http_port: 8080
tomcat::params::bin_catalina_sh_flag:on
tomcat::params::bin_catalina_sh_xms: 1g
tomcat::params::install_tomcat6: true
パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成
18Copyright © 2016 NTT DATA Corporation
パラメータシート : tomcat
yaml生成の例
「パッケージ」シート ノード名
パッケージ名 node1 node2 node3
tomcat6 ◎ ◎ -
tomcat8 - - ◎
#node1.yaml
classes:
-tomcat
tomcat::params::conf_server_xml_flag:on
tomcat::params::conf_server_xml_http_port: 8080
:
tomcat::params::bin_catalina_sh_xms: 1g
tomcat::params::install_tomcat6: true
#node2.yaml
classes:
-tomcat
tomcat::params::conf_server_xml_flag:on
tomcat::params::conf_server_xml_http_port: 8081
:
tomcat::params::bin_catalina_sh_xms: 4g
tomcat::params::install_tomcat6: true
#node3.yaml
classes:
-tomcat
tomcat::params::install_tomcat8: true
yaml
化
パラメータシート⇒マニフェスト生成の実現方法 -②Hiera値(yaml生成)
「server.xml」シート ノード名
パラメータ名 デフォルト値 node1 node2 node3
http_port 8080 デフォルト 8081 -
-
-
-
-
-
「catalina.sh」シート ノード名
パラメータ名 デフォルト値 node1 node2 node3
-Xmx - 2g 4g -
-Xms - 2g 4g -
:
:
-XX:NewSize - 1g 1g -
19Copyright © 2016 NTT DATA Corporation
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
Excel
マクロ
yaml(本)
yaml(A)
yaml(B)
マニフェス
ト(本)
マニフェス
ト(A)
マニフェス
ト(B)
Puppet
②新規パラメータ定義の追加の場合
モジュールのマニフェスト(config.pp、params.pp、
テンプレートファイル)に変数を追加
①既存パラメータの値変更の場合
資材編集は不要(yaml差し替のみ必要)
変更への対応パターン
「catalina.sh」シート ノード名
パラメータ名 デフォルト値 node1 node2 node3
-Xmx - 2g 4g -
-Xms - 2g
4g
⇒8g
-
:
「catalina.sh」シート ノード名
パラメータ名 デフォルト値 node1 node2 node3
-Xmx - 2g 4g -
-Xms - 2g 4g -
:
-XX:NewSize - 1g 1g -
③設定ファイルなどの追加(シートの追加)
モジュールのマニフェスト(config.pp、
params.pp)にリソースと変数を追加
④PPの追加(ブックの追加)
モジュール(マニフェスト、テンプレート等)
を新規作成
どの様な場合もマクロ側の変更は不要
従来の自動化ツールと同様にモジュールを編集すればOK
Copyright © 2016 NTT DATA Corporation 20
まとめ
21Copyright © 2016 NTT DATA Corporation
パラメータシートの値を変えただけでその変更を自動で取り込める様になった
⇒手動転記によるミスが発生しなくなった
まとめ
Hiera、マクロ導入
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
手動
マニフェス
ト(本)
マニフェス
ト(A)
マニフェス
ト(B)
Puppet
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
Excel
マクロ
yaml(本)
yaml(A)
yaml(B)
マニフェス
ト(本)
マニフェス
ト(A)
マニフェス
ト(B)
Puppet
Puppet導入
パラメータ
シート(本)
パラメータ
シート(A)
パラメータ
シート(B)
手動
設定ファイ
ル(本)
設定ファイ
ル(A)
設定ファイ
ル(B)
手動配布
× ×
○×
○ ○
ミス有 ミス有
ミス有 ミス無
ミス無 ミス無
Copyright © 2011 NTT DATA Corporation
Copyright © 2016 NTT DATA Corporation

Más contenido relacionado

La actualidad más candente

NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたNginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
toshi_pp
 

La actualidad más candente (20)

ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
 
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
 
俺とHashiCorp
俺とHashiCorp俺とHashiCorp
俺とHashiCorp
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
 
Debianの修正はどのように出荷されるか
Debianの修正はどのように出荷されるかDebianの修正はどのように出荷されるか
Debianの修正はどのように出荷されるか
 
リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたNginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
 

Similar a Hieraテクニック - 効率的にパラメータシートから設定値を取り込む - 横山 浩輔、株式会社NTTデータ

Similar a Hieraテクニック - 効率的にパラメータシートから設定値を取り込む - 横山 浩輔、株式会社NTTデータ (20)

運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
 
Accel series 2016_winter
Accel series 2016_winterAccel series 2016_winter
Accel series 2016_winter
 
新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは
 
高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化
 
Accel series 2016_spring
Accel series 2016_springAccel series 2016_spring
Accel series 2016_spring
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
 
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
 
AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方
 
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
 
【HinemosWorld2016】A1-4_Hinemosを用いた大規模システム運用管理
【HinemosWorld2016】A1-4_Hinemosを用いた大規模システム運用管理【HinemosWorld2016】A1-4_Hinemosを用いた大規模システム運用管理
【HinemosWorld2016】A1-4_Hinemosを用いた大規模システム運用管理
 
実践:今日から使えるビックデータハンズオン あなたはタイタニック号で生き残れるか?知的生産性UPのための機械学習超入門
実践:今日から使えるビックデータハンズオン あなたはタイタニック号で生き残れるか?知的生産性UPのための機械学習超入門実践:今日から使えるビックデータハンズオン あなたはタイタニック号で生き残れるか?知的生産性UPのための機械学習超入門
実践:今日から使えるビックデータハンズオン あなたはタイタニック号で生き残れるか?知的生産性UPのための機械学習超入門
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までPacketbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 
統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組
 
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみたタクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
 
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automation
 

Más de Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 

Más de Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Último

Último (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

Hieraテクニック - 効率的にパラメータシートから設定値を取り込む - 横山 浩輔、株式会社NTTデータ

  • 1. Copyright © 2016 NTT DATA Corporation 2016/7/20 NTTデータ 公共・社会基盤事業推進部 プロジェクト推進統括 技術戦略担当 横山 浩輔 Hieraテクニック パラメータシート⇒マニフェスト生成の紹介 Web公開向け資料
  • 2. 2Copyright © 2016 NTT DATA Corporation 目次 1. 自己紹介 2. システム構成と自動化背景  公共系の大規模社会インフラシステム(合計200台規模)  台数、面数が多い  パラメータシートの変更時に手作業での修正箇所が多い 3. パラメータシート⇒マニフェスト生成の仕組み • Hieraとは • パラメータシート⇒マニフェスト生成の実現方法 Puppet資材構成 ExcelマクロでHiera値(yaml)生成 • 変更への対応パターン 4. まとめ
  • 3. Copyright © 2016 NTT DATA Corporation 3 1.自己紹介
  • 4. 4Copyright © 2016 NTT DATA Corporation 自己紹介 名前:横山 浩輔 所属:株式会社 NTTデータ 公共・社会基盤事業推進部 プロジェクト推進統括 技術戦略担当 略歴: オープン系システム基盤の技術支援に従事  現在、公共系の大規模社会インフラシステム(200台規模)で のPuppetやServerspecをメインで担当(過去には法人系の大 規模HadoopシステムのPuppetも)  過去にNagiosでのHadoopシステムの監視・運用、 Nicira(Vmware NSX前身)の動作検証等も担当  プライベートは弓道家(参段、2年目)、最近は新型アルトワー クス(MT、赤) 乗り回したりしてます。
  • 5. Copyright © 2016 NTT DATA Corporation 5 2.システム構成と自動化背景
  • 6. 6Copyright © 2016 NTT DATA Corporation 担当システム規模、構成 サブシステム数:6 論理ノード(物理):100台 クラスタ構成あり お客様用本番環境面 サブシステム数:5 論理ノード(仮想):60台 クラスタ構成なし 単体試験等実施用の環境 サブシステム数:6 論理ノード(仮想):60台 クラスタ構成あり 結合試験等実施用の環境 本番環境 開発環境B面開発環境A面本番環境 追加構築予定(5面) ⇒台数、面数が多く、Puppetでの管理に適したシステム構成 お客様 自社
  • 7. 7Copyright © 2016 NTT DATA Corporation Puppet導入検討 パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) 手動 Puppet導入 パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) 手動 マニフェ スト(本) マニフェ スト(A) マニフェ スト(B) Puppet 設定ファ イル(本) 設定ファ イル(A) 設定ファ イル(B) 手動配布 Puppetで改善 現場での作業効率と品質が向上 要改善 修正頻度や修正箇所が多いため 自動化したい ○× ××
  • 8. 8Copyright © 2016 NTT DATA Corporation Hiera機能で処理と値を分離 (Hiera機能は次ページから説明) 更にパラメーターシートからマニフェストを自動生成したい Puppet導入検討 パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) 手動 マニフェ スト(本) マニフェ スト(A) マニフェ スト(B) Puppet 値を分離する事でパラシ から生成しやすい形に 値 処理 値+処理 × ○ ○パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) Excel マクロ yaml(本) yaml(A) yaml(B) マニフェ スト(本) マニフェ スト(A) マニフェ スト(B) Puppet ○
  • 9. Copyright © 2016 NTT DATA Corporation 9 3.パラメータシート⇒マニフェスト生成の仕組み
  • 10. 10Copyright © 2016 NTT DATA Corporation Hieraとは – Hiera機能の特徴 Hieraとは… ① Puppetマニフェストの「値」と「処理」の分離を実現可能 「値」はyamlに変数(key)と値(value)の対応を定義するだけ ② 「値」の読み込みなどはPuppetが自動で行う為、導入に伴 う処理の追加等は不要 (automatic parameter lookup) ③ ノード定義が簡潔に記述可能(hiera_include) ⇒次ページから例を示します
  • 11. 11Copyright © 2016 NTT DATA Corporation Hieraなしのマニフェスト、ノード構成 Hieraとは – Hiera機能の利用例 node1 Tomcat Xmx:2g Xms:2g node2 Tomcat Xmx:4g Xms:4g node3 Tomcat Xmx:8g Xms:8g #site.pp node node1 { class{ ‘tomcat’ : xmx => “2g”, xms => “2g”, } } node node2 { class{ ‘tomcat’ : xmx => “4g”, xms => “4g”, } } node node3 { class{ ‘tomcat’ : xmx => “8g”, xms => “8g”, } }
  • 12. 12Copyright © 2016 NTT DATA Corporation 前頁のマニフェストをHiera化 Hieraとは – Hiera機能の利用例 #common.yaml classes: - tomcat #node1.yaml tomcat::xmx:2g tomcat::xms:2g #site.pp node default { hiera_include('classes') } #node2.yaml tomcat::xmx:4g tomcat::xms:4g #node3.yaml tomcat::xmx:8g tomcat::xms:8g #site.pp node node1 { class{ ‘tomcat’ : xmx => “2g”, xms => “2g”, } } node node2 { class{ ‘tomcat’ : xmx => “4g”, xms => “4g”, } } node node3 { class{ ‘tomcat’ : xmx => “8g”, xms => “8g”, } } ③ノード定義が簡潔に (hiera_include) before after ①マニフェストの 処理と値を分離 ②マニフェストへの処理追記は不要、yamlでの「値」定義のみ #hiera()関数でマニフェストの対応箇所に明示することも可能 (automatic parameter lookup)
  • 13. 13Copyright © 2016 NTT DATA Corporation パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) yaml(本) yaml(A) yaml(B) マニフェ スト(本) マニフェ スト(A) マニフェ スト(B) Puppet ②: Hiera値(yaml)生成 Excelマクロでyamlファイルを生成 Excel マクロ ①:Puppet資材構成 自動生成したyamlを組み込む為に、Puppet資 材構成、マニフェストを変更 パラメータシート⇒マニフェスト生成の実現方法
  • 14. 14Copyright © 2016 NTT DATA Corporation ・yaml格納ディレクトリ構成とsite.ppの書き方 #site.pp node default { hiera_include('classes') } /etc/puppet /hieradata/ tomcat os apache postgresql Hiera呼び出しの定義のみ記述 モジュール間の依存関係、順序性が存在する 場合にはここに定義 node2 .yaml node1. yaml 担当者やパラメータシートが製品(モジュー ル)ごとに分かれるため、yaml配置ディレクト リもモジュール単位で分割 ・・・ パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成
  • 15. 15Copyright © 2016 NTT DATA Corporation #node1.yaml classes: -tomcat tomcat::params::conf_server_xml_flag:on tomcat::params::conf_server_xml_http_port: 8080 tomcat::params::bin_catalina_sh_flag:on tomcat::params::bin_catalina_sh_xms: 1g tomcat::params::install_tomcat6: true ・モジュール内マニフェストの書き方(tomcatのinstall.pp例) ※本来、マニフェストのコーディングスタイルとしてif文は可能な限り使わずクラスを分割 する事が望ましい class tomcat::install ( install_tomcat6 = tomcat::params::install_tomcat6, install_tomcat8 = tomcat::params::install_tomcat8, ) { if install_tomcat6 { package { ‘tomcat6’ : ensure => latest, } } if install_tomcat8 { package { ‘tomcat8’ : ensure => latest, } } } install_tomcat6の フラグがtrueの時の みリソースが動作 パラメータシートの構成上、マニフェストを統合し数を減らす必要があり、 1つのマニフェスト内でノード間差分を表す方法としてif文を利用 パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成 install_tomcat8の フラグがtrueの時の みリソースが動作
  • 16. 16Copyright © 2016 NTT DATA Corporation #node1.yaml classes: -tomcat tomcat::params::conf_server_xml_flag:on tomcat::params::conf_server_xml_http_port: 8080 tomcat::params::bin_catalina_sh_flag:on tomcat::params::bin_catalina_sh_xms: 1g tomcat::params::install_tomcat6: true ・モジュール内マニフェストの書き方(tomcatのconfig.ppとserver.xml.erb例示) ※本来、マニフェストのコーディングスタイルとしてif文は可能な限り使わずクラスを分割 する事が望ましい class tomcat::config ( conf_server_xml_flag = tomcat::params::conf_server_xml_flag, conf_server_xml_xmx = tomcat::params::conf_server_xml_xmx, conf_server_xml_xms = tomcat::params::conf_server_xml_xms, conf_server_xml_http_port = tomcat::params::conf_server_xml_http_port, (中略) ) { if conf_server_xml_flag { file { ‘/opt/tomcat6/conf/server.xml’ : ensure => file, content => template(“tomcat/server.xml.erb"), owner => “tomcat", group => “tomcat", mode => 600, } } (中略) } #server.xml.erb (中略) <Connector port="<%= @ tomcat::params::conf_server_xml_http_port %>" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> (中略) conf_server_xml_flag のフラグがonの時の みリソースが動作 パラメータ値 パラメータシートの構成上、マニフェストを統合し 数を減らす必要があり、1つのマニフェスト内で ノード間差分を表す方法としてif文を利用 パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成
  • 17. 17Copyright © 2016 NTT DATA Corporation ・モジュール内マニフェストの書き方(tomcatのparams.pp例示) ※本来、paramsクラスはOS毎のデフォルト値を定義する用途で利用するのが一般的 class tomcat::params ( conf_server_xml_flag = “”, conf_server_xml_http_port = “”, : bin_catalina_sh_flag = “”, bin_catalina_sh_xms = “”, : install_tomcat6 = “”, install_tomcat8 = “”, ) {} モジュール毎にyamlから値を一括で受け取る為の変数郡を定義 (デフォルト値はyamlに自動で含まれるため、params.ppは全値が空) #node1.yaml classes: -tomcat tomcat::params::conf_server_xml_flag:on tomcat::params::conf_server_xml_http_port: 8080 tomcat::params::bin_catalina_sh_flag:on tomcat::params::bin_catalina_sh_xms: 1g tomcat::params::install_tomcat6: true パラメータシート⇒マニフェスト生成の実現方法 -①Puppet資材構成
  • 18. 18Copyright © 2016 NTT DATA Corporation パラメータシート : tomcat yaml生成の例 「パッケージ」シート ノード名 パッケージ名 node1 node2 node3 tomcat6 ◎ ◎ - tomcat8 - - ◎ #node1.yaml classes: -tomcat tomcat::params::conf_server_xml_flag:on tomcat::params::conf_server_xml_http_port: 8080 : tomcat::params::bin_catalina_sh_xms: 1g tomcat::params::install_tomcat6: true #node2.yaml classes: -tomcat tomcat::params::conf_server_xml_flag:on tomcat::params::conf_server_xml_http_port: 8081 : tomcat::params::bin_catalina_sh_xms: 4g tomcat::params::install_tomcat6: true #node3.yaml classes: -tomcat tomcat::params::install_tomcat8: true yaml 化 パラメータシート⇒マニフェスト生成の実現方法 -②Hiera値(yaml生成) 「server.xml」シート ノード名 パラメータ名 デフォルト値 node1 node2 node3 http_port 8080 デフォルト 8081 - - - - - - 「catalina.sh」シート ノード名 パラメータ名 デフォルト値 node1 node2 node3 -Xmx - 2g 4g - -Xms - 2g 4g - : : -XX:NewSize - 1g 1g -
  • 19. 19Copyright © 2016 NTT DATA Corporation パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) Excel マクロ yaml(本) yaml(A) yaml(B) マニフェス ト(本) マニフェス ト(A) マニフェス ト(B) Puppet ②新規パラメータ定義の追加の場合 モジュールのマニフェスト(config.pp、params.pp、 テンプレートファイル)に変数を追加 ①既存パラメータの値変更の場合 資材編集は不要(yaml差し替のみ必要) 変更への対応パターン 「catalina.sh」シート ノード名 パラメータ名 デフォルト値 node1 node2 node3 -Xmx - 2g 4g - -Xms - 2g 4g ⇒8g - : 「catalina.sh」シート ノード名 パラメータ名 デフォルト値 node1 node2 node3 -Xmx - 2g 4g - -Xms - 2g 4g - : -XX:NewSize - 1g 1g - ③設定ファイルなどの追加(シートの追加) モジュールのマニフェスト(config.pp、 params.pp)にリソースと変数を追加 ④PPの追加(ブックの追加) モジュール(マニフェスト、テンプレート等) を新規作成 どの様な場合もマクロ側の変更は不要 従来の自動化ツールと同様にモジュールを編集すればOK
  • 20. Copyright © 2016 NTT DATA Corporation 20 まとめ
  • 21. 21Copyright © 2016 NTT DATA Corporation パラメータシートの値を変えただけでその変更を自動で取り込める様になった ⇒手動転記によるミスが発生しなくなった まとめ Hiera、マクロ導入 パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) 手動 マニフェス ト(本) マニフェス ト(A) マニフェス ト(B) Puppet パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) Excel マクロ yaml(本) yaml(A) yaml(B) マニフェス ト(本) マニフェス ト(A) マニフェス ト(B) Puppet Puppet導入 パラメータ シート(本) パラメータ シート(A) パラメータ シート(B) 手動 設定ファイ ル(本) 設定ファイ ル(A) 設定ファイ ル(B) 手動配布 × × ○× ○ ○ ミス有 ミス有 ミス有 ミス無 ミス無 ミス無
  • 22. Copyright © 2011 NTT DATA Corporation Copyright © 2016 NTT DATA Corporation