본문 바로가기

Ansible

Ansible 설치 및 기본 개념

[1. 개요]

모두 리눅스 서버인 환경을 가정하고,

centos 에서 ansible 설치 방법을 정리한다.

 

전체 서버를 관리하는 서버에만 설치하며, (이하 controller)

명령을 받는 agent 역할인 서버에는 ssh-server 와 python 만 설치되어 있으면 된다.


[2. 설치 과정]

  1. # yum install -y epel-release
  2. # yum repolist
  3. # yum install -y ansible
  4. $ ansible --version
  5. $ ansible-playbook --version

controller 에서 각 agent 머신에 자신의 ssh-key 를 등록 할 필요가 없다.

agent 접속을 위한 ssh 계정과 패스워드를 작성하기 때문이다.


[3. ansible 구조]

ansible 실행을 위해서는 크게 두가지 파일이 필요하다.

  1. inventory 파일
    => agent 접속을 위한 ssh 계정 및 패스워드를 기입한다.
    => playbook 에서 사용 할 변수 등을 작성 할 수 있다.
    => /etc/ansible/hosts 에 작성해도 되지만, 별도 파일에 작성하는 편이 좋다.

  2. playbook 파일
    => 각 서버에서 해야 할 작업등을 작성한다.
    => .yml 파일 형태로 작성해야 한다.

[4. inventory 파일]

host group 단위로 접속 정보 및 playbook 에서 사용 할 변수를 지정 할 수 있다.


[5. playbook 파일]

yml 파일 형식으로 작성하며, host group 단위로 작성하는 편이 좋다.

  • 배열 형식으로 작성 할 수 있다.
  • hosts
    => inventory 파일에서 작성한 host group 이름을 적는다.

  • vars
    => 이번 inventory 파일에서만 유효한 변수등을 작성한다.

  • task:
    => array 형태로 작성 한다.
    => 각 서버에서 실행 할 작업을 명시한다.
    => ansible 에서 제공하는 모듈을 이용하여 작성한다.

파일 동작 설명

myhosts 에 명시한 모든 서버들을 대상으로 disk 사용량을 관찰한다.

  1. /data, /log, /auth 로 마운트 된 파일시스템이 대상
  2. /data 에 마운트 된 디스크 사용량이 85% 이상인 경우와
  3. /log 또는 /auth 에 마운트 된 디스크 사용량이 95% 이상인 경우
  4. 작업자에게 알람을 보낸다.
    => 이 작업은 playbook 을 실행 한 컨트롤러 서버에서만 실행 된다.

변수 사용 및 배열에 값을 append 하는 방법과

변수의 자료형 변환, with_items 를 통한 반복문 사용 등을 확인 할 수 있다.


[6. ansible 실행]

ansible-playbook -i /home/my/myhosts /home/my/diskcheck.yml

 

ansible-playbook 실행 시 아래와 같이 로그 출력 단계를 명시 할 수 있다.

  • -v
  • -vv
  • -vvv

'Ansible' 카테고리의 다른 글

Ansible - fetch vs copy & synchronize  (0) 2023.01.07
Ansible - block ~ rescue / always  (0) 2023.01.07