카테고리 없음
ansible 설치 및 사용 (feat. shell, copy CLI)
크리두
2020. 2. 5. 16:40
반응형
- Ansible???
Ansible은 오픈 소스 기반의 자동화 관리 도구이다. python을 기반으로 동작하는 모듈로 구성되어 있고, ansible-playbook은 YAML 포맷 형태의 파일을 통해 실행이 가능하다. SSH 기반으로 Target Host에 Agentless 방식으로 자동화 구성 관리한다. 다양한 서버, 네트워크, 스토리지, 가상화 솔루션들을 코드 기반으로 관리할 수 있는 편의성이 있다.
- 구조
- Control Node: 중앙 제어 노드이며, Ansible이 설치가 되는 Node이다. Windows의 경우 설치가 불가능 하며 winrm을 사용해야 한다.
- Managed Node: Ansible Control Node에 관리가 되는 대상 서버이다. hosts에 등록된 대상이다.
- Inventory: Managed Node가 등록되어 있는 목록이다. IP, Group으로 관리 할 수 있으며, default 로 /etc/ansible/hosts 파일을 사용한다.
- Modules: Ansible에서 제공하는 실행 단위 모듈이다.
- Tasks: Modules 의 집합으로 작업 단위이다.
- Playbooks: 계획된 작업을 순서대로 실행하기 위해 작성하는 YAML 파일이다.
- Ansible Contorl Node 에서 SSH 통해서 Managed Node 에 배포
OS : CentOS 7.6
미리 설치해야할 사항
- python 2.6 또는 2.7과 package manager 인 pip 가 설치되어 있어야 한다.
- RHEL/CentOS 에 파이썬 패키지 매니저(python package manager) python-pip 설치하기 참고
- git 이 설치되어 있어야 한다.
- RHEL/CentOS 에 git 2 설치하기
- ansible 1.3 이상부터는 가능하면 OpenSSH 의 python 구현물인 paramiko 를 사용하지 않고 pure OpenSSH 를 사용한다. 이 경우 OpenSSH 가 ControlPersist 를 지원해야 하지만 RHEL/CentOS 6 에 탑재된 openssh 는 버전이 낮으므로 계속 paramiko 를 사용해야 한다. (RHEL 7 부터는 문제 없음)
ansible 설치
yum install ansible -y
hosts 설정
/etc/ansible/hosts 파일에 등록
- hosts 파일에 자기가 관리할 서버들을 목록을 만든다
[example]
xxx.xxx.xxx.154
xxx.xxx.xxx.159
xxx.xxx.xxx.169
위와 같이 목록을 만들게 되면 example을 통해 3개 서버에 ansible 명령어를 사용할 수 있다.
목록을 만들었다면 목록들로 이루어진 구성도 가능하다.
[full:children]
example1
example2
위와 같이 example1, example2 목록이 존재하는데 목록을 한번에 다 사용하고 싶을 때는 [full:childre]으로 묶을 수 있다.
* 참고 : full이라는 목록은 사용 못한다.
ansible CLI (쉘 명령어)
ansible full -m shell -o -a "ls -al /cache1 | grep 1.txt"|awk '{print$1,$13,$14,$15}'
ansible 명령어 다음에 hosts에 등록하였던 목록을 넣으면 쉘 명령어를 보낼 수 있다.
ansible CLI (파일 copy)
ansible 11st -m copy -o -a "src=/root/log.conf dest=/root/log.conf"
CLI 형태로 파일 목사 명령어를 날릴 수 있다.
간단하게 설치와 설정법, 그리고 기본적인 명령어들을 정리해봤다.
필요에 따라서 더 간편하게 여러 가지 명령어들을 사용할 수 있는 방법이 있다.
ansible-playbook 명령어로 yml 포맷의 파일을 이용하여 다양한 관리를 할 수 있다.
반응형