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
Vagrant基礎
Search
Takuya Arita
May 17, 2016
Technology
0
170
Vagrant基礎
社内勉強会用の資料です
Takuya Arita
May 17, 2016
Tweet
Share
More Decks by Takuya Arita
See All by Takuya Arita
Hosted Redash の EOL と移行ツール redash-migrate / You should know about Hosted Redash EOL and redash-migrate
ariarijp
0
2.9k
Redash で踏み出す BI 導入はじめの一歩 / DataEngineeringStudy Redash
ariarijp
1
2k
Redash のいま / Redash in 2021
ariarijp
2
1k
Redash 導入・運用を4年ぐらいやって変わったこと・変わらなかったこと / Changed and unchanged things with Redash and me
ariarijp
0
1.3k
5年前の自分に伝えたい広告 API 周辺の歩き方 / SOT Tech Night vol.1
ariarijp
1
470
使われていない、を知る / How do we know unused things in the real world?
ariarijp
0
390
MULTI_ORG について / What is MULTI_ORG in Redash
ariarijp
1
3.4k
あらためて振り返る Redash の使いどころ / Why I strongly recommend Redash
ariarijp
2
1.2k
PHP Data Structures
ariarijp
1
510
Other Decks in Technology
See All in Technology
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
320
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
480
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
340
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
540
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
AIチャットボット開発への生成AI活用
ryomrt
0
170
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
Featured
See All Featured
A better future with KSS
kneath
238
17k
Building an army of robots
kneath
302
43k
RailsConf 2023
tenderlove
29
900
What's new in Ruby 2.0
geeforr
343
31k
GraphQLとの向き合い方2022年版
quramy
43
13k
Designing for humans not robots
tammielis
250
25k
A Tale of Four Properties
chriscoyier
156
23k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
It's Worth the Effort
3n
183
27k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Transcript
Vagrantجૅ @ariarijp
ఆϦεφʔ • VagrantΛͬͨ͜ͱ͕͋Δɺݱࡏ͍ͬͯΔ • vagrant up/ssh/reload/halt͙Β͍ͬͨ͜ͱ͕͋Δ • ݴΘΕΔ͕··ʹ͍ͬͯΔ͕ɺ࣮Α͘Θ͔͍ͬͯͳ ͍Α͏ͳؾ͕͢Δ •
VagrantfileͬͯԿͩΖ͏ʁԿ͕Ͱ͖ΔΜͩΖ͏ʁͱࢥͬ ͍ͯΔ
ΞδΣϯμ • Vagrantͱ • Vagrantͷ͍ํ • Vagrantfile • Box, ϓϩϏδϣχϯά,
ϓϥάΠϯ • Vagrantͷ͍ํ Ԡ༻ฤ • VagrantΛ͏্Ͱͷҙ
Vagrantͱ • Hashicorp͕ఏڙ͍ͯ͠Δ։ൃڥͷߏஙπʔϧ • VirtualBoxVMwareͳͲͷԾԽϨΠϠ্ʹίϚϯυϥΠϯૢ࡞Ͱ ԾϚγϯ(VM)Λߏங͢Δ͜ͱ͕Ͱ͖Δ • RubyͰॻ͔Ε͍ͯͯϓϥάΠϯ(ޙड़)Ͱ֦ுՄೳ • Windows/Mac/LinuxͷϚϧνϓϥοτϑΥʔϜͰಈ࡞͢Δ
• 2013͝Ζ͔Β͘ར༻͞Ε࢝ΊɺݱࡏͰΑ͘ΘΕΔπʔϧͷ ͻͱͭ
Vagrantͷಋೖ • VagrantຊମHashicorpͷެࣜαΠτ͔Βμϯ ϩʔυ͢Δͷ͕ਖ਼ಓ • https://www.vagrantup.com/downloads.html • ԾԽϨΠϠͱͯ͠VirtualBox͕ΘΕΔ͜ͱ͕ ଟ͍ •
https://www.virtualbox.org/
Vagrantͷ͍ํ $ vagrant init ubuntu/trusty64 $ # ↑ Ubuntu 14.04ͷԾϚγϯΛ࡞ΔͨΊͷVagrantfileΛੜ
$ vagrant up # Vagrantfileͷهड़ʹج͍ͮͯVMΛ࡞(ॳճͷΈ)ɺىಈ $ vagrant ssh # VMʹSSHଓ $ vagrant reload # VMΛ࠶ىಈ $ vagrant halt # VMΛऴྃ $ vagrant destroy # VMΛഁغ
Vagrantfile • ͲΜͳVMΛߏங͍ͨ͠ͷ͔Λهड़͢ΔϑΝΠϧ • ࣮ଶRubyͷεΫϦϓτ • ͜ͷΑ͏ʹಛఆͷ༻్(͜͜ͰVagrantʹΑΔ VMͷߏங)ʹಛԽͨ͠هड़ݴޠDSL(Domain Specific Language)ͱݺΕΔ
VagrantfileͰΑ͘͏߲ • config.vm.box • ༻͢ΔBox(ޙड़)ͷछྨΛઃఆ͢Δ • config.vm.network • VMͷωοτϫʔΫઃఆΛՃ͢Δ •
VagrantσϑΥϧτͰϗετͷ2222൪ϙʔτΛήετͷ22൪ϙʔτʹϙʔ τϑΥϫʔυ͢Δ(ॏෳͨ͠߹2200Ҏ߱ͷ࿈൪͕༻͞ΕΔ) • ϙʔτϑΥϫʔυͰ80൪ͳͲͷWell-knownϙʔτΛ༻͢Δࡍʹϗετͷ ཧݖݶ͕ཁٻ͞ΕΔͨΊɺ͜ͷઃఆͰผͷIPΞυϨεΛ༩͢Δ͜ͱ͕ଟ͍
VagrantfileͰΑ͘͏߲ • config.vm.synced_folder • VirtualBoxͷڞ༗ϑΥϧμػೳΛ༻͠ɺήετ͔ΒϗετͷσΟϨΫτϦΛϚϯτ͢ΔઃఆΛՃ Ͱ͖Δ • σϑΥϧτͰVagrantfile͕ஔ͞Ε͍ͯΔσΟϨΫτϦ͕ήετͷ/vagrantʹϚϯτ͞Ε͍ͯΔ ͕ɺ͜ͷઃఆΛՃ͢Δ͜ͱͰɺϗετଆͷଞͷσΟϨΫτϦϚϯτͰ͖Δ •
config.vm.provider • VMʹׂΓͯΔϦιʔεͷઃఆΛ͢ΔɻΑ͘͏ͷҎԼͷ2ͭ • vb.memory: VMʹׂΓͯΔϝϞϦ༰ྔɻσϑΥϧτ512M͕ͩେମ1GඞཁʹͳΓ͕ͪ • vb.cpus: VMʹׂΓͯΔԾCPUɻσϑΥϧτͷ1Ҏ্ʹ͢Δ͜ͱ্࣮গͳ͍͕ɺنͷେ ͖ͳϓϩδΣΫτɺGUIͰ༻͢Δ߹ଟΊʹ͢Δ͜ͱ͋Δ • config.vm.provision: ϓϩϏδϣχϯάͷઃఆ(ޙड़)
Box • VMͷςϯϓϨʔτͷΑ͏ͳͷ • Atlasͱ͍͏αʔϏεͰެ։͞Ε͍ͯΔΠϝʔδΛݕࡧͰ͖ɺBox Atlas͔ΒμϯϩʔυͰ͖Δ • Packer(Hashicorp)ͳͲΛ༻ͯࣗ͠࡞͢Δ͜ͱՄೳ • Atlas্Ͱࣗ࡞ͷΠϝʔδΛެ։͢Δ͜ͱՄೳ
• ۀͰΔ͜ͱ΄΅ͳ͍͕ɺBoxΛAtlasͳͲͰެ։͠ɺಋೖ(ओ ʹࢼ༻ͷͨΊ)Λ༰қʹ͍ͯ͠ΔOSSϓϩμΫτଟ͍
ϓϩϏδϣχϯά • VMߏங࣌ͳͲʹॳظઃఆΛ͢ΔͨΊͷखଓ͖Λهड़Ͱ͖Δ • vagrant upͷॳճ࣮ߦ࣌vagrant provision࣮ߦ࣌ʹ࣮ߦ͞Ε Δ • vagrant
up —no-provisionͰϓϩϏδϣχϯάΛ࣮ߦͤͣ ʹVMΛߏங͢Δ͜ͱՄೳ • γΣϧεΫϦϓτChefɺAnsibleͳͲͷϓϩϏδϣχϯάπʔ ϧ(Provisioner)ʹରԠ͍ͯ͠Δ
ϓϩϏδϣχϯά • ؆୯ͳઃఆShell ProvisionerΛ͏ • ͍͍ͩͨ͜ΕͰͳΜͱ͔ͳΔ • ෳࡶͳઃఆ͕ඞཁͳ߹ɺطଘͷϦιʔεΛྲྀ༻͢Δ߹Chefͳ ͲͷProvisionerΛ͏ͷͰͳ͘ɺVMʹChefAnsibleΛಋೖ͠ɺ VMͰͦΕΒΛ࣮ߦ͢ΔΑ͏ͳॲཧΛShell
ProvisionerͰهड़͢Δͷ ͕͓͢͢Ί • Chef ProvisionerͳͲΛ͏ͱϗετଆͷڥΛߟྀ͠ͳͯ͘ͳ Βͳ͍(ಛʹWindows/Mac͕ͭΒ͍
ϓϥάΠϯ • VagrantʹػೳΛՃ͢ΔΈͰɺଟ͘ͷϓ ϥάΠϯ͕ެ։͞Ε͍ͯΔ • https://github.com/mitchellh/vagrant/wiki/ Available-Vagrant-Plugins • vagrant plugin
install vagrant-pristineͷΑ͏ ʹvagrantίϚϯυͰಋೖͰ͖Δ
͓͢͢ΊϓϥάΠϯ • vagrant-pristine • https://github.com/fgrehm/vagrant-pristine • vagrant pristineͱ͍͏αϒίϚϯυΛՃ͢ΔϓϥάΠϯɻdestroyͱupΛಉ࣌ ʹ࣮ߦͰ͖ΔͷͰɺ։ൃڥΛԿ࡞Γͳ͓࣌͢ʹ͏ •
vagrant-vbguest • https://github.com/dotless-de/vagrant-vbguest • VirtualBoxͷGuest AdditionsΛߋ৽͢ΔͷʹศརͳϓϥάΠϯ • ͨ·ʹGuest Additions͕ݹ͍͜ͱ͕ݪҼͰڞ༗σΟϨΫτϦ͕ϚϯτͰ͖ͳ ͔ͬͨΓ͢ΔͷͰɺʹ1ճ͙Β͍͏͜ͱ͋Δ
Vagrantͷ͍ํ Ԡ༻ฤ • vagrant snapshot [push|pop|save|restore] • ͦͷ࣌ͷVMΠϝʔδͷεφοϓγϣοτΛऔಘ͢Δ • pushͰεφοϓγϣοτΛελοΫʹՃɺpopͰελο
Ϋ͔ΒऔΓग़ͯ͠ϦετΞ • saveͰ໊લΛ͚ͭͯอଘɺrestoreͰ໊લΛࢦఆͯ͠εφο ϓγϣοτΛϦετΞ • ϓϩϏδϣχϯάͷ֬ೝେ͖ͳมߋΛ͢Δ·͑ʹศར
Vagrantͷ͍ํ Ԡ༻ฤ • vagrant share • ϩʔΧϧͰߏஙͨ͠VMΛΠϯλʔωοτ্ʹެ։Ͱ͖Δ • HTTP, HTTPS,
SSHʹରԠ • AtlasͷϢʔβʔొ͕ඞཁ • LTE/3GڥͷεϚʔτϑΥϯͰͷ࣮ػςετͳͲͰศར • खݩͷڥ͕Πϯλʔωοτ্ʹެ։͞ΕΔ͜ͱΛ౿·͑ͯɺBasicೝ ূIP੍ݶΛઃఆͯ͠͏
VagrantΛ͏্Ͱͷҙ • ͳΔ͘ϓϩϏδϣχϯάΛ͏ • ͲΜͳখ͞ͳϓϩδΣΫτͰڥߏஙࣗಈԽ ͠ɺ͔ͭɺ࠶ݱੑ͕͋Δܗʹ͢Δ • VMϓϩδΣΫτ୯ҐͳͲͰ͚Δ • ͻͱͭͷVMʹ͍Ζ͍ΖಥͬࠐΜͰ͠·͏ͱͤͬ
͔͘VMͷཧָ͕ʹͳΔ͏·Έ͕ͳ͍
VagrantΛ͏্Ͱͷҙ • ڞ༗ϑΥϧμ(/vagrant)͍ • VagrantͷͰͳ͍͕ɺVirtualBoxͷڞ༗ϑΥϧμಡΈॻ͖ͱ ʹ͍ • ڞ༗ϑΥϧμͷݖݶʹؾΛ͚ͭΔ • /vagrantͷݖݶσϑΥϧτͰvagrant:vagrant
0755ͱͳ͍ͬͯΔ • ڞ༗ϑΥϧμʹWebΞϓϦΛஔ͢Δͱ͖ɺσϑΥϧτͷઃఆͩͱ ϩάΛॻ͖ࠐΊͳͯ͘ࠔΔ͜ͱ͕͋ΔͷͰɺͦͷ߹ڞ༗ϑΥϧ μͷϚϯτΦϓγϣϯΛదʹઃఆ͢Δ
VagrantΛ͏্Ͱͷҙ • VM݁ߏϦιʔεΛফඅ͢Δ • 1ϓϩδΣΫτͰVMΛ2ͭىಈͨ͠Γ͢Δ͜ͱ͋Δ͕ɺಛʹϝ ϞϦͱσΟεΫ༰ྔʹҙ • τϥϒϧʹૺ۰ͨ࣌͠ͷͨΊʹVirtualBox୯ମͰ͔ͭ͏ํ๏ͬ ͓ͯ͘ •
vagrant upͨ͠Βɺͳ͔ͥਅ৽͍͠VM͕ىಈ͞ΕͨΓ͢Δ͜ͱ ͋ΔͷͰɺͦ͏͍ͬͨ߹ʹରॲ͢ΔͨΊʹVirtualBoxͷ ͕ࣝଟগ͋Δͱ·͍͠
·ͱΊ • ࠓ·Ͱ͋·Γҙ͍ࣝͯͬͯ͠ͳ͔ͬͨVagrant࣮͍Ζ ͍Ζͳ͍ํઃఆ͕͋Γ·͢ • ಛʹɺ͜Ε͔ΒࣗͰ։ൃڥΛߏங͢ΔΑ͏ʹͳΔͱɺ Vagrantͱͯڧྗͳಓ۩ʹͳΔͷͰɺࢥͬͨ௨ΓͷڥͰ ࡞ۀ͕Ͱ͖ΔΑ͏ʹ͍ํΛ͍͖֮͑ͯ·͠ΐ͏ • VagrantΛ׆༻͢Δʹ(ಛʹϓϩϏδϣχϯά͋ͨΓͰ)Linux
ͷ͕ࣝඞਢʹͳΓ·͢ɻ͋Θ͍͖֮ͤͯ͑ͯ·͠ΐ͏