ansible playbook

eunyeong·2023년 2월 22일
0

Ansible_Basic

목록 보기
4/4

플레이북이란

  • 플레이북은 하나 이상의 플레이를 가지고 있으며, 플레이는 작업을 실행하기 위한 특정 관리 노드 또는 그룹을 지정
  • 플레이에는 작업을 선언하며, 작업은 모듈을 호출
  • 멱등성을 가짐(중요!)
    • 수학이나 IT에서 연산의 한 성질을 나타내며, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미
    • Ansible의 대부분 모듈은 원하는 최종 상태가 달성 되었는지 확인하고, 이미 원하는 최종 상태를 달성했다면 작업을 실행하지 않게 되는데 몇 번이고 작업을 반복 실행 하더라도 최종 상태가 변경되지 않기 때문에 멱등성을 가진다고 함.
    • 모듈의 옵션에 따라 이러한 멱등성을 제공하지 않는 것도 있음.
      : 멱등성을 제공하지 않는 모듈
      - 명령 관련 모듈: command, shell, raw
      - service 모듈의 서비스 재시작
  • 기본적으로 yaml 문서를 이용함
  • 들여쓰기가 굉장히 중요!!!! 스페이스바 두 칸 이용

** 왜 velog는 들여쓰기 기능이 안되는가....

  • name: update web servers # 플레이 이름
    hosts: webservers # 호스트 패턴
    tasks:
    - name: apache the latest version # 작업 이름
    yum: # 모듈 이름
    name: httpd # 모듈 옵션/아규먼트
    state: latest
    - name: write the apache config file # 작업
    template:
    src: /srv/httpd.j2
    dest: /etc/httpd.conf
  • name: update db servers # 플레이 이름
    hosts: databases
    remote_user: root
    tasks:
    - name: ensure postgresql is at the latest version # 작업
    yum:
    name: postgresql
    state: latest
    - name: ensure that postgresql is started # 작업
    service:
    name: postgresql
    state: started

플레이북 실행 및 검증

  • 플레이북 실행
    ansible-playbook playbook.yml
  • 구문 체크
    ansible-playbook playbook.yml --syntax-check
  • 체크 모드
    ansible-playbook playbook.yml --check
  • 차이점 모드
    ansible-playbook playbook.yml --check --diff --limit foo.example.com
  • 작업 목록 확인
    ansible-playbook playbook.yml --list-tasks
  • 호스트 목록 확인
    ansible-playbook playbook.yml --list-hosts
  • Ansible Lint(코드의 오류, 버그, 스타일 등을 점검하는 도구)
    ansible-lint playbook.yml

플레이북 검증
vim playbook.yml

  • name: 1st play
    hosts: all
    tasks:
    - name: debug module
    debug:
    msg: test playbook
    ...

플레이북 실행
ansible-playbook playbook.yml

  • name: 1st play
    hosts: all
    gather_facts: no
    tasks:
    - name: debug module
    debug:
    msg: test playbook
    ...

다중 작업 설정

  • name: 1st play
    hosts: groupA
    gather_facts: no
    tasks:
    - name: command module
    command: id
    register: result
    - name: debug module
    debug:
    msg: "{{result.stdout}}"
  • name: 2nd play
    hosts: groupA
    become: false
    gather_facts: no
    tasks:
    - name: command module
    command: id
    register: result
    - name: debug module
    debug:
    msg: "{{result.stdout}}"
    ...
profile
아무것도 모르는 초보

0개의 댓글