” Ansible ”
“모두를 위한 자동화” – 사용자의 역할이나 자동화 목표가 무엇이든 Ansible은 그 가치를 보여주며 팀의 효율성을 이끌어내는데 도움을 줄 수 있습니다. 오픈소스를 기반으로 구축된 Red Hat® Ansible® Automation Platform은 조직에 전체 라이프사이클 지원을 제공하는 강력한 서브스크립션 도구입니다.
<내용 출처 : 앤서블 공식 홈페이지>
이 포스팅은 앤서블 설치 및 응용에 대한 내용을 다루고 있습니다.
앤서블이 설치된 제어 서버를 통해서, 관리 노드 서버들의 패스워드 주기 변경을 실행해보겠습니다.
이 포스팅은 해당 패키지 설치에 대해 설명합니다.
[개 요] 종 류 : 엔지니어링 |
[기초이론&용어설명]
|
[관련 기술자료] |
” Ansible을 이용한 패스워드 변경 주기 설정”
1️⃣ Ansible 설치 및 기본 설정
1) 제어 서버에 앤서블 설치
2) 앤서블 설치 후 버전 확인
3) /etc/hosts 설정
제어서버가 관리노드에 호스트명으로 접근할 수 있도록 /etc/hosts 파일을 설정합니다.
4) Ansible 작업 수행할 디렉토리 생성 후 inventory 파일 생성
my-ansible 이라는 디렉토리를 만든 후, 해당 위치에서 inventory 파일을 생성하여 호스트 목록을 작성합니다.
해당 파일을 생성함으로써 제어서버가 관리노드에 IP로 접근할 수 있게 됩니다.
5) Ansible 환경 설정 파일 생성
ansible 작업 디렉토리에 ansible.cfg 파일을 생성하면 앤서블 설정을 다양하게 적용할 수 있습니다.
우선 기본적인 실행을 위해 다음과 같이 구성했습니다.
6) SSH 키 생성 및 복사
우선 제어 서버에서 ssh 키를 생성합니다.
위와 같이 키가 생성되었다면, 제어노드로 key를 복사합니다.
해당 작업을 실시하면 ssh접속할때 패스워드를 입력하지 않아도 접근이 가능합니다.
ansible-node1 (관리 노드 서버)에 ssh키를 복사한 화면입니다. 다른 노드 서버도 동일하게 ssh키를 복사해줍니다.
다음은 ping 테스트를 실시해보겠습니다.
해당 테스트 수행 시 SUCCESS 가 뜬다면 제어서버 <-> 관리노드 간 통신이 정상적으로 이뤄지는 것입니다.
2️⃣ 패스워드 변경주기 설정
1) 작업을 수행할 디렉토리를 생성합니다.
원활한 이해를 위해, 디렉토리명은 ansible-password-set 으로 지었습니다. 실제 작업수행할 디렉토리명은 이보다 간소화해서 쓰셔도 됩니다.
2) 환경설정 파일, 인벤토리 파일 설정
저의 경우, 위에서 작업한 ansible.cfg 파일과 inventory 파일을 해당 디렉토리로 복사했습니다.
실제 작업하실때는 각자 상황에 맞게 파일을 설정해주시면 됩니다.
3) yml 파일 생성
우선 vars_maxdays.yml 파일을 생성 후 파일내용을 다음과 같이 설정합니다.
Userinfo 라는 사전형 변수를 작성하였으며, 해당 변수에는 username과 maxdays라는 변수가 정의되어 있습니다.
파일 설정 시, 패스워드 최대 변경 주기를 90일로 설정했습니다.
다음은 메인 플레이북을 작성해보겠습니다.
-hosts : 관리노드를 설정합니다. 해당 테스트에선 all로 설정했습니다.
-vars_files : 위에서 생성한 vars_maxdays.yml 라는 변수 정의 파일을 포함하도록 합니다.
-tasks : 패스워드 최대 변경 주기를 설정합니다.
-ansible.builtin.user : 해당 모듈의 password_expire_max 파라미터를 이용하여 패스워드 변경 주기를 설정할 수 있습니다.
4) 플레이북 문법 체크 후 실행
작성한 플레이북의 문법을 체크합니다.
check 옵션을 추가하여 플레이북 실행 리뷰를 진행합니다.
위 작업 시행 후 특별한 문제가 없으면 플레이북을 실행합니다.
해당 작업을 통해 각 관리노드의 ansible 계정, stack 계정의 패스워드 최대 변경 주기가 90일로 설정되었습니다.
3️⃣ 관리노드 확인
관리노드에 접속하여 Ansible 제어서버에서 작업한 대로 패스워드 변경주기가 90일로 설정되었는지 확인해보겠습니다.
각 관리노드 접속 시, ansibe 계정, stack 계정을 생성하지 않은 상태에서 ansible 작업 시행 후 관리노드에 접속했습니다.
– ansible-node1
ansible-node1 에서 ansible계정과 stack계정을 따로 생성하지 않았음에도 자동으로 계정이 생성되었으며, 패스워드 변경주기가 90일로 설정되었습니다.
( *ansible-node2 역시 동일하게 작업이 적용되었습니다. )
Ansible 이 설치된 제어 서버를 통해서, 관리 노드 서버들의 패스워드 주기 변경을 실행해보았습니다.