ansible은 구성 관리 및 오케스트레이션을 수행하는 오픈소스 유틸리티 입니다. 수동으로 터미널 기반으로 하던 작업들을 일련의 작업규칙서(플레이북)으로 만들어 자동화 시킬수 있습니다.
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 설정파일의 경로는 아래와 같다.
위의 방법중에 하나로 사용할 수 있으며 우선순위는 첫번째 방법이 가장 높다. 권장되는 실무 사용법은 2번 항목인 현재 디렉토리 별 설정을 권장한다.
현재 사용중인 설정파일 경로를 확인하려면 아래와 같이 확인 가능하다.
root@debian:~# ansible --version ansible 2.2.1.0 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides
Adhoc 이라는 의미는 임시적으로 수행하는 의미로 생각하면 될것 같다. ansible의 playbook 을 작성하여 수행하는것이 아니라 임시적으로나 또는 특별하게 어떤 작업을 수행하기 위해서 사용할 수 있는 실행방법이라고 할 수 있다.
명령어 사용법은 아래와 같다.
ansible host-pattern -m module [-a 'module arguments'] -i inventory # 예) [root@ceph1 ceph-ansible]# ansible -a "reboot" -i inventory all
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 ...