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
PackerとAnsibleでコンパクトに始めるInfrastructure as Code
Search
co-sche
February 10, 2017
Technology
0
260
PackerとAnsibleでコンパクトに始めるInfrastructure as Code
AMIの手運用に潜む罠と、Packer・Ansibleのレイヤー感のお話
co-sche
February 10, 2017
Tweet
Share
More Decks by co-sche
See All by co-sche
DynamoDBとBloomFilterのムフフなカンケイ
co_sche
0
1.5k
Other Decks in Technology
See All in Technology
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
620
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
450
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
OpenShiftでllm-dを動かそう!
jpishikawa
0
130
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.5k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
380
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
AI駆動開発を事業のコアに置く
tasukuonizawa
1
270
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
93
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
GraphQLとの向き合い方2022年版
quramy
50
14k
Optimizing for Happiness
mojombo
379
71k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
RailsConf 2023
tenderlove
30
1.3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Transcript
PackerͱAnsibleͰ ίϯύΫτʹ࢝ΊΔ Infrastructure as Code
ࣗݾհ • ฏদ ߛయ (ͻΒ·ͭ ͜͏͚͢) • ϓϩάϥϚʔ / ΞʔΩςΫτ
/ ΫϥυΠϯϑϥ • 33ɺ185ɺ74ɺ140ɺ100 • ͓͔͞ͳͨΒΕͳ͍
AWS͔ͭͬͯ·͔͢ʁ ࠓճɺAWSʹԙ͍ͯͷϚγʔϯΠϝʔδͰ ͋ΔɺAMIͷཧʹϑΥʔΧε͓ͨ͠Ͱ ͢ɻ
͘͡ 1. ΠϛϡʔλϒϧΠϯϑϥετϥΫνϟ 2. AMIӡ༻͋Δ͋Δ 3. Ansible 4. Packer 5.
Packer + Ansible
Πϛϡʔλϒϧ ΠϯϑϥετϥΫνϟ
ΠϛϡʔλϒϧΠϯϑϥετ ϥΫνϟ • ෆมͳΠϯϑϥ • ࡞ͬͨΒߏɾઃఆͳͲͷมߋΛՃ͑ͳ͍ • มߋ͕ඞཁͳ߹ • ৽͍͠ͷΛ࡞ͬͯ
• ೖΕସ͑ͯ • ݹ͍ͷΛࣺͯΔ • ͍ࣺͯ
ΞϓϦέʔγϣϯαʔό Πϛϡʔλϒϧ • αʔόΠϯελϯεΛ͍ࣺͯΔ • ΫϥυΠϯϑϥͰͷΦʔτεέʔϦϯά ͳͲʹݟΒΕΔ͍ࣺͯͬΓɺAMIͳͲ ͷϚγϯΠϝʔδ͕͋Δ͔Βͦ͜ͳͤΔۀ
AMIͷӡ༻
AMIͷӡ༻ Πϯϑϥ୲ʮLDAPͱ͔ೖΕͨɺϕʔεͷAMI࡞ͬͨͰʔʯ ৴αʔό୲ʮScalaೖΕͳͳʯ ͚ࣾཧ໘୲ʮஸ৴αʔόͷ͕ScalaೖͬͯΔͬͨ͠Ζʯ Τϥʔϩάαʔό୲ʮΞϓϦNodeJS͚Ͳɺࢹͱ͔ͷઃఆΖΖ ೖͬͯΔ͠ɺ৴αʔόͷͭͬͨΖʯ ཧళ͚ཧ໘୲ʮNodeJSαʔόΛϕʔεAMI͔ΒͪΌΜͱͭ͘Ζʯ ϝσΟΞ͚ཧ໘୲ʮNodeJS͠ɺཧళཧ໘ͷίϐʔ͢Δ͔ʯ
AMIͷӡ༻ • ࣮ࡍҰͷίϐʔˍՃηοτΞοϓͰࡁ·ͳͯ͘ɺ 1ίϯϙʔωϯτʹ͖ͭෳճͷAMI࡞͕ߦΘΕΔ • ֤୲͕ࢥ͍ࢥ͍ͷࣗݾॴ༗AMIΛબͼɺࢥ͍ࢥ͍ͷ ՃηοτΞοϓΛߦ͍ɺ৽ͨͳࣗݾॴ༗AMIΛੜͯ͠ ͍Δ
AMIͷӡ༻ • ͜ͷӡ༻Λ1΄Ͳଓ͚͖ͯͨ • ౿ΜͰ͠·ͬͨɺए͍ۙ͘͠কདྷ౿ΉͰ ͋Ζ͏ཕݪͱͳΔ͕େ͖͚ͯ͘2 छྨ
AMIͷ
AMIͷ AMI͕ࢬ͔ΕͱΛ܁Γฦ͠ɺηΩϡϦ ςΟΞοϓσʔτͳͲͷڞ௨Ͱඞཁͳϝϯς φϯεͷࡍʹͷAMIΛ୳͠ճΒͳ͚Ε ͳΒͳ͘ͳΔ
AMIͷ ྫ͑… Πϯϑϥ୲ʮࢹΛStackDriverʹ͠Αʯ ʮJavaೖͬͯΔͭʹJMXͷΤʔδΣϯτೖΕͳͳʯ ʮҰݸҰݸݟͯճΔΜ͔…ʯ ʮ֤ίϯϙʔωϯτͷ࠷৽ͷAMIͲΕ…ʯ ʮͳΜ͜ΕɺJavaೖͬͯΔ͚Ͳϓϩηε্͕ͬͯͳ͍Μ͚(ࠔ)ʯ ʮ͏͑͑Θɻ֤୲͔ͬ͠ΓೖΕͱ͍ͯʔʯ
AMIͷ • ཧෆೳ • ͕ɺՃͷηοτΞοϓͳΒ·ͩྗٕͰͳ Μͱ͔ͳΔ
ൿͷλϨ
ൿͷλϨ ܧ͗͠ܧ͗͠ͰηοτΞοϓΛߦ͓ͬͯ Γɺ࡞ۀΛͨ͠ຊਓ͔ͦ͠ͷతɾ༰ɾ֬ ೝࣄ߲ΛΒͳ͍
ൿͷλϨ ྫ͑… AWS ʮ͋Μͨͱ͜ͷͬͱΔAmazon Linux ͷόʔδϣϯɺαϙʔτΕΔ͔ΒೖΕସ͑ʔ ɻʯ
ൿͷλϨ બࢶ • ৽͍͠όʔδϣϯͷAmazon LinuxͷϕʔεAMIʹηοτ Ξοϓ͢͠ • ԿೖΕΕࠓ·Ͱ௨Γಈ͘Μ͚ͬ • ࠓͷAMIͷAmazon
LinuxͷόʔδϣϯΛ্͛Δ • Կͷಈ࡞Λ֬ೝ͢Ε͑͑Μ͚ͬ
ൿͷλϨ ֤୲ʮʮʮ ʘ(^o^)ʗ ʯʯʯ
ল (ݴ͍༁) • զʑͷϓϩδΣΫτͰɺAWSͷར༻ͦͷͷ ͕ٕज़తઓͩͬͨ • AMIͱͬͱ͚ɺಉ͡Πϯελϯε͍͘ΒͰ࡞ ΕΔ͡ΌΜʂͰຫ৺ͯ͠ɺAMIͦͷͷͷཧΛ ૄ͔ʹͯͨ͠
AMIΠϛϡʔλϒϧʹ • ͱ͍ͬͯɺAMIͦͦΠϛϡʔλϒϧͩ • ӡ༻͕Πϛϡʔλϒϧ͡Όͳ͍ (͍ࣺͯͰ͖ͳ͍) • AMI͍ࣺͯͰ͖ΔΑ͏ʹ • AMIͷηοτΞοϓɺίʔυͱͯ͠දݱͯ͠όʔ
δϣϯཧ
Ansible
AMIηοτΞοϓͷྲྀΕΛ͓ ͞Β͍ 1. ݩʹͳΔAMI͔ΒΠϯελϯεΛىಈ 2. ىಈͨ͠ΠϯελϯεʹsshͰೖͬͯɺͳΜ͔ΜΠϯ ετʔϧɾϑΝΠϧͷஔɾઃఆ 3. ΠϯελϯεͷεφοϓγϣοτΛࡱΔ 4.
εφοϓγϣοτΛAMIͱͯ͠ొ 5. ΠϯελϯεΛআ
AMIηοτΞοϓͷྲྀΕΛ͓ ͞Β͍ 1. ݩʹͳΔAMI͔ΒΠϯελϯεΛىಈ 2. ىಈͨ͠ΠϯελϯεʹsshͰೖͬͯɺͳΜ͔ΜΠϯ ετʔϧɾϑΝΠϧͷஔɾઃఆ 3. ΠϯελϯεͷεφοϓγϣοτΛࡱΔ 4.
εφοϓγϣοτΛAMIͱͯ͠ొ 5. ΠϯελϯεΛআ
αʔόߏཧ • 2ͰͬͯΔ͜ͱࢥ͍͖ͬΓαʔόͷߏཧ ͳͷͰɺͦΕʹదͨ͠ιϦϡʔγϣϯΛ͏ • લͷϓϩδΣΫτ(ΦϯϓϨཧαʔό)ͰChef Λ͚ͬͯͨͲɺྲྀߦΓʹྲྀ͞Ε͍͢ࢲ AnsibleΛબ
None
Ansible • ༷ʑͳOSʹରԠͨ͠ɺߏཧιϦϡʔγϣϯ • ղઆෆཁ • σΟϨΫτϦϨΠΞτͳͲɺެࣜϕετϓϥΫςΟεʹ ै͏ • શͯͷηοτΞοϓࣗݾॴ༗Ͱͳ͘Amazonॴ༗ͷૉͷ
Amazon Linuxʹߦ͏ͷͰɺႈੑ͋·Γҙࣝ͠ͳ͍Ͱ͍͍
ιʔεެ։
Packer
AMIηοτΞοϓͷྲྀΕΛ͓ ͞Β͍ 1. ݩʹͳΔAMI͔ΒΠϯελϯεΛىಈ 2. ىಈͨ͠ΠϯελϯεʹsshͰೖͬͯɺͳΜ͔ΜΠϯ ετʔϧɾϑΝΠϧͷஔɾઃఆ 3. ΠϯελϯεͷεφοϓγϣοτΛࡱΔ 4.
εφοϓγϣοτΛAMIͱͯ͠ొ 5. ΠϯελϯεΛআ
AMIηοτΞοϓͷྲྀΕΛ͓ ͞Β͍ 1. ݩʹͳΔAMI͔ΒΠϯελϯεΛىಈ 2. ىಈͨ͠ΠϯελϯεʹsshͰೖͬͯɺͳΜ͔ΜΠϯ ετʔϧɾϑΝΠϧͷஔɾઃఆ 3. ΠϯελϯεͷεφοϓγϣοτΛࡱΔ 4.
εφοϓγϣοτΛAMIͱͯ͠ొ 5. ΠϯελϯεΛআ
AMIͷऔΓճ͠ AWSͷϚωίϯ͔ΒϙνϙνΔͷγϯυ ͍
Packer • ༷ʑͳԾԽϓϥοτϑΥʔϜʹରԠͨ͠ɺ ϚγϯΠϝʔδੜιϦϡʔγϣϯ • ϚγϯΠϝʔδʹͳΜ͔ͯ͠৽͍͠ϚγϯΠ ϝʔδΛੜ͢Δ͜ͱʹಛԽ • 1,3,4,5Λ·ͱΊͯ໘Έͯ͘ΕΔ
Packer • 2ʹؔͯ͠PackerͰ·͔ͳ͑Δ͕ɺ୯ମ ͰshεΫϦϓτͷ࣮ߦͷΈՄೳ • Provisionerͱͯ͠AnsibleΛબͰ͖Δɻ • ઃఆ؆୯
ιʔεެ։
Packer + Ansible
Packer + Ansible • Ұɺҙ͖͢ϙΠϯτ • ௨ৗɺpacker build packer.json Ͱ͓̺
• ෆ༻ҙͳΞοϓσʔτΛ͙ʹɺyumͷϦϙ δτϦόʔδϣϯΛݻఆ͠ͳ͚ΕͳΒͳ͍
Packer + Ansible • yumϦϙδτϦͷόʔδϣϯΛݻఆ͢Δʹɺ Ұඞཁ • AMIͷ໊લ͔ΒόʔδϣϯΛऔΓग़ͯ͠มͱ ͯ͠Ҿ͖ճ͠ɺ/etc/cloud/cloud.cfgʹຒΊࠐΉ
ιʔεެ։
AMI࡞ʹඞཁͳखॱ 4063$&@".*BNJYYYYYYYYa 1-":#00,BBBBBBBa CVJMETI Ҏ্
݁Ռ • AMI࡞ͷશͯͷηοτΞοϓ༰Λίʔυʹམ ͱ͢͜ͱͰɺൿͷλϨԽΛࢭΊΒΕͨ • ↑ͷηοτΞοϓ༰ΛৗʹૉͷAmazon Linux AMIʹྲྀ͢Α͏ϧʔϧ͚͢Δ͜ͱͰɺAMIͷ ԽΛࢭΊΒΕͨ
·ͱΊ • AMIͷཧΛखӡ༻Ͱߦ͏͜ͱͦͷͷ͕ কདྷͷཕʹͳΔ • AMIͷԽɺൿͷλϨԽͱ͍͏ཕϙΠ ϯτΛɺPackerͱAnsibleͰճආ͠Α͏
Have a nice Machine Image Life!
͋Γ͕ͱ͏͍͟͝·ͨ͠