Ansible

Vagrant를 활용하여 Ansible server 프로비저닝

Joon0464 2021. 7. 13. 20:28

[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) - 인프런 | 강의 (inflearn.com)

 

[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) - 인프런 | 강의

센트OS 이외에 얼마나 다양한 시스템에 엔서블이 사용될 수 있는지 배워봅시다. 앤서블을 리눅스 이외에 윈도우 및 네트워크 시스템과 같은 여러가지 시스템에 대해서 다양한 목적으로 사용하

www.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이 정상적으로 설치되지 않는 오류가 발생한다.

vagrant guest가 0.30 버전이 설치됐을 때 발생하는 오류이다.

따라서 반드시 --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이 제대로 설치되었는지 확인한다.