Upload
masashi-terui
View
11.980
Download
1
Embed Size (px)
DESCRIPTION
Chef Casual Talks Sapporo Vol.1 映像→https://www.youtube.com/watch?v=zJ7pYVp5M7E&feature=youtu.be
Citation preview
「クラウド本気で始めました」なSIerの
Chef活用と実践~Chefアンチパターンとの戦い~
Chef Casual Talks Sapporo Vol.1
はじめまして!(じゃない方はこんばんは!)Masashi Terui
照井 将士 !https://www.facebook.com/marcy.terui https://twitter.com/FumblePerson ! (株)アグレックス 札幌事業所 システム部 AWS Consulting Partner ←New!! AWSチームリーダー ※ただし、現状1人チーム !Chef歴:10ヶ月くらい? !AWS Certified Solutions Architect Winner of Tuningathon #5 JAWS-UG Sapporo Chef Meetup Sapporo ← New!! !東京生まれ札幌育ち !1987年 東京都大田区に生まれる 1992年 札幌へ移住
概要的な
概要的な
• 中堅(?)SIerの地方拠点というパッとしない場所で、スピード感の求められるクラウド業界で戦うために、どんな風にChefを使っている(使おうとしている)のか
!• そこに行きつくまでの変遷 !• これから(の悩みw)
Chefを使い始めたきっかけ
Chefを使い始めたきっかけ元々インフラができる人が居なかった所に、
WEBの仕事が一気に増えた
Chefを使い始めたきっかけ元々インフラができる人が居なかった所に、
WEBの仕事が一気に増えた
↓
当時、新入社員でやる気に満ち溢れていた(?)ので、
率先してインフラに手を出した
Chefを使い始めたきっかけ元々インフラができる人が居なかった所に、
WEBの仕事が一気に増えた
↓
当時、新入社員でやる気に満ち溢れていた(?)ので、
率先してインフラに手を出した
↓
気が付いたら1人で短期間でけっこうな数のサーバ(自社DC仮想環境)立てて管理してた
Chefを使い始めたきっかけ元々インフラができる人が居なかった所に、
WEBの仕事が一気に増えた
↓
当時、新入社員でやる気に満ち溢れていた(?)ので、
率先してインフラに手を出した
↓
気が付いたら1人で短期間でけっこうな数のサーバ(自社DC仮想環境)立てて管理してた
↓
AWS事業が始まり、さらに増えるペースが上がった
Chefを使い始めたきっかけ元々インフラができる人が居なかった所に、
WEBの仕事が一気に増えた
↓
当時、新入社員でやる気に満ち溢れていた(?)ので、
率先してインフラに手を出した
↓
気が付いたら1人で短期間でけっこうな数のサーバ(自社DC仮想環境)立てて管理してた
↓
AWS事業が始まり、さらに増えるペースが上がった
↓
このままじゃ回らなくなると思い、Chefを使い始めた
そんなこんなで使ってはみたものの…
そんなこんなで使ってはみたものの…• Chefを使い始めて、構築の速度は上がったが、
イマイチ効率化された感は無かった
そんなこんなで使ってはみたものの…• Chefを使い始めて、構築の速度は上がったが、
イマイチ効率化された感は無かった
• 使う度に修正しながらで、使いまわしに不安
そんなこんなで使ってはみたものの…• Chefを使い始めて、構築の速度は上がったが、
イマイチ効率化された感は無かった
• 使う度に修正しながらで、使いまわしに不安
• AWS事業が軌道に乗り始めた→増員の話も出始めるが、スキル面もあり、なかなか進まない
そんなこんなで使ってはみたものの…• Chefを使い始めて、構築の速度は上がったが、
イマイチ効率化された感は無かった
• 使う度に修正しながらで、使いまわしに不安
• AWS事業が軌道に乗り始めた→増員の話も出始めるが、スキル面もあり、なかなか進まない
このまま増員なかったら、回らなくなる恐れ。 増員できたとして、今まで書いてきたCookbookは他人に使わせることができる状態なのだろうか…?
↓
そんなこんなで使ってはみたものの…• Chefを使い始めて、構築の速度は上がったが、
イマイチ効率化された感は無かった
• 使う度に修正しながらで、使いまわしに不安
• AWS事業が軌道に乗り始めた→増員の話も出始めるが、スキル面もあり、なかなか進まない
このまま増員なかったら、回らなくなる恐れ。 増員できたとして、今まで書いてきたCookbookは他人に使わせることができる状態なのだろうか…?
やり方を見直す必要性
↓
↓
見直すにあたって
見直すにあたって良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう5. Role内でrun_listを管理してしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう5. Role内でrun_listを管理してしまう6. 無秩序なdata bagを作ってしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう5. Role内でrun_listを管理してしまう6. 無秩序なdata bagを作ってしまう7. chef-shellを知らない、使わない
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう5. Role内でrun_listを管理してしまう6. 無秩序なdata bagを作ってしまう7. chef-shellを知らない、使わない8. LWRPを怖がってしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう5. Role内でrun_listを管理してしまう6. 無秩序なdata bagを作ってしまう7. chef-shellを知らない、使わない8. LWRPを怖がってしまう9. NIH(Not Invented Here)症候群 (外部発祥だから利用しない症候群) に陥ってしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう5. Role内でrun_listを管理してしまう6. 無秩序なdata bagを作ってしまう7. chef-shellを知らない、使わない8. LWRPを怖がってしまう9. NIH(Not Invented Here)症候群 (外部発祥だから利用しない症候群) に陥ってしまう10. 孤独なChef使いになってしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
見直すにあたって
1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう2. 会社名つきの巨大なCookbookを作ってしまう3. "Environments"を単なる論理的な「環境」以上の目的で使ってしまう4. Community Cookbookをフォークしてしまう5. Role内でrun_listを管理してしまう6. 無秩序なdata bagを作ってしまう7. chef-shellを知らない、使わない8. LWRPを怖がってしまう9. NIH(Not Invented Here)症候群 (外部発祥だから利用しない症候群) に陥ってしまう10. 孤独なChef使いになってしまう
良い指針があった。 [和訳] 初心者CHEFアンチパターン http://www.creationline.com/lab/3080
_人人人人人人人人人人_ >ほぼ全部当てはまってた<  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
どうせやるなら、 開発・運用フローも見直そう
あとテストとか、それとテストとか、ついでにテストとか
見直した
こんな感じでやってます
こんな感じでやってます
1. 個々のCookbookはBitbucketのPrivete repositoryにホスト(2014.6.11現在 Cookbook数 約30)
①
こんな感じでやってます
1. 個々のCookbookはBitbucketのPrivete repositoryにホスト(2014.6.11現在 Cookbook数 約30)
2. 変更検知、または深夜に一日一回全てのCookbookをテストkitchen-dockerでCentOS6,Amazon Linuxに対して、busser-serverspecによるテスト テスト結果はHipChatに通知(Jenkins plugin)
②
①
こんな感じでやってます
1. 個々のCookbookはBitbucketのPrivete repositoryにホスト(2014.6.11現在 Cookbook数 約30)
2. 変更検知、または深夜に一日一回全てのCookbookをテストkitchen-dockerでCentOS6,Amazon Linuxに対して、busser-serverspecによるテスト テスト結果はHipChatに通知(Jenkins plugin)
3. 各案件に紐づけてKitchen情報をホスト(git clone→knife solo cookですぐ実行・再現できる状態) 基本的にはBerksfileと、node,role,environment、LWRPを使うための簡単なラッパーを置く程度
②
①
③
こんな感じでやってます
1. 個々のCookbookはBitbucketのPrivete repositoryにホスト(2014.6.11現在 Cookbook数 約30)
2. 変更検知、または深夜に一日一回全てのCookbookをテストkitchen-dockerでCentOS6,Amazon Linuxに対して、busser-serverspecによるテスト テスト結果はHipChatに通知(Jenkins plugin)
3. 各案件に紐づけてKitchen情報をホスト(git clone→knife solo cookですぐ実行・再現できる状態) 基本的にはBerksfileと、node,role,environment、LWRPを使うための簡単なラッパーを置く程度
4. 現状、特に大したことはしていない。2のテスト結果によって褒めてくれたり、けなされたりして、一人で黙々とCookbook書いてる時のモチベーション維持とかw※別の用途ではもう少し仕事してます
②
①
③ ④
実際のユースケース
実際のユースケース
• 適用方法=knife soloChef Serverはまだ使っていない
実際のユースケース
• 適用方法=knife soloChef Serverはまだ使っていない
• どこまでやるのか?→基本、アプリケーションのデプロイ以外全て
実際のユースケース
• 適用方法=knife soloChef Serverはまだ使っていない
• どこまでやるのか?→基本、アプリケーションのデプロイ以外全て
• EC2の監視はCloudWatchにカスタムメトリクスをAWS CLIで投げる形が多く、その辺りもCookbook化している
実際のユースケース
• 適用方法=knife soloChef Serverはまだ使っていない
• どこまでやるのか?→基本、アプリケーションのデプロイ以外全て
• EC2の監視はCloudWatchにカスタムメトリクスをAWS CLIで投げる形が多く、その辺りもCookbook化している
• RDSのParameterGroup変更や、MySQLユーザ作成などもやるこの辺りは手っ取り早いからとやってしまっているが、ここでやるのが正しいかと言われると微妙…
見直して特に良かった所
見直して特に良かった所• Cookbookの開発効率が断然上がった
スケルトン書いて、テスト書いて、非同期でテストを回しながら書けると効率が全然違うまさにアプリケーション開発の感覚でサクサク書ける
見直して特に良かった所• Cookbookの開発効率が断然上がった
スケルトン書いて、テスト書いて、非同期でテストを回しながら書けると効率が全然違うまさにアプリケーション開発の感覚でサクサク書ける
• 再利用性が向上した適切な単位でCookbookを分け、別々のレポジトリにするの大事 (以前は適用順に左右されたり、一部だけ再利用しようとすると問題が起きたりしていた)※他との併用が必要ならmetadata.rbに書けば良い
見直して特に良かった所• Cookbookの開発効率が断然上がった
スケルトン書いて、テスト書いて、非同期でテストを回しながら書けると効率が全然違うまさにアプリケーション開発の感覚でサクサク書ける
• 再利用性が向上した適切な単位でCookbookを分け、別々のレポジトリにするの大事 (以前は適用順に左右されたり、一部だけ再利用しようとすると問題が起きたりしていた)※他との併用が必要ならmetadata.rbに書けば良い
• 確信を持って使えるものがあるという安心感実際に構築・運用する場面で非常に嬉しい
そして今では…
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!4. Community Cookbookをフォークしてしまう
→Clear!!
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!4. Community Cookbookをフォークしてしまう
→Clear!!5. Role内でrun_listを管理してしまう
→「Roleはバージョン管理されない一時データである」ことが問題なのでOK
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!4. Community Cookbookをフォークしてしまう
→Clear!!5. Role内でrun_listを管理してしまう
→「Roleはバージョン管理されない一時データである」ことが問題なのでOK6. 無秩序なdata bagを作ってしまう
→Clear!!
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!4. Community Cookbookをフォークしてしまう
→Clear!!5. Role内でrun_listを管理してしまう
→「Roleはバージョン管理されない一時データである」ことが問題なのでOK6. 無秩序なdata bagを作ってしまう
→Clear!!7. chef-shellを知らない、使わない
→Clear!!(自動テストの方が楽なので結局あまり使ってないけど…)
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!4. Community Cookbookをフォークしてしまう
→Clear!!5. Role内でrun_listを管理してしまう
→「Roleはバージョン管理されない一時データである」ことが問題なのでOK6. 無秩序なdata bagを作ってしまう
→Clear!!7. chef-shellを知らない、使わない
→Clear!!(自動テストの方が楽なので結局あまり使ってないけど…)8. LWRPを怖がってしまう
→Clear!!(sawanobolyさんのQiita記事きっかけで克服しました)
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!4. Community Cookbookをフォークしてしまう
→Clear!!5. Role内でrun_listを管理してしまう
→「Roleはバージョン管理されない一時データである」ことが問題なのでOK6. 無秩序なdata bagを作ってしまう
→Clear!!7. chef-shellを知らない、使わない
→Clear!!(自動テストの方が楽なので結局あまり使ってないけど…)8. LWRPを怖がってしまう
→Clear!!(sawanobolyさんのQiita記事きっかけで克服しました)9. NIH(Not Invented Here)症候群 (外部発祥だから利用しない症候群) に陥ってしまう
→Clear!!
そして今では…1. すべてのChefデータを1つの巨大なGitレポジトリに入れてしまう
→Clear!!2. 会社名つきの巨大なCookbookを作ってしまう
→Crear!!3. “Environments”を単なる論理的な「環境」以上の目的で使ってしまう
→Clear!!4. Community Cookbookをフォークしてしまう
→Clear!!5. Role内でrun_listを管理してしまう
→「Roleはバージョン管理されない一時データである」ことが問題なのでOK6. 無秩序なdata bagを作ってしまう
→Clear!!7. chef-shellを知らない、使わない
→Clear!!(自動テストの方が楽なので結局あまり使ってないけど…)8. LWRPを怖がってしまう
→Clear!!(sawanobolyさんのQiita記事きっかけで克服しました)9. NIH(Not Invented Here)症候群 (外部発祥だから利用しない症候群) に陥ってしまう
→Clear!!10. 孤独なChef使いになってしまう
→ここが最後にして最大の問題orz
これから(の悩みw)
これから(の悩みw)• だいぶ他人に使ってもらうのに良い感じになってきたと思うのだけど、
やっぱり最初の敷居が高いのか触ってもらえない→勉強会、ハンズオンの実施等、社内・社外(Meetup)絡めてやっていきたい
これから(の悩みw)• だいぶ他人に使ってもらうのに良い感じになってきたと思うのだけど、
やっぱり最初の敷居が高いのか触ってもらえない→勉強会、ハンズオンの実施等、社内・社外(Meetup)絡めてやっていきたい
• WEB以外のAWS案件(Windows Server)が増えてきている→Windows対応ってどんな感じなんでしょう?
これから(の悩みw)• だいぶ他人に使ってもらうのに良い感じになってきたと思うのだけど、
やっぱり最初の敷居が高いのか触ってもらえない→勉強会、ハンズオンの実施等、社内・社外(Meetup)絡めてやっていきたい
• WEB以外のAWS案件(Windows Server)が増えてきている→Windows対応ってどんな感じなんでしょう?
• Chef Server活用 →規模の大きい話が上がってきているのもあるが、 活用ガイドを読んでそうじゃないパターンでの活用法に魅力を感じた
これから(の悩みw)• だいぶ他人に使ってもらうのに良い感じになってきたと思うのだけど、
やっぱり最初の敷居が高いのか触ってもらえない→勉強会、ハンズオンの実施等、社内・社外(Meetup)絡めてやっていきたい
• WEB以外のAWS案件(Windows Server)が増えてきている→Windows対応ってどんな感じなんでしょう?
• Chef Server活用 →規模の大きい話が上がってきているのもあるが、 活用ガイドを読んでそうじゃないパターンでの活用法に魅力を感じた
• 個々のCookbookは十分にテストしているが、やっぱり本番適用直前にもテストしたい→AWSでCookbook単位じゃないテストの方法って、 Vagrant + Jenkins の CI を AWS でも回す(naoyaのはてなダイアリー) http://d.hatena.ne.jp/naoya/20130521/1369102714 これが今も鉄板ですか?
以上 ご質問・アドバイス等あればお願いします!