Ansible?
앤서블은 오픈소스 소프트웨어 프로비저닝, 구성 관리 도구이다. 유닉스 계열 시스템에서 실행됩니다. 플레이북이라는 것에 실행할 구성을 정의 및 선언해놓으면, 필요할 때 마다 그 플레이북을 자동으로 실행시킬 수 있습니다.
리눅스 서버 100대의 root 계정 비밀번호를 바꿔야 한다면 어떻게 해야 할까? 기존에는 쉘스크립트를 통해 100번 실행시켜 바꿨을 것이다.
Ansible을 사용하면 마스터 노드를 통해 100대의 노드에 비밀번호 변경 작업을 한 플레이북의 실행으로 끝낼 수 있다. 이것이 Ansible의 위력이라고 볼 수있다.
실습 환경 구성 리소스
앤서블 마스터 노드(퍼블릭 서브넷) | IP - 43.201.58.59 |
웹서버 1번(프라이빗 서브넷) | IP - 10.192.20.47 |
WAS 서버 1번(프라이빗 서브넷) | IP - 10.192.20.61 |
DB 서버 1번(프라이빗 서브넷) | IP - 10.192.20.12 |
실습 환경의 디테일한 구성은 다음 포스팅을 참조하라
https://webhacking-noriter.tistory.com/63
[IaC] Ansible 실습을 위한 AWS Bastion Host 환경 구성
Bastion Host AWS 리소스 구성 후 관리자가 Private Subnet에 있는 리소스에 접근을 해야하는 경우가 생길 수 있다. 이럴 때 외부에서 직접적인 접근이 불가능 하기 때문에 Public Subnet에 Bastion Host를 구성
webhacking-noriter.tistory.com
이제 퍼블릭 서브넷의 앤서블 마스터 노드(Cent OS 7)에 앤서블을 설치하자.
yum install -y ansible
설치가 완료되었다면, 다음 명령어를 입력해 정상적으로 설치되었는지 확인
sudo ansible --version
아래와 같이 버전이 나온다면 설치는 끝
우린 앤서블을 통해 WEB서버 1개, WAS 서버 1개, DB 서버 1개 -- 총 3개의 서버를 자동 관리할 것이다.
그러므로 우리의 타깃 서버는 다음 3개의 IP이다. IP로 작업을 하다보면 누가 누군지 모르기 때문에
/etc/hosts에 먼저 매핑을 해주겠다.
IP - 10.192.20.47 |
IP - 10.192.20.61 |
IP - 10.192.20.12 |
/etc/hosts 파일에 다음과 같이 입력하여, 각각의 관리해야할 리소스들을 매핑해주었다.
다음은 /etc/ansible/hosts 파일을 정의할 차례이다.
이 파일에는 관리를 위한 그룹을 지정할 수 있다.
현재 나는 웹서버 1개, WAS 서버 1개, DB 서버 1개를 각각 [WEB], [WAS], [DB]라는 그룹에 넣어준것이다.
만약 현재 인프라에서 웹서버가 1개 더 추가된다면, 해당 IP를 /etc/hosts 에 WEB02로 매핑한다음
/etc/ansible/hosts 파일에 [WEB] 그룹에 추가해준다면 앤서블로 추가된 웹서버까지 한번에 관리할 수 있을 것이다.
이제 마스터 노드에서 각각 노드 서버들로의 ssh 자동 로그인을 위해서 비대칭 키를 생성한다. 해당 비대칭키를 타깃 노드로 복사해서 앤서블 마스터 노드가 각각 관리할 타깃 노드에 자동 로그인을 할 수 있게 한다.
마스터 노드에서 다음 명령어를 사용하여 비대칭 키를 생성한다. ( 명령어 입력후 무조건 엔터만 )
ssh-keygen -t rsa -b 2048
명령어 실행 후 ~/.ssh 경로에 id_rsa.pub 이라는 공개 키가 생겼을 것이다. 해당 키를 타깃 노드로 복사해준다.
ssh-copy-id -i id_rsa.pub WEB01
WAS01 , DB01 에도 똑같이 작업 해준다.
플레이북 정의 - change_password.yml
task 1번 - /etc/ansible/hosts 에 [WEB] 그룹에 존재하는 타깃 노드들의 root 유저의 password 를 qwe123123으로 변경
task 2번 - /etc/ansible/hosts 에 [WAS] 그룹에 존재하는 타깃 노드들의 root 유저의 password를 qwe321321로 변경
저장 후에 앤서블을 실행 시킨다.
ansible-playbook change_password.yml
아래 처럼 두개의 타깃 노드에서 changed가 정상적으로 실행된 것을 확인할 수 있다.
'IaC' 카테고리의 다른 글
[IaC] Ansible 실습을 위한 AWS Bastion Host 환경 구성 (0) | 2022.10.11 |
---|