목차

Ansible

Ansible 소개

Ansible 이란

ansible은 구성 관리 및 오케스트레이션을 수행하는 오픈소스 유틸리티 입니다. 수동으로 터미널 기반으로 하던 작업들을 일련의 작업규칙서(플레이북)으로 만들어 자동화 시킬수 있습니다.

개념 및 아키텍처

Ansible의 한계

Ansible 인벤토리 정의

Inventory 라 함은 일반적으로 호스트를 정의한 파일을 의미한다.
호스트는 단독으로도 정의 할 수 있으며 그룹으로도 정의 가능하다.

Static Inventory

명시적으로 지정된 인벤토리를 의미하며 INI형태의 텍스트 파일로 정의되어있다.
형식은 아래와 같다.

...
[GROUP_NAME]
HOSTNAME            OPTIONS
IP
...

예제는 아래와 같다.

[webservers]
localhost                    ansible_connection=local
web1.example.com
web2.example.com:1234        ansible_connection=ssh ansible_user=ftaylor
192.168.3.7

[db-servers]
web1.example.com
db1.example.com

그룹의 상위 그룹을 정의 할 수도 있으며 규칙은 아래와 같다.

[GROUP_OF_GROUP:children]
GROUP1
GROUP2

예제는 아래와 같다.

[webservers]
localhost                    ansible_connection=local
web1.example.com
web2.example.com:1234        ansible_connection=ssh ansible_user=ftaylor
192.168.3.7

[db-servers]
web1.example.com
db1.example.com

[servers:children]
webservers
db-servers

Ansible 설정 파일

ansible 설정파일의 경로는 아래와 같다.

  1. $ANSIBLE_CONFIG # 환경 변수
  2. ./ansible.cfg # 현재 디렉토리
  3. ~/.ansible.cfg # 사용자 홈디렉토리
  4. /etc/ansible/ansible.cfg # 기본 위치

위의 방법중에 하나로 사용할 수 있으며 우선순위는 첫번째 방법이 가장 높다. 권장되는 실무 사용법은 2번 항목인 현재 디렉토리 별 설정을 권장한다.

현재 사용중인 설정파일 경로를 확인하려면 아래와 같이 확인 가능하다.

root@debian:~# ansible --version
ansible 2.2.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

Ad-Hoc 명령 실행

Adhoc 이라는 의미는 임시적으로 수행하는 의미로 생각하면 될것 같다. ansible의 playbook 을 작성하여 수행하는것이 아니라 임시적으로나 또는 특별하게 어떤 작업을 수행하기 위해서 사용할 수 있는 실행방법이라고 할 수 있다.

명령어 사용법은 아래와 같다.

ansible host-pattern -m module [-a 'module arguments'] -i inventory

# 예)
[root@ceph1 ceph-ansible]# ansible -a "reboot" -i inventory all

YAML 파일 작성

YAML 소개

ansible의 playbook은 YAML언어를 사용하여 작성합니다.

예제는 아래와 같습니다.

---
title:                    My book

author:
  first_name:             John
  last_name:              Doe
  
publish_date:             2016-01-01

chapters:
  - number:               1
    title:                Chapter 1 Title
    pages:                10
  - number:               2
    title:                Chapter 2 Title
    pages:                7
...

플레이북