본문으로 바로가기

https://www.inflearn.com/course/ansible-%EC%9D%91%EC%9A%A9/

 

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

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

www.inflearn.com

 

ㅇ  앤서블 서버에 앤서블 코어의 환경 구성하기

- Vagrantfile 수정 

1. 베이그런트에서 부르는 호스트 이름 작성

2. 버추얼박스에서 구분하는 호스트 이름 작성

3. 가상머신의 호스트 이름을 변경

4. 호스트 PC와 가상머신 간에는 공유 디렉터리는 사용하지 않음

5. 가상머신에서 인터넷으로 연결되는 IP 설정

6. 호스트PC의 포트를 IP주소와 유사하게 변경

 

- bootstrap.sh 생성

1. Yum 통해서 EPEL 을 설치

2. Yum 통해서 ansible을 설치

 

ㅇ 작성한 Vagrantfile

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

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
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.0.10"
	cfg.vm.network "forwarded_port", guest: 22, host: 19210, auto_correct: false, id: "ssh"
	cfg.vm.provision "shell", path: "bootstrap.sh"
	end
end

 

ㅇ 작성한 bootstrap.sh

#! /usr/bin/env bash

yum install epel-release -y
yum install ansible -y

- 위 파일 작성 후, vagrant up 실행하자 Unmounting Virtualbox Guest Additions ISO from: /mnt 에러 발생

 => https://stackoverflow.com/questions/59179637/vagrant-up-causes-guest-additions-to-reinstall-each-time-why

     통해 해결

 

ㅇ 앤서블 코어에 플레이북 제작환경 추가하기

- Vagrantfile

 1. 'Ansible_env_ready.yml' 파일을 앤서블 서버에 전달

 2. 'Ansible_evn_ready.yml' 파일을 앤서블 서버에서 실행

   => 윈도우에서는 앤서블 코어가 작동을 안하기 때문에, ansible-server에 해당 파일 전달하여 실행

# -*- 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 (Udemy-Bloter)"
	end
	cfg.vm.host_name="ansible-server"
	cfg.vm.synced_folder ".", "/vagrant", disabled: true
	cfg.vm.network "public_network", ip: "192.168.0.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

# vagrantfile 에서 cfg.vm.provision 에서 shell 중 path 는 전송하고 실행, inline은 실행만 진행

 

 

- bootstrap.sh

 1. vim plugin 관련 파일이 저장될 디렉터리를 생성

  - /home/vagrant/.vim/autoload

  - /home/vagrant/.vim/bundle

 2. vim과 bash의 환경 설정 파일을 생성

#! /usr/bin/env bash

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

# 환경설정과 초기 파일 구성 for vagrant only
# 루트 권한 없이 만듬 (따라서 home에서 진행)

mkdir -p /home/vagrant/.vim/autoload /home/vagrant/.vim/bundle
touch /home/vagrant/.vimrc
touch /home/vagrant/.bashrc

 

- Ansible_env_ready.yml

 1. yum을 통해서 vim-enhanced를 설치

 2. yum 을 통해서 git을 설치

 3. pathogen.vim 을 다운로드

 4. vim-ansible-yaml을 git clone을 통해서 다운로드

 5. vim의 환경설정(vimrc) 을 수정

 6. bash의 환경설정(bashrc) 을 수정

---
- name: Setup for the Ansible's Enviorment
  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'"
        

      # lineinfile 라인 추가 모듈
      # {{item}} 과 with_items가 어울려서 한줄씩 argument로 넘어가서 들어감

 

 

- 작성 후, # vagrant provision ansible-server 입력하여 적용 (재기동, 삭제없이 바로 적용)

- # vagrant ssh ansible-server  접속 후, vi Ansible_env_ready.yml 하여 set num 등 확인