Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A method for separating policy definition and b...
Search
Gosuke Miyashita
March 02, 2021
Technology
3
270
A method for separating policy definition and behavior control by an intermediate language to achieve optimal server configuration management according to the situation
Gosuke Miyashita
March 02, 2021
Tweet
Share
More Decks by Gosuke Miyashita
See All by Gosuke Miyashita
Serverspec(をつくった自分)のそれまでとその後
mizzy
8
3.2k
Past and future of Infrastructure as Code
mizzy
0
260
Configuration Managementツールのポリシー定義用中間言語に関する考察/Considerations about an intermediate language of configuration management tools
mizzy
0
480
Infrastructure as Codeのこれまでとこれから/Infra Study Meetup #1
mizzy
29
13k
エンジニアかつ研究者としての今後のキャリアについて/My Career As An Engineer And A Researcher
mizzy
0
410
Compare OCI Runtimes
mizzy
2
1.6k
Serverspec and OSS at IEICE Society Conference 2018
mizzy
2
320
House Meetup
mizzy
7
3.3k
Rust + Ruby/mruby
mizzy
0
1.8k
Other Decks in Technology
See All in Technology
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
320
From Natural Language to K8s Operations: The MCP Architecture and Practice of kubectl-ai
appleboy
0
220
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
2
2.3k
OCIjp_Oracle AI World_Recap
shinpy
1
180
IoTLT@ストラタシスジャパン_20251021
norioikedo
0
140
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
250
混合雲環境整合異質工作流程工具運行關鍵業務 Job 的經驗分享
yaosiang
0
190
AIとともに歩んでいくデザイナーの役割の変化
lycorptech_jp
PRO
0
880
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
340
OSSで50の競合と戦うためにやったこと
yamadashy
3
990
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
PRO
1
180
頭部ふわふわ浄酔器
uyupun
0
110
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Side Projects
sachag
455
43k
A Tale of Four Properties
chriscoyier
161
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Become a Pro
speakerdeck
PRO
29
5.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
For a Future-Friendly Web
brad_frost
180
10k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Transcript
ঢ়گʹԠͨ͡࠷దͳαʔόߏཧΛ ࣮ݱ͢ΔͨΊͷϙϦγʔఆٛͱৼΔ੍͍ޚΛ தؒݴޠͰ͢Δख๏ ٶԼ ߶ี1 2/দຊ ྄հ2 2 ͘͞ΒΠϯλʔωοτגࣜձࣾ ͘͞ΒΠϯλʔωοτݚڀॴ
1 ߹ಉձࣾServerspec Operations 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 1
͡Ίʹ • ݱࡏݚڀ్தͷ༰ʹ͍͓ͭͯ͠͠·͢ • ݚڀରͰ͋Δαʔόߏཧͷഎܠ՝ҙࣝɺͦͷ՝ ʹରͯ͠ͲͷΑ͏ͳղܾํ๏Λߟ͍͑ͯΔ͔ɺʹ͍ͭͯڞ༗ ͍ͤͯͩ͘͞͞ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 2
ݚڀͷϞνϕʔγϣϯ • ϞόΠϧίϯϐϡʔςΟϯάɺΤοδίϯϐϡʔςΟϯάͷීٴ ʹΑͬͯߏཧख๏͕มΘΔͷͰͳ͍͔ • 2012ϦϦʔεͷAnsibleҎ߱͜Εͱ͍ͬͨߏཧπʔϧग़ ͖͍ͯͯͳ͍ • ߏཧπʔϧ։ൃࡶͰ͋Δ •
ͦͷࡶ͞Λղফ͠ɺࠓޙͷঢ়گͷมԽʹԠͨ͡ߏཧπʔϧ ͕ੜ·Ε͍͢Α͏ʹ͍ͨ͠ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 3
ΞδΣϯμ • αʔόߏཧͷ2େཁૉ • αʔόߏཧͷ՝ • ՝Λղܾ͢ΔͨΊͷख๏ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 4
αʔόߏཧͷ2େཁૉ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 5
αʔόߏཧ • BurgessΒ3ʹΑΔͱɺߏཧ(Configuration Management) ͱʮ༧Ίఆٛ͞ΕͨϙϦγʔͱΨΠυϥΠϯʹै͍ɺࣄલ ʹܾΊΒΕͨϏδωε্ͷతΛୡ͢ΔΑ͏ɺωοτϫʔ Ϋଓ͞ΕͨϚγϯͷৼΔ͍Λ੍ޚ͢ΔϓϩηεʯͰ͋Δ 3 Burgess, Mark,
and Alva L. Couch. 2006. “Modeling Next Generation Configuration Management Tools.” In LISA, 131–47. static.usenix.org. (PDF) 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 6
αʔόߏཧπʔϧ • αʔόߏཧΛߦ͏ͨΊͷιϑτΣΞ • දతͳͷʹCFEngine, Puppet, Chef, AnsibleͳͲ͕͋Δ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 7
αʔόߏཧπʔϧͷ2ͭͷׂ • BurgessΒͷఆ͔ٛΒɺαʔόߏཧπʔϧʹҎԼͷ2ͭ ͷׂ͕͋Δͱଊ͑ΒΕΔ • ωοτϫʔΫଓ͞ΕͨαʔόͷϙϦγʔͷఆٛ • ఆٛ͞ΕͨϙϦγʔʹجͮ͘ৼΔ͍ͷ੍ޚ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 8
ϙϦγʔఆٛ • ϙϦγʔఆٛԿΒ͔ͷݴޠʹΑͬͯߦ͏ • ϙϦγʔఆٛݴޠେผ͢Δͱ3ͭ • ಠࣗͷ؆қݴޠ • YAML/JSONͷΑ͏ͳ؆қݴޠ •
ϓϩάϥϛϯάݴޠ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 9
ϙϦγʔఆٛݴޠͷมભ • ࠷ॳಠࣗ؆қݴޠ͕࠾༻͞Ε͍ͯͨʢCFEngine, Puppet) • ChefͰRubyΛ࠾༻ • ΫϥυͷීٴͰ։ൃऀαʔόʔΠϯϑϥΛ৮ΔΑ͏ʹ ͳͬͨ •
SaltStack, AnsibleͰYAMLΛ࠾༻ • ϓϩάϥϛϯάΛߦΘͳ͍ਓʹड͚ೖΕ͍͢ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 10
ྨࣅπʔϧͷϙϦγʔఆٛݴޠͷมભ • Terraformಠࣗ؆қݴޠɺCloudFormationJSON/YAML • ͦͷޙϓϩάϥϛϯάݴޠ࠾༻ͷྲྀΕ • Pulumi, CDKͳͲ • Kubernetes͜ͷྲྀΕ
• Kubernetes with Pulumi, CDK for Kubernetes(cdk8s)ͳͲ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 11
ϙϦγʔఆٛݴޠશൠͷมભ • ಠࣗݴޠ → ϓϩάϥϛϯάݴޠ → YAML → ϓϩάϥϛϯά ݴޠɺͱ͍ͬͨมભ͕ݟ͑Δ
• ಛʹYAMLͱϓϩάϥϛϯάݴޠؒͰ༳Εಈ͖͕ݟΒΕΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 12
ৼΔ੍͍ޚ • ݴޠಉ༷ɺৼΔ੍͍ޚ༷ʑͳख๏͕͋Δ • ϓϩηεͷ࣮ߦํ๏ͰҎԼͷ3ͭʹେผ • αʔόʔ/ΤʔδΣϯτܕ • ελϯυΞϩʔϯܕ •
ΤʔδΣϯτϨεܕ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 13
ৼΔ੍͍ޚख๏ͷมભ • ݩʑɺCFEngine, Puppet, Chefαʔόʔ/ΤʔδΣϯτܕ • ͦͷޙग़͖ͯͨAnsibleΤʔδΣϯτϨεܕ • Masterless Chef/Puppetͱ͍͏ϫʔυ͕ొ4
• ͜ΕελϯυΞϩʔϯͰChef/PuppetΛར༻͢Δ͜ͱΛ ࢦ͢ 4 Masterless Chef/Puppet | Technology Radar | ThoughtWorks 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 14
αʔόߏཧ2େཁૉͷ·ͱΊ • αʔόߏཧʹʮϙϦγʔఆٛʯͱʮৼΔ੍͍ޚʯͷ 2ͭͷׂ͕͋Δ • ϙϦγʔఆٛԿΒ͔ͷݴޠͰߦ͍ɺݴޠʹมભ͕ݟΒΕ Δ • ৼΔ੍͍ޚʹมભ͕ݟΒΕΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ
15
αʔόߏཧͷ՝ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 16
αʔόߏཧπʔϧ։ൃ͕ࡶ • αʔόߏཧπʔϧOSσΟετϦϏϡʔγϣϯͷҧ͍ ΛநԽͯ͘͠ΕɺϢʔβʔʹͱͬͯར༻͍͢͠ • ͦͷ໘ɺ࣮టष͘ࡶʹͳΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 17
ৼΔ੍͍ޚ͕ॏࢹ͞Ε͍ͯͳ͍ • ϙϦγʔఆٛݴޠͱҟͳΓɺৼΔ੍͍ޚख๏ʹؔ͢Δٞ ͋·Γ׆ൃͰͳ͍ • ϞόΠϧίϯϐϡʔςΟϯάΤοδίϯϐϡʔςΟϯάͷ Α͏ͳίϯϐϡʔςΟϯάڥͷมԽͷରԠΛߟ͑ͨ ߹ɺ͜ͷลΓͷٞ׆ൃʹߦΘΕΔඞཁ͕͋ΔͷͰͳ͍ ͔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ
18
ϙϦγʔఆٛͱৼΔ੍͍ޚͷҰମԽ • طଘͷߏཧπʔϧϙϦγʔఆٛͱৼΔ੍͍ޚ͕ҰମԽ࣮ͨ͠ ʹͳ͍ͬͯΔ • ϙϦγʔఆٛݴޠAͱ͍͏πʔϧɺৼΔ੍͍ޚख๏Bͱ͍͏ πʔϧͷͷ͕ྑ͍ɺͱ͍͏߹ͰɺΈ߹ΘͤΔ͜ͱ͕Ͱ͖ͳ͍ • ࠓޙͷঢ়گͷมԽʹରͯ͠ɺͦΕʹదͨ͠ݴޠख๏͕ग़͖ͯͨ߹ Ͱɺͯ͢Ұ͔Β࣮͢Δඞཁ͕͋Δ
• ͔͠͠ɺߏཧπʔϧ࣮ࡶͳͷͰͦΕͰޮ͕ѱ͍ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 19
αʔόߏཧͷ՝·ͱΊ • αʔόߏཧπʔϧ։ൃ͕ࡶ • ৼΔ੍͍ޚख๏͕ॏࢹ͞Ε͍ͯͳ͍ • ϙϦγʔఆٛͱৼΔ੍͍ޚͷҰମԽ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 20
՝Λղܾ͢ΔͨΊͷख๏ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 21
ϙϦγʔఆٛͱৼΔ੍͍ޚͷ • ͯ͠෦తʹ࠶ར༻Ͱ͖ΔΑ͏ʹ͢Δ͜ͱͰɺ࣮ίε τΛ͑ͳ͕Β༷ʑͳঢ়گʹ࠷దͳߏཧπʔϧΛͭ͘Δ ͜ͱ͕Ͱ͖Δ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 22
Serverspec5Ͱͷख๏ 5 ٶԼ߶ีɼ܀ྛ݈ଠɼদຊ྄հɼServerspec: એݴతهड़Ͱαʔόͷઃఆঢ়ଶΛςετՄೳͳ൚༻ੑͷߴ͍ςετϑϨʔϜ ϫʔΫɼใॲཧֶձจࢽɼVol.61ɼNo.3ɼpp.677-686ɼ20203݄. 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 23
ServerspecͷߏཧπʔϧͷԠ༻ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 24
Serverspecख๏ͷ՝ • ࣮ݴޠͷAPIͰ྆ऀΛܨ͍Ͱ͓Γ࣮ݴޠ੍͕ݶ͞ΕΔ • ͦͷͨΊผݴޠͰಉ༷ͷ࣮͕ͭ͘ΒΕΔ݁Ռͱͳ͍ͬͯΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 25
தؒݴޠͰ͢Δख๏ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 26
தؒݴޠʹٻΊΒΕΔཁ݅ • ֤छϙϦγʔఆٛݴޠͱNର1ͰରԠ͢ΔͷͰ͋ΔͷͰɺத ؒݴޠࣗϙϦγʔఆٛݴޠͰ͋Δ • ϙϦγʔఆٛݴޠਓ͕ؒಡΈॻ͖͢Δ͜ͱΛఆͯ͠ઃܭ ͞ΕͨͷͰ͋Δͷʹର͠ɺதؒݴޠඞͣ͠ਓ͕ؒಡΈ ॻ͖͢Δඞཁ͕ͳ͍ • ैདྷͷϙϦγʔఆٛݴޠͱҟͳΔߟ͑ํʹج͍ͮͯઃܭ͢
Δඞཁ͕͋Δ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 27
ࠓޙͷݚڀ༧ఆ • ઌߦݚڀͷϦαʔν • ߏཧͱผͷྖҬͷϦαʔν • DSLΞεϖΫτࢦݴޠͳͲ • தؒݴޠͰ͢ΔҎ֎ͷख๏ͷݕ౼ •
ৼΔ੍͍ޚ࣮ͦͷͷ͕࣋ͭࡶ͞ͷղܾ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 28