[1. 개요]
모두 리눅스 서버인 환경을 가정하고,
centos 에서 ansible 설치 방법을 정리한다.
전체 서버를 관리하는 서버에만 설치하며, (이하 controller)
명령을 받는 agent 역할인 서버에는 ssh-server 와 python 만 설치되어 있으면 된다.
[2. 설치 과정]
- # yum install -y epel-release
- # yum repolist
- # yum install -y ansible
- $ ansible --version
- $ ansible-playbook --version
controller 에서 각 agent 머신에 자신의 ssh-key 를 등록 할 필요가 없다.
agent 접속을 위한 ssh 계정과 패스워드를 작성하기 때문이다.
[3. ansible 구조]
ansible 실행을 위해서는 크게 두가지 파일이 필요하다.
- inventory 파일
=> agent 접속을 위한 ssh 계정 및 패스워드를 기입한다.
=> playbook 에서 사용 할 변수 등을 작성 할 수 있다.
=> /etc/ansible/hosts 에 작성해도 되지만, 별도 파일에 작성하는 편이 좋다. - playbook 파일
=> 각 서버에서 해야 할 작업등을 작성한다.
=> .yml 파일 형태로 작성해야 한다.
[4. inventory 파일]
host group 단위로 접속 정보 및 playbook 에서 사용 할 변수를 지정 할 수 있다.
[5. playbook 파일]
yml 파일 형식으로 작성하며, host group 단위로 작성하는 편이 좋다.
- 배열 형식으로 작성 할 수 있다.
- hosts
=> inventory 파일에서 작성한 host group 이름을 적는다. - vars
=> 이번 inventory 파일에서만 유효한 변수등을 작성한다. - task:
=> array 형태로 작성 한다.
=> 각 서버에서 실행 할 작업을 명시한다.
=> ansible 에서 제공하는 모듈을 이용하여 작성한다.
파일 동작 설명
myhosts 에 명시한 모든 서버들을 대상으로 disk 사용량을 관찰한다.
- /data, /log, /auth 로 마운트 된 파일시스템이 대상
- /data 에 마운트 된 디스크 사용량이 85% 이상인 경우와
- /log 또는 /auth 에 마운트 된 디스크 사용량이 95% 이상인 경우
- 작업자에게 알람을 보낸다.
=> 이 작업은 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 |