[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) - 인프런 | 강의 (inflearn.com)
1. Vagrantfile 생성 및 확장팩 설치
C:\HashiCorp>vagrant init
C:\HashiCorp>vagrant plugin install vagrant-vbguest --plugin-version 0.21
cmd를 열고 경로를 C:\HashiCorp로 이동한 뒤 vagrant init 을 입력하여 Vagrantfile을 생성한다.
vagrant plugin install vagrant-vbguest만 입력하여 확장팩을 설치하면 0.30 버전이 설치되는데 해당 버전을 설치하면 vagrant up을 통해 서버를 올렸을 때 ansible이 정상적으로 설치되지 않는 오류가 발생한다.
따라서 반드시 --plugin-version 0.21 옵션을 지정하여 0.21 버전의 확장팩을 설치할 것을 권장한다.
2. Vagrantfile 및 bootstrap.sh 작성
# Vagrantfile
Vagrant.configure("2") do |config|
config.vm.define:"ansible-server" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.provider:virtualbox do |vb|
vb.name="Ansible-Server(Udemy-Bloter)"
end
cfg.vm.host_name="ansible-server"
cfg.vm.synced_folder ".", "/vagrant", disabled: true
cfg.vm.network "public_network", ip: "192.168.1.10"
cfg.vm.network "forwarded_port", guest: 22, host: 19210, auto_correct: false, id: "ssh"
cfg.vm.provision "shell", path: "bootstrap.sh"
end
end
또는
Vagrant.configure("2") do |config|
config.vm.define:"ansible-server" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.provider:virtualbox do |vb|
vb.name="Ansible-Server(Udemy-Bloter)"
end
cfg.vm.host_name="ansible-server"
cfg.vm.synced_folder ".", "/vagrant", disabled: true
cfg.vm.network "public_network", ip: "192.168.1.10"
cfg.vm.network "forwarded_port", guest: 22, host: 19210, auto_correct: false, id: "ssh"
cfg.vm.provision "shell", inline: "yum install epel-release -y"
cfg.vm.provision "shell", inline: "yum install ansible -y"
end
end
Vagrantfile을 Ruby 언어를 사용하여 작성되며 작성한 내용은 아래에 설명을 참고하면 된다.
- Vagrant.configure("2") do |config|
vagrant 2버전을 사용하겠다는 의미이며 do |config|는 config 설정 시작을 나타낸다. 설정 마지막에 end를 입력하여 config 설정을 종료한다.
- config.vm.define:"ansible-server" do |cfg|
vagrant에서 ssh 접속할 때 사용하는 이름이다. vagrant ssh ansible-server 라고 입력하면 ssh접속이 된다.
do |cfg|는 cfg 설정 시작을 나타내며 end를 입력하여 설정 종료를 알린다.
- cfg.vm.box = "centos/7"
설치할 운영체제의 이미지 파일을 지정한다.
- cfg.vm.provider:virtualbox do |vb|
virtualbox의 일부 config를 변경하기 위한 설정이다. do |vb|는 vb 설정이 시작됨을 뜻하며 end를 입력하여 vb 설정을 마친다.
- vb.name="Ansible-Server(Udemy-Bloter)"
vitualbox에서 보여지는 가상머신의 이름을 Ansible--Server(Udemy-Bloter)로 바꿔주는 설정
- cfg.vm.host_name="ansible-server"
생성된 가상머신에 내부에서 설정된 hostname이다. "hostnamectl set-hostname ansible-server"와 같다.
- cfg.vm.synced_folder ".", "vagrant", disabled: true
호스트 pc와 가상머신 간에는 공유 디렉터리는 사용하지 않음
- cfg.vm.network "public_network", ip: "192.168.1.10"
public_network 로 지정하면 bridge 네트워크로 설정되고 ip는 직접 지정해주면된다.
- cfg.vm.network "forwarded_port", guest: 22, host: 19210, auto_correct: false, id: "ssh"
로컬 pc에서 가상 서버에 접근하기 위한 포트 설정으로 가상 서버의 22번 포트는 로컬 pc의 19210포트로 접근이 가능
- cfg.vm.provision "shell", path: "bootstrap.sh"
설치 과정중에 bootstrap.sh를 실행시킨다.
# bootstrap.sh
#! /usr/bin/env bash
yum install epel-release -y
yum install ansible -y
bootstrap.sh 파일을 생성하여 위와 같이 작성하면 서버가 올라가면서 자동으로 ansible 패키지가 설치되어 올라간다.
3. Ansible 서버 구축 및 확인
vagrant up을 입력하여 서버 설치를 시작한다.
Ansible 서버 설치가 완료되면 vagrant ssh 명령어를 사용하여 ansible-server로 접속을 시도한다.
ansible-server라는 이름은 Vagrantfile에서 지정한 이름이다.
ansible --version을 입력하여 ansible이 제대로 설치되었는지 확인한다.
'Ansible' 카테고리의 다른 글
Vagrant를 활용하여 Ansible 서버와 노드 구성하기 (0) | 2021.07.14 |
---|---|
Vagrant를 활용하여 Ansible server 추가 설정 프로비저닝 (0) | 2021.07.13 |
Ansible과 사용할 Vagrant 설치 및 알아보기 (0) | 2021.07.12 |
Ansible Playbook 작성 시 꿀팁 (0) | 2021.07.12 |
Ansible Playbook 정의 및 작성하기 (0) | 2021.07.12 |