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
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
300
コミュニティが持つ「学びと成長の場」としての作用 / RSGT2026
ama_ch
0
130
田舎で20年スクラム(後編):一個人が企業で長期戦アジャイルに挑む意味
chinmo
1
1.3k
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
ECS_EKS以外の選択肢_ROSA入門_.pdf
masakiokuda
1
120
サラリーマンソフトウェアエンジニアのキャリア
yuheinakasaka
35
17k
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
140
Eight Engineering Unit 紹介資料
sansan33
PRO
0
6.2k
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
210
旬のブリと旬の技術で楽しむ AI エージェント設計開発レシピ
chack411
1
160
Keynoteから見るAWSの頭の中
nrinetcom
PRO
1
170
複雑さを受け入れるか、拒むか? - 事業成長とともに育ったモノリスを前に私が考えたこと #RSGT2026
murabayashi
1
1.6k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
270
Designing for Performance
lara
610
70k
Heart Work Chapter 1 - Part 1
lfama
PRO
4
35k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
110
Marketing to machines
jonoalderson
1
4.5k
Evolving SEO for Evolving Search Engines
ryanjones
0
94
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
93
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Designing Experiences People Love
moore
143
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
260
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!
͋Γ͕ͱ͏͍͟͝·ͨ͠