Ssoon

[ Part-2 ] 앤서블 기본 사용법 - 첫 번째 플레이북 작성하기 본문

Ansible 101 Study

[ Part-2 ] 앤서블 기본 사용법 - 첫 번째 플레이북 작성하기

구구달스 2024. 1. 8. 00:34
CloudNet@ 가시다님이 진행하는 Ansible 101 Study
"앤서블로 시작하는 인프라 자동화" (한빛미디어) 로 진행

플레이북 환경 설정

  • playbook
    • 대상 호스트에서 수행될 작업들을 정의
    • ansible.cfg 환경 설정 파일이 존재하는 디렉터리 ▶ 앤서블 프로젝트 디렉터리

💠 앤서블 환경 설정 파일

  • 각 섹션에 키-값 깡으로 정의된 설정 포함
  • 여러 개의 섹션으로 구성
  • 기본적인 실행을 위해 [default] 와 [previlege-escalation] 두 개의 섹션으로 구성
[default]
inventory = ./inventory
remote_user = user
ask_pass = false

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

 

  •  [default] 섹션
    • 관리 호스트 연결하는 방법을 제어하는 가장 중요한 매개 변수 설정되어 있음
    • 앤서블 은 실행 시 로컬 사용자와 같은 사용자 이름을 사용하여 관리 호스트에 연결
매개변수 설명
invenroty 인벤토리 파일의 경로 지정
remote_user 앤서블이 관리 호스트에 연결할 때 사용하는 사용자 이름
  # 사용자 이름을 지정하지 않으면 현재 사용자 이름으로 지정
ask_pass SSH 암호를 묻는 메시지 표시 여부 지정
  # SSH 공개 키 인증을 사용하는 경우 기본값은 false 임
  •  [previlege-escalation] 섹션
매개변수 설명
become 기본적으로 권한 에스컬레이션을 활성화할 떄 사용
연결 후 관리 호스트에서 자동으로 사용자를 전환할지 여부 지정
  # 일반적으로 root 로 전환되며, playbook 에서도 지정할 수 있음
become_method 권한을 에스컬레이션하는 사용자 전환 방식을 의미
  # 기본값은 sudo 를 사용, su 는 옵션느로 설정할 수 있음
become_user 관리 호스트에서 전환할 사용자를 지정
   # 일반적으로 기본값은 root
become_ask_pass become_method 매개 변수에 대한 암호를 묻는 메시지 표시 여부를 지정
   # 기본값은 false
권한 에스컬레이션하기 위해 사용자가 암호를 입력해야 하는 경우 구성파일에 become_ask_pass = true 매개 변수 설정

💠 앤서블 접근을 위한 SSH 인증 구성

  • 로컬 사용자에세 개인 SSH 키가 있거나 관리 호스트에서 원격 사용자임을 인증 가능한 키가 구성된 경우 ▶ 자동 로그인
  • SSH  키 기반 인증 ▶ ssh-keygen 이용 생성
  • ssh-keygen ▶ ssh 키 생성

  • ssh-copy-id ▶ 노드로 복사
ubuntu /etc/ssh/sshd_config.d
PermitRootLogin yes 추가
systemctl restart sshd

  • ansible.cfg 파일 수정
[defaults]
inventory = ./inventory
remote_user = root
ask_pass = false

[priviledge_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
  • ansible 명령어를 이용하여 ping 테스트 진행

  • --ask-pass 옵션 추가

첫 번째 플레이북 작성하기

  • YAML 포맷으로 작성된 텍스트 파일
  • .yml 이라는 확장자로 저장
  • 대상 호스트나 호스트 집합에 수행할 작업을 정의 ▶ 실행
  • 득정 작업 단위를 수행 ▶ 모듈 적용

💠 플레이북 작성하기

  • debug 모듈을 이용 ▶ hello ansible world 출력
---
- hosts: all
  tasks:
    - name: print message
      debug:
        msg: hello ansible world

 

  • 플레이북 문법 체크
ansible-playbook --syntax-check first-playbook.yml
  • 에러 시 오류 내용 확인

첫 번째 플레이북 실행하기

  • 환경 설정 파일인 ansible.cfg 가 존재하는 디렉터리 내에서 실행

💠 playbook 실행

💠 playbook 실행 점검

  • --check 옵션
    • 앤서블에서 플레이북을 실행해도 관리 호스트는 실제오 변경되지 않고 변경 내용만 미리 알수 있음
  • sshd 서비스 재시작하는 restart-service.yaml 생성
[root@ansible-server my-ansible]# cat restart-service.yml
---
- hosts: all
  tasks:
    - name: restart sshd service
      ansible.builtin.service:
        name: sshd
        state: restarted

  • --check 옵션을 빼고 ansible-playbook 을 실행

  • tnode1-centos 에서 sshd 서비스 재시작 로그 확인

Comments