0부터 시작하는 ANSIBLE 공부 - 시작하기 전에

Jaehong Lee·2022년 9월 20일
post-thumbnail

1. 시작하기 전에

Vagrant 와 관련하여

  • Vagrantfile 은 베이그런트 프로비저닝을 위한 정보를 담고 있는 메인 파일 이다. 해당 파일이 있는 경로에서 vagrant up 명령을 통해 Vagrantfile 에 정의된 것들을 자동으로 구성한다

    • 비슷한 것으로 aws 에서는 cloud formation, openstack 에서는 heat, 그외로 Terraform 이 있다. 이러한 것들은 프로비저닝 + 오케스트레이션을 위한 도구이다
    • 허나, Ansible 의 경우 자동화 도구라고 한다. Ansible 과 Vagrant 를 연계하여 생성된 인스턴스들의 Ip 를 Ansible 에 등록하여, Key-Pair or password 를 통해 Ansible 에서 연결된 인스턴스들을 한 번에 관리할 수 있다
  • Vagrant 는 ruby 를 사용한다

  • Vagrantfile 의 하나의 작업은 do ~ end 로 구분된다

    • provision 을 통해 수정된 내용만 적용하게 할 수 있다

Cloud 환경 구성 도구 & 관리 도구

  • AWS / GCP 등의 퍼블릭 클라우드는 접속시 서비스를 이용할 수 있는 Master Node 역활의 VM 을 사용자에게 제공해준다. AWS 의 경우 AMAZON Linux 로 이루어진 VM 을 제공해준다

  • OpenStack 에서 magnum 은 Docker Swarm & K8S Cluster 를 제공하는 서비스이다

    • Nova 서비스가 Heat 를 읽고, 이에 맞춰서 구성해준다
  • Shell 은 소수점 연산이 안된다. 멀티 쓰레드도 지원하지 않는다. 허나, Python 은 이러한 것을 다 지원한다. Python 은 병렬 처리가 가능하다. Shell 은 하나 처리하고, 다음 하나를 처리한다. 따라서, Python 으로 처리하는 것이 처리 속도가 빠르다

  • Ansible 은 멱등성을 보장하기에 특정 상태를 보장한다. 따라서 이미 특정 상태인 것은 Skip 이 가능하다. 설치 과정에서 이미 설치되있다면, 해당 과정을 Skip 하는 것이다

  • Ansible 을 통해 전체 관리가 가능하다. Ansible 은 프로비저닝의 기능이 없기에 프로비저닝 도구가 따로 필요하다

  • 무언가를 만들기 위해서는 Hyper Visor 가 필요하다. Heat 역시 OpenStack 의 Nova 서비스를 이용해 Hyper Visor 와 연계해야 한다. VAGRANT 역시 Hyper Visor 가 필요하다. 대표적으로 Virtual Box / KVM / VMware 등이 있다


2. Ansible 구성 요소

구성 요소

  1. Ansible 본체 - Ansible 소프트 웨어 자체

  2. 인벤토리 - 관리 대상을 작성한 리스트, 목록 이다. 기본적으로는 /etc/ansible/hosts 를 이용하지만, 상세한 관리를 위해서는 별도로 구분하여 파일로 작성한다. ex) seoul.lst, busan.lst

  3. 모듈 - 패키지 설치, 사용자 관리, 파일 및 디렉토리 관리등을 명령어로 전달하는 것이 아니라 모듈을 통해 관리한다. 예를 들어 yum -y install httpd 와 같은 경우 -m yum 을 통해 yum 모듈을 불러온다

  4. 플레이북 - 도커 컨테이너 생성시 docker container run 을 이용하면 불편함이 많아 이를 compose 나 stack 을 이용했던 것처럼 파일 형태로 관리를 위한 내역을 작성하고, 이를 실행한다

결국 Ansible 을 이용하여 Node 를 관리할 때에는 playbook 을 작성하는 것이 대부분 할 일이다

profile
멋진 엔지니어가 될 때까지

0개의 댓글