메뉴 닫기

Ansible 기본 설정 및 패스워드 변경 주기 설정

” Ansible ” 


“모두를 위한 자동화” 사용자의 역할이나 자동화 목표가 무엇이든 Ansible은 그 가치를 보여주며 팀의 효율성을 이끌어내는데 도움을 줄 수 있습니다. 오픈소스를 기반으로 구축된 Red Hat® Ansible® Automation Platform은 조직에 전체 라이프사이클 지원을 제공하는 강력한 서브스크립션 도구입니다.
<내용 출처 : 앤서블 공식 홈페이지>

 

이 포스팅은 앤서블 설치 및 응용에 대한 내용을 다루고 있습니다.

앤서블이 설치된 제어 서버를 통해서, 관리 노드 서버들의 패스워드 주기 변경을 실행해보겠습니다.

이 포스팅은 해당 패키지 설치에 대해 설명합니다.

[개  요]

✅종    류 : 엔지니어링 
✅난이도 : ⭐ 
✅내용요약 : Ansible를 이용한 관리노드의 패스워드 주기 변경
✅테스트 환경 : Ubuntu 22.04 제어서버 1대 + Ubuntu 22.04 관리노드 2대
✅관련직무 : 시스템&클라우드 엔지니어

[기초이론&용어설명]

  • 앤서블 : 오픈소스 IT 자동화 도구
  • 제어 서버: 앤서블이 설치되는 서버
  • 관리 노드: 앤서블이 제어하는 원격 시스템 또는 호스트
  • 인벤토리: 제어 서버가 제어하는 관리 노드의 목록을 나열한 파일
  • 플레이북: 관리 노드에서 수행할 작업들을 YAML 문법을 이용해 순서대로 작성해놓은 파일

[관련 기술자료]

Ansible

” Ansible을 이용한 패스워드 변경 주기 설정” 


1️⃣ Ansible 설치 및 기본 설정

1) 제어 서버에 앤서블 설치

# apt upate

# apt install software-properties-common

# add-apt-repository –yes –update ppa:ansible/ansible

# apt install ansible

 

2) 앤서블 설치 후 버전 확인

# ansible –version

ansible 버전

 

3)  /etc/hosts 설정 

10.101.0.16 ansible-node1

10.101.0.9 ansible-node2

제어서버가 관리노드에 호스트명으로 접근할 수 있도록 /etc/hosts 파일을 설정합니다.

 

4) Ansible 작업 수행할 디렉토리 생성 후 inventory 파일 생성 

my-ansible 이라는 디렉토리를 만든 후, 해당 위치에서 inventory 파일을 생성하여 호스트 목록을 작성합니다.

해당 파일을 생성함으로써 제어서버가 관리노드에 IP로 접근할 수 있게 됩니다.

#mkdir my-ansible

#cd my-ansible


#vi inventory

ansible-node1
ansible-node2

 

5) Ansible 환경 설정 파일 생성

ansible 작업 디렉토리에 ansible.cfg 파일을 생성하면 앤서블 설정을 다양하게 적용할 수 있습니다.

우선 기본적인 실행을 위해 다음과 같이 구성했습니다.

#vi ansible.cfg

[defaults]
inventory = ./inventory
remote-user = root
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false

 

6) SSH 키 생성 및 복사

우선 제어 서버에서 ssh 키를 생성합니다.

#ssh-keygen

ansible ssh-keygen

위와 같이 키가 생성되었다면, 제어노드로 key를 복사합니다. 

해당 작업을 실시하면 ssh접속할때 패스워드를 입력하지 않아도 접근이 가능합니다.

# ssh-copy-id root@제어노드 IP 

ansible ssh-copy-id

ansible-node1 (관리 노드 서버)에 ssh키를 복사한 화면입니다. 다른 노드 서버도 동일하게 ssh키를 복사해줍니다.

 

 다음은 ping 테스트를 실시해보겠습니다.

해당 테스트 수행 시 SUCCESS 가 뜬다면 제어서버 <-> 관리노드 간 통신이 정상적으로 이뤄지는 것입니다.

# ansible -m ping 관리노드 host명

ansible ping

 

2️⃣ 패스워드 변경주기 설정 

1) 작업을 수행할 디렉토리를 생성합니다.

mkdir ansible-password-set

원활한 이해를 위해, 디렉토리명은 ansible-password-set 으로 지었습니다. 실제 작업수행할 디렉토리명은 이보다 간소화해서 쓰셔도 됩니다.

 

2) 환경설정 파일, 인벤토리 파일 설정

저의 경우, 위에서 작업한 ansible.cfg 파일과 inventory 파일을 해당 디렉토리로 복사했습니다.

실제 작업하실때는 각자 상황에 맞게 파일을 설정해주시면 됩니다.

#cp /my-ansible/ansible.cfg  /my-ansible/inventory  /ansible-password-set/

 

3) yml 파일 생성

우선 vars_maxdays.yml 파일을 생성 후 파일내용을 다음과 같이 설정합니다.

/ansible-password-set/vars_maxdays.yml

Userinfo:
  – username: ansible
    maxdays: 90
  – username: stack
    maxdays: 90

Userinfo 라는 사전형 변수를 작성하였으며, 해당 변수에는 username과 maxdays라는 변수가 정의되어 있습니다.

파일 설정 시, 패스워드 최대 변경 주기를 90일로 설정했습니다.

 

다음은 메인 플레이북을 작성해보겠습니다.

/ansible-password-set/set_change_password.yml


– hosts: all
vars_files: vars_maxdays.yml
tasks:
– name: Change Password Maxdays
ansible.builtin.user:
name: “{{ item.username }}”
password_expire_max: “{{ item.maxdays }}”
loop: “{{ Userinfo }}”

-hosts : 관리노드를 설정합니다. 해당 테스트에선 all로 설정했습니다.

-vars_files : 위에서 생성한 vars_maxdays.yml 라는 변수 정의 파일을 포함하도록 합니다.

-tasks : 패스워드 최대 변경 주기를 설정합니다.

-ansible.builtin.user : 해당 모듈의 password_expire_max 파라미터를 이용하여 패스워드 변경 주기를 설정할 수 있습니다.

 

4) 플레이북 문법 체크 후 실행

작성한 플레이북의 문법을 체크합니다.

# ansible-playbook –syntax-check set_change_password.yml

ansible playbook syntax check

 

check 옵션을 추가하여 플레이북 실행 리뷰를 진행합니다.

# ansible-playbook –check set_change_password.yml

ansible playbook check

 

위 작업 시행 후 특별한 문제가 없으면 플레이북을 실행합니다.

# ansible-playbook set_change_password.yml

ansible playbook 실행

해당 작업을 통해 각 관리노드의 ansible 계정, stack 계정의 패스워드 최대 변경 주기가 90일로 설정되었습니다.

 

3️⃣ 관리노드 확인

관리노드에 접속하여 Ansible 제어서버에서 작업한 대로 패스워드 변경주기가 90일로 설정되었는지 확인해보겠습니다.

각 관리노드 접속 시, ansibe 계정, stack 계정을 생성하지 않은 상태에서 ansible 작업 시행 후 관리노드에 접속했습니다.

– ansible-node1

# ll /home/

# chage -l ansible

home 디렉토리 자동 생성
home 디렉토리 자동 생성
chage -l
계정 패스워드 주기 변경

ansible-node1 에서 ansible계정과 stack계정을 따로 생성하지 않았음에도 자동으로 계정이 생성되었으며, 패스워드 변경주기가 90일로 설정되었습니다.

( *ansible-node2 역시 동일하게 작업이 적용되었습니다. )

Ansible 이 설치된 제어 서버를 통해서, 관리 노드 서버들의 패스워드 주기 변경을 실행해보았습니다.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x