Ansible

Vagrant를 활용하여 Ansible server 추가 설정 프로비저닝

Joon0464 2021. 7. 13. 20:40

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

 

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

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

www.inflearn.com

이번 글에서는 Vagrant를 사용하여 프로비저닝한 Ansible Server의 vi 편집기로 yml 작성 시 글자 색깔 입혀지도록 설정할 것이다.

1. Vagranfile 작성

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant_API_Version ="2"

Vagrant.configure(Vagrant_API_Version) do |config|
  config.vm.define:"ansible-server" do |cfg|
    cfg.vm.box = "centos/7"
	cfg.vm.provider:virtualbox do |vb|
	  vb.name="Ansible-Server(github_SysNet4Admin)"
	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"
	cfg.vm.provision "file", source: "Ansible_env_ready.yml", destination: "Ansible_env_ready.yml"
	cfg.vm.provision "shell", inline: "ansible-playbook Ansible_env_ready.yml"
  end
end
  • Vagrant_API_Version ="2"

Vagrant_API_Version을 2를 변수로 지정하여 Vagrant Configure의 값으로 넣어준다.

  • cfg.vm.provision "shell", path: "bootstrap.sh"

path를 사용하면 해당 파일을 전송 및 실행한다.

  • cfg.vm.provision "file", source: "Ansible_env_ready.yml", destination: "Ansible_env_ready.yml"

file을 사용하면 해당 파일을 프로비저닝 하는 서버로 복사한다.

  • cfg.vm.provision "shell", inline: "Ansible-playbook Ansible_env_ready.yml"

inline을 사용하면 명령어를 실행한다.

2. bootstrap.sh 작성

# bootstrap.sh

#! /usr/bin/env bash

#ansible 설치 
yum install epel-release -y
yum install ansible -y

#환경설정 초기 파일 구성 for vagrant Only 
mkdir -p /home/vagrant/.vim/autoload /home/vagrant/.vim/bundle
touch /home/vagrant/.vimrc
touch /home/vagrant/.bashrc

.vimrc는 vagrant 사용자의 vim 환경설정 파일이며, .bashrc는 vagrant 사용자의 환경설정 파일이다.

3. Ansible_env_ready.yml 작성

 

# Ansible_env_ready.yml

---
- name: Setup for the Ansible's Enviroment
  hosts: localhost
  gather_facts: no
  
  tasks:
    - name: Install vim-enhanced
      yum:
        name: vim-enhanced
        state: present
        
    - name: Install git
      yum: 
        name: git
        state: present
        
    - name: Download pathogen.vim
      shell: "curl -fLo /home/vagrant/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim"
      
    - name: Git clone vim-ansible-yaml
      git:
        repo: 'https://github.com/chase/vim-ansible-yaml.git'
        dest: /home/vagrant/.vim/bundle/vim-ansible-yaml
        
    - name: Configure vimrc
      lineinfile: 
        dest: /home/vagrant/.vimrc
        line: "{{ item }}"
      with_items:
        - "set number"
        - "execute pathogen#infect()"
        - "syntax on"

    - name: Configure Bashrc
      lineinfile:   
        dest: /home/vagrant/.bashrc
        line: "{{ item }}"
      with_items:
        - "alias vi='vim'"
        - "alias ans='ansible'"
        - "alias anp='ansible-playbook'"

위 yaml 아래에 나열한 설치 과정에 대한 파일이다.

  1. yum을 사용하여 vim-enhanced 설치
  2. yum을 사용하여 git을 설치
  3. pathogen.vim을 다운로드
  4. vim-ansible-yaml을 git clone을 통해 다운로드
  5. vim의 환경설정 파일인 .vimrc 수정
  6. Bash 환경설정 파일인 .bashrc수정

4. 프로비저닝

vagrant provison ansible-server

vagrant provision 명령어를 사용하면 현재 가동중인 ansible-server를 재시작하지 않고도 변경사항을 적용할 수 있다.

vagrant ssh ansible-server에 접속하고 복사된 Ansible_env_ready파일이 존재하는지 확인한 뒤 해당 파일을 vi 명령어로 열어보면 출력되는 글자에 색깔이 정상적으로 적용된 것을 볼 수 있다.