앤서블을 어떻게 활용할 수 있나요?
앤서블을 활용하여 얼마나 업무가 단순해지고 편리해질 수 있는지 예제를 통해 알아보겠습니다.
Ansible-Server에서 Ansible-Nodes에 다음과 같은 내용을 요청해봅시다.
- uptime 확인하기
- 디스크 용량 확인하기
- 메모리 상태 확인하기
- 새로운 유저 만들기
- 파일 전송하기
- 서비스 설치
1. uptime 확인하기
uptime은 동작 중이면서 사용 가능한 기계(일반적으로 컴퓨터)의 시간을 백분율로 나타낸 시스템의 신뢰성의 측정입니다. (uptime의 반의어는 downtime입니다.)
- shell 모듈 실행
- -a : 모듈에 대한 argument
ansible all -m shell -a "uptime" -k
등록된 3개의 관리 노드의 17시간 34분에 해당하는 uptime이 보여집니다.
2. 디스크 용량 확인하기
- df -h : 디스크의 용량을 확인하는 명령어. -h는 human readable의 약자
ansible all -m shell -a "df -h" -k
3. 메모리 상태 확인하기
각 노드에 대한 메모리 현재 상태, free 영역, shared 영역 등이 표시됩니다.
ansible all -m shell -a "free -h" -k
4. 새로운 유저 만들기
ansible all -m user -a "name=greta password=1234" -k
greta 유저 생성에 관한 데이터가 입력되었습니다. 이 정보들을 Ansible-Node1에 접속하여 확인해봅시다. 유저가 생성된 것을 확인하려면 /etc/passwd를 확인합니다.
ssh root@192.168.200.61 cat /etc/passwd
greta 유저가 생성된 것을 볼 수 있습니다. 하지만 바로 로그인은 불가능합니다. 왜냐하면 유저 생성시 password가 암호화도 되지 않고 중앙에서 입력했기 때문입니다. 실제로 Node1에서 패스워드 1234를 입력하여 로그인에 성공하려면, 유저 생성시 password 1234를 암호화하여 입력해주어야 합니다.
5. 파일 전송하기
실무에서는 특정 파일을 모든 서버들에 전달해야 할 경우가 빈번하게 발생합니다. 이 때 copy 모듈을 사용하여 파일을 쉽게 전달하고 받을 수 있습니다.
전송할 파일을 생성합니다.
touch greta.file ls -rlt
전달하고자 하는 파일을 관리 노드에 전달합니다. 현재 진행되는 내용과 결과값이 보여집니다.
ansible nginx -m copy -a "src=./greta.file dest=/tmp/" -k
Node1에 접속하여 확인해봅니다.
ssh root@192.168.200.61 ls -rlt /tmp
6. 서비스 설치
여러 노드들에 특정 서비스를 설치하고 기동할 필요가 있기 때문에 원격지에서 서비스 설치 명령을 보냅니다.
웹 서비스를 하는 apache 데몬을 설치해봅시다.
그 전에 각 노드들에게 DNS 주소를 입력해야 합니다. 그러기 위해서는 /etc/resolv.conf 파일을 앞서 5. 파일 전송에서 배운 방법으로 전송해봅시다.
ansible nginx -m copy -a "src=/etc/resolv.conf dest=/etc/resolv.conf" -k
apache 데몬을 설치합니다.
ansible nginx -m apt -a "name=apache2 state=present" -k
Node1에 접속해서 서비스를 확인해봅니다.
ssh root@192.168.200.61 apt list --installed | grep apache2
'IaC > Ansible 기초 실습' 카테고리의 다른 글
| 기초 실습 5 | Ansible 활용 팁 : 에러 메세지 (0) | 2021.08.04 |
|---|---|
| 기초 실습 2 | Ansible 구성 파일, 옵션 (0) | 2021.08.04 |
| 기초 실습 1 | Ansible 코어 설치 및 확인 (0) | 2021.08.04 |