Ssoon

[ Part-2 ] 앤서블 기본 사용법 - 팩트 본문

Ansible 101 Study

[ Part-2 ] 앤서블 기본 사용법 - 팩트

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

자동 변수 예약

  • Facts
    • 앤서블이 관리 호스트에서 자동으로 검색한 변수
    • 호스트이름, 커널 버전, 네트워크 인터페이스 이름, 운영체제 버전, CPU 개수 ...
  • 팩트에 의해 수집된 변수 값을 이용 서비스 상태 확인

💠 팩트 사용하기

  • 플레이북을 실행할 때 자동으로 팩트가 수집
  • ansible_facts 변수를 통해 사용

  • facts.yam 파일 생성 ▶ ansible.builtin.debug 모듈을 이용 ansible_facts 변수의 모든 내용 출력
- hosts: db
  tasks:
  - name: print all facts
    ansible.builtin.debug:
      var: ansible_facts
  • ansible-playbook 실행
  • tnode3-rocky.exp.com 에서 수집한 시스템 정보 확인

  • 팩트를 통해 수집된 변수는 특정 값만 추출하여 사용 가능
  • cp facts.yml facts1.yml
- hosts: db
  tasks:
  - name: print all facts
    ansible.builtin.debug:
      msg: >
        the default ip4 address of {{ ansible_facts.fqdn }}
        is {{ ansible_facts.default_ipv4.address }}
  • ansible-playbook 실행

💠 변수로 사용할 수 있는 앤서블 팩트

팩트 ansible_facts.*표기법
호스트명 ansible_facts.hostname
도메인 기반 호스트명 ansible_facts.fqdn
기본 ipv4 주소 ansible_facts.default_ipv4.address
네트워크 인터페이스 이름 목록 ansible_facts.interface
/dev/vda1 디스크 파티션 크기 ansible_facts.device.vda.partitions.vda1.size
dns 서버 목록 ansible_facts.dns.nameservers
현재 실행중인 커널 버전 ansible_facts.kernel
운영체제 종류 ansible_facts.distribution
  • ansible_* 표기법 및 비활성화 설정
  • cp facts1.yml facts2.yml
- hosts: db
  tasks:
  - name: print facts
    ansible.builtin.debug:
      msg: >
        this node's host name is  {{ ansible_hostname }}
        and the ip is {{ ansible_default_ipv4.address }}
  • ansible-playbook 실행

  • ansible.cfg [default] 에 추가
inject_facts_as_vars = false
  • ansible-playbook 실행 ▶ 에러 발생

💠 팩트 수집 끄기

  • cp facts1.yml facts3.yml
- hosts: db
  gather_facts: no
  tasks:
  - name: print all facts
    ansible.builtin.debug:
      msg: >
        the default ip4 address of {{ ansible_facts.fqdn }}
        is {{ ansible_facts.default_ipv4.address }}
  • ansible-playbook 실행 ▶ 에러 발생
  • 팩트를 수집하지 않았기 떄문에 팩트에서 수집한 변수 사용하려고 하면 에러 발생

  • 매뉴얼한 방법으로 플레이북 팩트 수집 설정
  • cp facts3.yml facts4.yml
- hosts: db
  gather_facts: no

  tasks:
  - name: manually gather facts
    ansible.builtin.setup:

  - name: print all facts
    ansible.builtin.debug:
      msg: >
        the default ip4 address of {{ ansible_facts.fqdn }}
        is {{ ansible_facts.default_ipv4.address }}
  • ansible-playbook 실행 

💠 사용자 지정 팩트 만들기

  • 관리 호스트의 로컬에 있는 /etc/ansible/facts.d 디렉터리 내에 '*.fact' 로 저장 ▶ 앤서블이 플레이북을 실행할 때 자동으로 팩트 수집

  • /etc/ansible/facts.d/my-custom.fact 파일 생성

[packages]
web_package = httpd
ab_package =mariadb-server

[users]
user1 = ansible
user2 = ssoon
  • cp facts4.yml facts5.yml
  • facts5.yml 수정
- hosts: localhost

  tasks:
  - name: print local facts
    ansible.builtin.debug:
      var: ansible_local
  • ansible-playbook 실행 

 

 

Comments