클라우드

Ansible - 정의 및 설치하기

hex2.1 2024. 3. 5. 16:26

 

 

Ansible




 

 

IaC 도구란?

 

 

  • Infrastructure as a Code 의 약자로  IT 인프라스트럭처를 코드를 통해 정의하고 관리하는 개념을 뜻한다
  • 수동으로 인프라를 구축하고 관리하는 대신 코드를 사용하여 인프라를 정의하고 프로비저닝( 필요한 하드우에어, 소프트웨어, 및 기타 리소스를 할당하고 설정하여 시스템을 사용할 수 있도록 하는 작업) 하는 것이다 
  • IaC를 사용하면 시스템 및 인프라스터럭처의 설정, 배포 및 관리를 자동화 할 수 있다
  • Ansible, Terraform, Chef, Puppet과 같은 다양한 오픈 소스 도구들도 IaC 구현에 사용된다  

 

 

 

 

IaC 실현도구의 종류 및 비교

 

 

 

 

Ansible

 

  • Ansible은 IaC도구 중에서 대표적이고 널리 사용되는 도구이다 
  • Ansible은 Red Hat 에서 개발한 오픈 소스 도구로 서버 설정 관리, 배포, 작업 자동화를 위한 강력한 툴로 알려져있다 

 

 

 

 

 

실습 - Ansible 설치 및 KVM을 활용한 실습

 

 

  • Centos7 버전에 KVM(libvirtd)를 설치하여 ansible을 활용한 실습을 해보겠다 

 

 

[기본 환경 설정 및 KVM 설치하기]

 

  • 방화벽 및 SElinux 중지

[root@localhost ~]# systemctl disable firewalld --now

[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

 

  • 네트워크 매니저 중지(network 서비스로 네트워크 관리 -> cli 관리)

[root@localhost ~]# systemctl disable NetworkManager --now

 

  • 기본적으로 필요한 패키지 설치

[root@localhost ~]# yum -y install curl git wget vim && echo "alias vi='vim'" >> ~/.bashrc && yum -y install epel-release && yum -y install ansible && ansible --version && echo

[root@localhost ~]# yum -y update

 

  • runlevel 3 으로 전환 뒤, 재부팅

[root@localhost ~]# systemctl set-default multi-user.target && reboot

 

  • kvm 관련 패키지들 설치 및 설정

[root@localhost ~]# yum -y install libvirt qemu-kvm virt-install virt-manager libguestfs-tools

 

[root@localhost ~]# vi /etc/libvirt/qemu.conf

root 검색하여

user = "root"

group = "root"

의 가장 앞에 있는 “#” 를 제거하여 kvm 실행은 root 또는 root 그룹사용자들만 가능하도록 한다

[root@localhost ~]# systemctl restart libvirtd

[root@localhost ~]# systemctl enable libvirtd

 

 

 

  • VM에서 사용될 가상머신 이미지 생성하기 

[root@localhost ~]# yum -y install libguestfs-xfs

[root@localhost ~]# cd

[root@localhost ~]# mkdir simpleansible ; cd simpleansible

[root@localhost simpleansible]# virt-builder centos-7.5 --format qcow2 --size 10G -o centos01.qcow2 --root-password password:test123   # VM을 위한 볼륨 생성

https://lh7-us.googleusercontent.com/l_ZTpuH7SkEWjwrueV5Lom8uMldT9uO5mRXuyVGxLbWfMxO3ll2lTTzE353xyVDJbvcKRMo6PgK2WrYUz4yLXqZwb-Lr3DRss0abNqPzQuwLj2dnNtgwPM2DRH0YBl0fWqJsXJwfgapF1S9ZAwdQeoKtVPYpihaBAfHHjfCZ91rz0M3uCullVu0fyr2q7Q

[root@localhost simpleansible]# cp centos01.qcow2 centos02.qcow2

[root@localhost simpleansible]# cp centos01.qcow2 centos03.qcow2

[root@localhost simpleansible]# ls

centos01.qcow2  centos02.qcow2  centos03.qcow2

[root@localhost simpleansible]#

 

 

  • 인스턴스 설치

[root@localhost simpleansible]# virt-install --name centos01 --ram 1024 --vcpus 1 --disk path=/root/simpleansible/centos01.qcow2 --graphics none --console pty --serial pty --import &

[root@localhost simpleansible]# virt-install --name centos02 --ram 1024 --vcpus 1 --disk path=/root/simpleansible/centos02.qcow2 --graphics none --console pty --serial pty --import &

[root@localhost simpleansible]# virt-install --name centos03 --ram 1024 --vcpus 1 --disk path=/root/simpleansible/centos03.qcow2 --graphics none --console pty --serial pty --import &

[root@localhost simpleansible]# virsh list --all #VM 목록 확인하기

Id    Name                           State

4     centos01                       running

5     centos02                       running

6     centos03                       running

 

 

 

 

  • 가상머신 autostart 셋팅 해두기

 

[root@localhost simpleansible]# virsh autostart centos01

Domain centos01 marked as autostarted

[root@localhost simpleansible]# virsh autostart centos02

Domain centos02 marked as autostarted

[root@localhost simpleansible]# virsh autostart centos03

Domain centos03 marked as autostarted

 

 

  •  VM IP 주소 확인하기

 

[root@localhost simpleansible]# virsh domifaddr centos01

Name       MAC address          Protocol     Address

vnet0      52:54:00:b8:1c:f7    ipv4         192.168.122.81/24

 

[root@localhost simpleansible]# virsh domifaddr centos02

Name       MAC address          Protocol     Address

vnet1      52:54:00:84:55:21    ipv4         192.168.122.217/24

 

[root@localhost simpleansible]# virsh domifaddr centos03

Name       MAC address          Protocol     Address

vnet2      52:54:00:fd:c7:76    ipv4         192.168.122.51/24