Ansible Playbook Module

백승한·2022년 12월 27일
0
  • name

    • 작업 설명(생략 가능)
  • hosts

    • 작업 대상 hosts ( inventory 내 hosts 지정 )
  • gather_facts

    • 작업 시작 전 host의 자원 정보 facts 수집 여부.
    • default로 동작하지만 대상 서버 수가 많을수록 수집 시간이 오래 걸리는 단점 등으로 인해 false로 설정하기도 함.
    • 각 노드에서 제공되는 상세 정보를 python을 통해 끌어올 수 있다. 출력은 json 형태로 출력된다.
  • tasks

    • 작업 목록. 하나의 play는 여러 task로 구성되며 순차적으로 하나씩 실행됨.
    • 각 task는 하나의 모듈만 실행 가능
  • remote_user

    • 원격 서버에 접속할 계정명
    • playbook 내에 password를 별도로 저장하는 항목이 없는 것으로 봐서 ssh key 설정 후 ansible실행을 일반적인 경우로 생각하는 것 같다.
  • ansible.builtin.command

  • vars_files

    • 외부 YAML 파일 읽기
      • Ex) vars_files:
        • /conf/data-SYD.yml
        • /conf/cluster-sql.yml

Ansible Playbook(플레이북) 설명 및 예시
Host 매개변수 설정 가이드
How to Include Variables in Ansible + Examples
Ansible 자주 사용하는 모듈

Conditional Test

$ cat conditional test
---
- name: test
  hosts: all
  tasks:
  - name: create directory
    file:
      path: /home/ansible/rhel7
      state: directory
 
  - name: touch file
    file:
      path: /home/ansible/rhel7/test.txt
      state: touch
    when:
    - ansible_distribution == "RedHat"
    - ansible_distribution_major_version == "7"
...

when 옵션을 활용하여 해당 조건을 만족하는 경우에 task 수행

Ansible 전역 설정파일(ansible.cfg)

경로 : /etc/ansible/ansible.cfg

Remote_user : 사용자 이름
Remote_port : SSH 연결 디폴트 포트

기업에서 사용하는 경우, Root의 직접 접근이 불가능하여, sudo를 이용하여 root 접근방식과 동일하게 시행할 수 있다. 이를 위해서는 "/etc/sudoers 파일에 자신의 계정을 등록" 해주면 된다.

Sudo 사용시 암호를 쓰도록 할 경우,
"ask_sudo_pass" 값을 true로 설정

Playbook

Role : 이미 정의된 Ansible content(Task, Handler, Variable, Plugin, 등)를 재사용하기 위해서 사용한다. 역할을 정의하고 directory별로 분리한다.

Role의 directory 구조와 사용 예시 & Task와 Handler 사용예시

profile
방문해주셔서 감사합니다🙂

0개의 댓글