Ansible/01. IaC, Ansible 란? & 설치

[Ansible] vagrant 를 활용하여 ansible 실습 환경 구성

Jaden Park 2021. 7. 28. 13:37

실습 환경

Ubuntu 18.04
VirtualBox latest
Vagrant latest

 

vagrant 설치는 이전 포스트 혹은 vagrant 공식 페이지에서 확인하시기 바랍니다.

 

 

실습 디렉토리 생성 및 이동

mkdir -p ~/vagrant/ansible && cd ~/vagrant/ansible

 

플러그인 설치

vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-disksize
vagrant plugin list

vagrant box add ubuntu/bionic64
vagrant box list

 

 

vagrantfile 생성

$ cat Vagrantfile

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

Vagrant.configure("2") do |config|
  config.vm.define "control" do |config|
    config.vm.box = "ubuntu/bionic64"
    config.vm.provider "virtualbox" do |vb|
      vb.name = "control"
      vb.cpus = 2
      vb.memory = 3072
    end
    config.vm.hostname = "control"
    config.vm.network "private_network", ip: "192.168.56.11"
    config.disksize.size = "30GB"
  end
  config.vm.define "host1" do |config|
    config.vm.box = "ubuntu/bionic64"
    config.vm.provider "virtualbox" do |vb|
      vb.name = "host1"
      vb.cpus = 2
      vb.memory = 3072
    end
    config.vm.hostname = "host1"
    config.vm.network "private_network", ip: "192.168.56.21"
    config.disksize.size = "30GB"
  end
  config.vm.define "host2" do |config|
    config.vm.box = "ubuntu/bionic64"
    config.vm.provider "virtualbox" do |vb|
      vb.name = "host2"
      vb.cpus = 2
      vb.memory = 3072
    end
    config.vm.hostname = "host2"
    config.vm.network "private_network", ip: "192.168.56.22"
    config.disksize.size = "30GB"
  end
  config.vm.define "host3" do |config|
    config.vm.box = "ubuntu/bionic64"
    config.vm.provider "virtualbox" do |vb|
     vb.name = "host3"
      vb.cpus = 2
      vb.memory = 3072
    end
    config.vm.hostname = "host3"
    config.vm.network "private_network", ip: "192.168.56.23"
    config.disksize.size = "30GB"
  end
  config.vm.define "host4" do |config|
    config.vm.box = "ubuntu/bionic64"
    config.vm.provider "virtualbox" do |vb|
     vb.name = "host4"
      vb.cpus = 2
      vb.memory = 3072
    end
    config.vm.hostname = "host4"
    config.vm.network "private_network", ip: "192.168.56.24"
    config.disksize.size = "30GB"
  end

  # Hostmanager plugin
  config.hostmanager.enabled = true
  config.hostmanager.manage_guest = true

  # Enable SSH Password Authentication
  config.vm.provision "shell", inline: <<-SHELL
    sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config
    sed -i 's/archive.ubuntu.com/ftp.daum.net/g' /etc/apt/sources.list
    sed -i 's/security.ubuntu.com/ftp.daum.net/g' /etc/apt/sources.list
    systemctl restart ssh
  SHELL
end

 

가상머신 생성 및 확인

vagrant up
vagrant status

 

 

가상머신 접속

vagrant ssh control

ID/PW : vagrant/vagrant

 

 

SSH 키 복사

vagrant@control~$ ssh-keygen  
vagrant@control~$ ssh-copy-id vagrant@localhost  
vagrant@control~$ ssh-copy-id vagrant@host1  
vagrant@control~$ ssh-copy-id vagrant@host2
vagrant@control~$ ssh-copy-id vagrant@host3
vagrant@control~$ ssh-copy-id vagrant@host4

 

관리노드에 ansible 설치

vagrant@control~$ sudo apt update
vagrant@control~$ sudo apt install -y software-properties-common
vagrant@control~$ sudo apt-add-repository -y -u ppa:ansible/ansible
vagrant@control~$ sudo apt install -y ansible

vagrant@control~$ sudo apt install -y python3-argcomplete
vagrant@control~$ sudo activate-global-python-argcomplete3

vagrant@control~$ sudo apt install -y ansible-lint