Ansible๊ณผ Vagrant๋ ๋ ๋ค ๊ตฌ์ฑ ๊ด๋ฆฌ ๋ฐ ์๋ํ์ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ์ด์ง๋ง ์ฌ์ฉ ์ฌ๋ก ๋ฐ ์๋ ๋ฐฉ์ ์ธก๋ฉด์์ ๋ช ๊ฐ์ง ์ฃผ์ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
Ansible
์๋ฒ ๋ฐ ๊ธฐํ ๋คํธ์ํฌ ์ฅ์น๋ฅผ ๊ด๋ฆฌํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ Python ๊ธฐ๋ฐ์ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋ฐ ์๋ํ ๋๊ตฌ
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ๋คํธ์ํฌ ์๋ํ ์์คํ
์ฝ๋๋ก ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ธฐ ๋๋ฌธ์ IaC(Infrastructure as Code)๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํจ
ํน์ง
- yaml ํ์์ playbook๋ฅผ ์ฌ์ฉํด์ ์ดํดํ๊ธฐ ์ฝ๊ณ ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ์
- ์ ์ด ์์คํ ์ด ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ์์คํ ์ผ๋ก ํธ์ํ๋ ํธ์ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉ
- ์ํํธ์จ์ด ์ค์น, ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน ๊ด๋ฆฌ, ์๋น์ค ์ค์ ๋ฐ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ์์ ์ ์๋ํํ๋ ๋ฐ ์ฌ์ฉ
- ๋น์ทํ ๋๊ตฌ : Chef, Puppet
์ฅ์
- ์์ด์ ํธ๊ฐ ์์. ์ฆ, ๋์ ๋จธ์ ์ ์ํํธ์จ์ด๋ฅผ ์ค์นํ ํ์๊ฐ ์์ผ๋ฉฐ ๋์ ๋จธ์ ์์ ์๋ํ๋ ค๋ฉด SSH ๋ฐ Python๋ง ํ์
- ์คํ ์์ค ๋ฐ ๋ฒค๋ ์ง์์ ์ ๊ณตํ๋ ๋๊ท๋ชจ ์ปค๋ฎค๋ํฐ ์์
๋จ์
- ๋ง์ ์์ ์ ๋ณด๋ฅผ ์์งํ ๋ ์๋๊ฐ ๋๋ ค์ง ์ ์๋ค. (์ด๋๋ฌธ์ Nornir๊ฐ ๊ฐ๋ฐ๋จ)
โ ๊ณต์๋ฌธ์
https://www.redhat.com/ko/technologies/management/ansible/what-is-ansible
Vagrant
๊ฐ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ Ruby ๊ธฐ๋ฐ ๋๊ตฌ
์๊ท๋ชจ VM ์ธํธ๋ฅผ ์ผ๊ด๋ ์์ฑ์ ์๋ํํ๋๋ฐ ์์ฃผ ์ฌ์ฉ๋๋ ๋๊ตฌ
ํ๋ก๋น์ ๋(Provisioning) ๋๊ตฌ๋ผ๊ณ ํ๊ธฐ๋ ํจ
ํน์ง
- ์์ฑํ๋ ค๋ ๊ฐ์ ํ๊ฒฝ์ ์ค๋ช ํ๋ ๊ตฌ์ฑ ํ์ผ์ธ Vagrantfile์ ์ฌ์ฉ
- ๊ฐ์ ๋จธ์ ์ด ์ ์ด ๋จธ์ ์์ ๊ตฌ์ฑ์ ๊ฐ์ ธ์ค๋ ํ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉ
- ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฐ์ ๋จธ์ ์ ๋ง๋ค๊ณ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ
- Virtualbox, VMware ๋๋ Hyper-V์ ๊ฐ์ ๋ค์ํ ๊ฐ์ํ ์ํํธ์จ์ด์ ํจ๊ป ์๋
- ์ฌํ ๊ฐ๋ฅํ๊ณ ์ด์ ๊ฐ๋ฅํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ
์ฅ์
- ๊ฐ๋ฐ ๋ฐ ํ ์คํธ๋ฅผ ์ํ ํ์ค ํ๊ฒฝ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
- ํ๋ก๋์ ํ๊ฒฝ๊ณผ ์ผ์นํ๋ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ์ฌ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ํ ์คํธํ๊ณ ๋๋ฒ๊ทธํ ์ ์๋ค.
- ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ค๋ฅธ ์ฌ๋๊ณผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์์ด์ ํ๋ก์ ํธ์์ ๋ ์ฝ๊ฒ ํ์ ํ ์ ์๋ค.
๋จ์
- ์ธํ๋ผ ๋ณ๊ฒฝ์๋ ์ ํฉํ์ง ์๋ค.
Vagrant๋ฅผ ์ ์ฌ์ฉํ ๊น?
Vagrant๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด
๋ฒ์ถ์ผ๋ฐ์ค์์ ๊ฐ๊ฐ์ ๊ฐ๋ณ ๊ฐ์๋จธ์ ์ ์์ฑํ๊ณ ํ๋์ฉ ์ค์ ์ ํด์ค์ผ ํฉ๋๋ค.
Vagrant๋ฅผ ์ฌ์ฉํ๋ฉด
Vagrantfile์์ ๊ฐ์๋จธ์ ์ ๋ํ ์ค์ ๊ณผ ์ธํ ์ ๋ฏธ๋ฆฌ ํด๋์ ์ ์์ด
Provisioning ํ ์ ์์ต๋๋ค.
๐ก Provisioning ์ด๋?
์ฌ์ฉ์์ ์๊ตฌ์ ๋ง๊ฒ ์์คํ ์์์ ํ ๋น, ๋ฐฐ์น, ๋ฐฐํฌํด ๋์๋ค๊ฐ ํ์์ ์์คํ ์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์ํ๋ก ๋ฏธ๋ฆฌ ์ค๋นํด๋๋ ๊ฒ
์) CentOS๋ฅผ ์ค์นํ ๋, ์ค์น๊ฐ ์๋ฃ๋ ํ์ ip ๋ฑ ์ค์ ์ ํ๊ฒ ๋๋๋ฐ, ๋ฒ ์ด๊ทธ๋ฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์นํ ๋ ์๋์ผ๋ก ์ ๋ณด ๋ค ๊ฐ์ ธ๊ฐ์ ํ๋ฒ์ ์ธํ ๊น์ง ํด์ค. ์ฆ, ์ฝ๊ฒ ํ๋ก๋น์ ธ๋์ด ๋จ.
โ ๊ณต์๋ฌธ์
https://developer.hashicorp.com/vagrant/downloads
์ ๋ฆฌ
๋ถ๋ฅ๋ฅผ ํด๋ณด์๋ฉด Ansible์ "์๋ฒ ๊ตฌ์ฑ ๋ฐ ์๋ํ", Vagrant๋ "๊ฐ์ ๋จธ์ ๊ด๋ฆฌ" ์ ๋๋ค.
Ansible์ ์๋ฒ ๋ฐ ๊ธฐํ ๋คํธ์ํฌ ์ฅ์น์ ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์๋ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ์ธ ๋ฐ๋ฉด Vagrant๋ ๊ฐ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๋ ๋๊ตฌ์ ๋๋ค. ๋ํ ์๋ก๋ฅผ ๋ณด์ํ ์ ์์ผ๋ฉฐ Ansible์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ํ๋ก๋น์ ๋ํ ์ ์๊ณ Vagrant๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ด๋ฏธ์ง ์์์ ํ ์คํธ ๋ฐ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
Ansible๊ณผ Vagrant๋ ๋ค๋ฅธ ๋ถ๋ฅ์ฌ์ ๋๊ฐ๋ฅผ ์ ๋น๊ต๋ฅผ ํ์ง? ํ ์๋ ์์ง๋ง, ์ธํ๋ผ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๋ ๊ฐ๋ ์ด ์ด๋ค ํน์ง์ด ์๊ณ ์ด๋ ์ํฉ์์ ์ฐ๋๊ฑด์ง ํ์คํ ์๊ณ ์ถ์ด์ ์ ๋ฆฌ๋ฅผ ํด๋ณด์์ต๋๋ค ๐
๐ ๋ ์์๋ณผ ๋ด์ฉ
- Terraform
์ฐธ๊ณ
https://junior-developer.tistory.com/73
https://ganbarujoy.tistory.com/27
https://www.daddyprogrammer.org/post/7369/ansible-vagrant/
https://www.techtarget.com/searchnetworking/tip/Ansible-vs-Terraform-vs-Vagrant-Whats-the-difference