[사전 조건]

VirtualBox 설치

Vagrant 설치

 

[개요]

Ansible을 다시 공부하면서 환경을 먼저 구성해야 했다. 클라우드를 이용할 수도 있으나 비용 때문에 로컬에서 VM 환경을 세팅했다.

다양하게 세팅하는 방법이 있으나 Vagrant가 좀 더 효율적으로 보여 Vagrant를 이용해서 세팅했다.

일단 여러개의 VM은 필요없으나 Ansible Server 1대, Client 1대로 구축하되 확장성(여러개로 확장)을 고려해서 스크립트를 구성했다.

 

[스크립트]

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

Vagrant.configure("2") do |config|

    # M: Master Node
    # W: Worker Node
    M = 1
    W = 1
    
    (1..W).each do |w|
        config.vm.define "ansible-client00#{w}" do |cfg|
            cfg.vm.box = "bento/ubuntu-22.04"
            cfg.vm.provider "virtualbox" do |vb|
                vb.name = "ansible-client00#{w}"
                vb.memory = "1024"
                vb.cpus = 1
            end
            cfg.vm.host_name = "ansible-client00#{w}"
            cfg.vm.network "private_network", ip: "192.168.1.#{w}"
            cfg.vm.network "forwarded_port", guest: 22, host: "6000#{w}", auto_correct: true, id: "ssh"
            cfg.vm.network "forwarded_port", guest: 80, host: "6008#{w}", auto_correct: true
        end
    end

    #ansible-server
    (1..M).each do |m|
        config.vm.define "ansible-server#{m}" do |cfg|
            cfg.vm.box = "bento/ubuntu-22.04"
            cfg.vm.provider "virtualbox" do |vb|
                vb.name="ansible-server#{m}"
                vb.memory = "1024"
                vb.cpus = 2
            end
            cfg.vm.host_name = "ansible-server#{m}"
            cfg.vm.network "private_network", ip: "192.168.1.#{m}0"
            cfg.vm.network "forwarded_port", guest: 22, host: "600#{m}0", auto_correct: true, id: "ssh"
            # cfg.vm.synced_folder "../shared_data", "/shared_data", disabled: true
            cfg.vm.provision "shell", inline: "apt update"
            cfg.vm.provision "shell", inline: "apt install software-properties-common"
            cfg.vm.provision "shell", inline: "add-apt-repository --yes --update ppa:ansible/ansible"
            cfg.vm.provision "shell", inline: "apt install ansible -y"
        end
    end
end
  • Vagrant 는 루비 언어 문법을 따른다. 지금 당장 공부할 필요는 없다.
  • 서버와 클라이언트를 분리해서 스크립트를 구성(do 문)해서 위의 M(마스터), W(워커) 수를 설정해주면 해당 수에 따라서 각각 생성되도록 스크립트를 구성했다.
  • Ansible은 서버에만 설치하면 되므로 #ansible-server 하위에 cfg.vm.provision 명령어로 Ansible을 설치했다.

 

해당 스크립트를 기준으로 VM을 구성하려면?

Vagrant up

명령어로 구성하면 된다.

참고로 github에 공개했으니 궁금하시면 해당 github를 참고해 주세요.

https://github.com/gblee87/ansible-study

+ Recent posts