

Vagrantfile 은 베이그런트 프로비저닝을 위한 정보를 담고 있는 메인 파일 이다. 해당 파일이 있는 경로에서 vagrant up 명령을 통해 Vagrantfile 에 정의된 것들을 자동으로 구성한다
- 비슷한 것으로 aws 에서는 cloud formation, openstack 에서는 heat, 그외로 Terraform 이 있다. 이러한 것들은 프로비저닝 + 오케스트레이션을 위한 도구이다
- 허나, Ansible 의 경우 자동화 도구라고 한다. Ansible 과 Vagrant 를 연계하여 생성된 인스턴스들의 Ip 를 Ansible 에 등록하여, Key-Pair or password 를 통해 Ansible 에서 연결된 인스턴스들을 한 번에 관리할 수 있다
Vagrant 는 ruby 를 사용한다
Vagrantfile 의 하나의 작업은 do ~ end 로 구분된다
- provision 을 통해 수정된 내용만 적용하게 할 수 있다

AWS / GCP 등의 퍼블릭 클라우드는 접속시 서비스를 이용할 수 있는 Master Node 역활의 VM 을 사용자에게 제공해준다. AWS 의 경우 AMAZON Linux 로 이루어진 VM 을 제공해준다
OpenStack 에서 magnum 은 Docker Swarm & K8S Cluster 를 제공하는 서비스이다
- Nova 서비스가 Heat 를 읽고, 이에 맞춰서 구성해준다
Shell 은 소수점 연산이 안된다. 멀티 쓰레드도 지원하지 않는다. 허나, Python 은 이러한 것을 다 지원한다. Python 은 병렬 처리가 가능하다. Shell 은 하나 처리하고, 다음 하나를 처리한다. 따라서, Python 으로 처리하는 것이 처리 속도가 빠르다
Ansible 은 멱등성을 보장하기에 특정 상태를 보장한다. 따라서 이미 특정 상태인 것은 Skip 이 가능하다. 설치 과정에서 이미 설치되있다면, 해당 과정을 Skip 하는 것이다
Ansible 을 통해 전체 관리가 가능하다. Ansible 은 프로비저닝의 기능이 없기에 프로비저닝 도구가 따로 필요하다
무언가를 만들기 위해서는 Hyper Visor 가 필요하다. Heat 역시 OpenStack 의 Nova 서비스를 이용해 Hyper Visor 와 연계해야 한다. VAGRANT 역시 Hyper Visor 가 필요하다. 대표적으로 Virtual Box / KVM / VMware 등이 있다
Ansible 본체 - Ansible 소프트 웨어 자체
인벤토리 - 관리 대상을 작성한 리스트, 목록 이다. 기본적으로는 /etc/ansible/hosts 를 이용하지만, 상세한 관리를 위해서는 별도로 구분하여 파일로 작성한다. ex) seoul.lst, busan.lst
모듈 - 패키지 설치, 사용자 관리, 파일 및 디렉토리 관리등을 명령어로 전달하는 것이 아니라 모듈을 통해 관리한다. 예를 들어 yum -y install httpd 와 같은 경우 -m yum 을 통해 yum 모듈을 불러온다
플레이북 - 도커 컨테이너 생성시 docker container run 을 이용하면 불편함이 많아 이를 compose 나 stack 을 이용했던 것처럼 파일 형태로 관리를 위한 내역을 작성하고, 이를 실행한다