본문 바로가기

리눅스

앤서블 플레이북 키워드

반응형

앤서블 플레이북 키워드(Playbook Keywords)

Ansible 플레이북(Playbook)은 Ansible에서 자동화 작업을 수행하기 위한 주요 구성 파일입니다. 각 플레이북은 여러 작업(task)들을 정의하며 시스템이나 네트워크 장비 등의 상태를 원하는 방향으로 변경하는 데 사용됩니다.

주요 Ansible 플레이북 키워드

name

  • 설명 : 작업 또는 플레이의 이름을 정의합니다. 사람이 이해하기 쉽게 설명하는 부분입니다
  • 위치 : 플레이북 또는 개별 작업에서 사용됩니다.
name: Install NGINX

hosts

  • 설명 : 이 플레이를 실행할 호스트 그룹을 지정합니다.
  • 위치 : 플레이 단위에서 사용됩니다.
hosts: webservers

tasks

  • 설명 : 실행할 작업 목록을 정의하는 곳입니다. 각 작업은 모듈 호출 또는 다른 작업일 수 있습니다.
  • 위치 : 플레이 안에서 사용됩니다.
tasks:
  - name: Install NGINX
    apt:
      name: nginx
      state: present

vars

  • 설명 : 변수를 정의합니다. 플레이 내에서 사용할 변수들을 설정합니다.
  • 위치 : 플레이나 개별 작업에서 사용할 수 있습니다.
vars:
  nginx_version: 1.18.0

roles

  • 설명 : 사전에 정의된 역할을 호출합니다. 역할(Role)은 재사용 가능한 작업 집합입니다.
  • 위치 : 플레이에서 사용됩니다.
roles:
  - nginx
  - database

handlers

  • 설명 : 조건이 충족될 때(예: 파일이 변경되었을 때) 실행되는 작업입니다. 일반적으로 서비스 재시작 등에 사용됩니다.
  • 위치 : 플레이나 개별 작업 내에서 사용됩니다.
handlers:
  - name: restart nginx
    service:
      name: nginx
      state: restarted

notify

  • 설명 : 특정 작업이 변경될 때 실행할 핸들러를 호출합니다.
  • 위치 : 작업에서 사용됩니다.
- name: Configure NGINX
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: restart nginx

gather_facts

  • 설명 : Ansible이 실행할 때, 원격 시스템의 환경 정보(사실)를 수집할지 여부를 결정합니다.
  • 위치 : 플레이에서 사용됩니다.
gather_facts: false
728x90

become

  • 설명 : 작업을 다른 사용자로 실행하도록 설정합니다. 일반적으로 루트 권한으로 작업을 실행할 때 사용됩니다.
  • 위치 : 플레이나 개별 작업에서 사용됩니다.
become: yes

become_user

  • 설명 : 특정 사용자가 되어 명령을 실행합니다.
  • 위치 : 플레이나 작업에서 사용됩니다.
become_user: root

loop

  • 설명 : 반복 작업을 정의할 때 사용됩니다.
  • 위치 : 작업에서 사용됩니다.
- name: Install multiple packages
  apt:
    name: "{{ item }}"
    state: present
  loop:
    - nginx
    - mysql-server
    - php

when

  • 설명 : 조건부로 작업을 실행할지 여부를 결정합니다.
  • 위치 : 작업에서 사용됩니다.
- name: Install nginx on Ubuntu
  apt:
    name: nginx
    state: present
  when: ansible_os_family == "Debian"

with_items

  • 설명 : 반복 실행을 위한 이전 반복문 방식입니다. 새로운 버전에서는 loop로 대체되었습니다.
  • 위치 : 작업에서 사용됩니다.
with_items:
  - package1
  - package2

ignore_errors

  • 설명 : 작업이 실패하더라도 계속 실행되도록 설정합니다.
  • 위치 : 작업에서 사용됩니다.
- name: Try to install package
  apt:
    name: non-existing-package
    state: present
  ignore_errors: yes

tags

  • 설명 : 작업을 태그로 그룹화하여 특정 태그에 해당하는 작업만 선택적으로 실행할 수 있도록 합니다.
  • 위치 : 작업이나 플레이에서 사용됩니다.
- name: Install nginx
  apt:
    name: nginx
    state: present
  tags:
    - webserver
    - install

import_playbook

  • 설명 : 다른 플레이북을 포함할 때 사용합니다.
  • 위치 : 플레이북에서 사용됩니다.
import_playbook: other_playbook.yml

block

  • 설명 : 작업을 논리적인 그룹으로 묶어 실행합니다.
  • 위치 : 플레이 내에서 사용됩니다.
block:
  - name: Install nginx
    apt:
      name: nginx
      state: present
  - name: Start nginx
    service:
      name: nginx
      state: started

Ansible 플레이북 예시

---
- name: Install and configure web servers
  hosts: webservers
  become: yes

  vars:
    nginx_version: 1.18.0

  tasks:
    - name: Install NGINX
      apt:
        name: nginx
        state: present

    - name: Start NGINX service
      service:
        name: nginx
        state: started

 

참고URL

- Playbook Keywords : https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html

- ansible-playbook : https://docs.ansible.com/ansible/latest/cli/ansible-playbook.html

- Working with command line tools : https://docs.ansible.com/ansible/latest/user_guide/command_line_tools.html

 

728x90
반응형

'리눅스' 카테고리의 다른 글

ansible-playbook 명령어  (0) 2022.11.02
[Ansible] ansible-playbook apache(httpd) install  (0) 2022.11.02
[Ansible] facts 모듈(facts module)  (0) 2022.11.02
[Ansible] ansible-config 명령  (0) 2022.11.01
[Ansible] ansible-doc 명령  (0) 2022.11.01