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
Tech-Verse 2025 Keynote
lycorptech_jp
PRO
0
1.9k
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
0
100
本が全く読めなかった過去の自分へ
genshun9
0
940
Yamla: Rustでつくるリアルタイム性を追求した機械学習基盤 / Yamla: A Rust-Based Machine Learning Platform Pursuing Real-Time Capabilities
lycorptech_jp
PRO
4
240
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
6.9k
ネットワーク保護はどう変わるのか?re:Inforce 2025最新アップデート解説
tokushun
0
190
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
1
15k
怖くない!はじめてのClaude Code
shinya337
0
380
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
490
FOSS4G 2025 KANSAI QGISで点群データをいろいろしてみた
kou_kita
0
390
マネジメントって難しい、けどおもしろい / Management is tough, but fun! #em_findy
ar_tama
7
990
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
130
Featured
See All Featured
Designing for Performance
lara
610
69k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Side Projects
sachag
455
42k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Bash Introduction
62gerente
613
210k
Building Adaptive Systems
keathley
43
2.7k
Music & Morning Musume
bryan
46
6.6k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Producing Creativity
orderedlist
PRO
346
40k
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!
͋Γ͕ͱ͏͍͟͝·ͨ͠