Skip to main content

Ansible 기본 안내


설치

python3 -m pip install ansible

Control node

Directory structure

<playbook>/
├── ansible.cfg # 설정 파일
├── inventories/
│ ├── <inventory>/
│ │ ├── hosts.yaml
│ │ ├── group_vars/
│ │ │ ├── <group>/
│ │ │ │ ├── <vars>.yaml
│ │ │ │ └── ...
│ │ │ ├── <group>.yaml
│ │ │ └── ...
│ │ └── host_vars/
│ │ ├── <host>/
│ │ │ ├── <vars>.yaml
│ │ │ └── ...
│ │ ├── <host>.yaml
│ │ └── ...
│ └── ...
├── group_vars/
│ └── ...
├── host_vars/
│ └── ...
├── library/ # 커스텀 모듈
├── module_utils/ # 커스텀 모듈 유틸
├── filter_plugins/ # 커스텀 필터 플러그인
├── <purpose>.yaml # playbook
├── ...
└── roles/
└── ...

Inventory

Playbook

example.yaml
- hosts: all
gather_facts: false
tasks:
- name: "example"
command: "echo hello"

실행 순서는 다음과 같습니다.

  • pre_tasks
  • pre_tasks에 의해 호출되는 handlers
  • roles
  • tasks
  • roles또는 tasks에 의해 호출되는 handlers
  • post_tasks
  • post_tasks에 의해 호출되는 handlers

Playbook 실행

ansible-playbook <playbook>
  • -i|--inventory <dir|yaml>
  • -l|--limit '<pattern>': 선택된 hosts에 추가적인 제한을 설정합니다.
  • --list-hosts: 사용자가 설정한 옵션에 따라 실행될 play와 해당 host를 출력합니다.(실행은 되지 않습니다.)
  • --list-tags: 사용자가 설정한 옵션에 따라 실행될 play와 해당 tags를 출력합니다.(실행은 되지 않습니다.)
  • --list-tasks: 사용자가 설정한 옵션에 따라 실행될 play와 해당 tasks를 출력합니다.(실행은 되지 않습니다.)
  • ansible -i inventory -m debug -a "var=hostvars[inventory_hostname]" '<pattern>': 해당 host들의 변수를 출력합니다.
  • 연결 옵션
    • -u|--user <user>: 원격 접속 시 사용될 사용자를 설정합니다.
      • None이 기본값이고, 이 경우 명령을 실행시키는 쉘의 사용자가 사용됩니다.
      • ansible_user의 기본값이 됩니다.
    • -k|--ask-pass: 원격 접속 시 사용될 비밀번호를 물어보도록 설정합니다.
      • ansible_password의 기본값이 됩니다.
  • 작업 권한 옵션
    • -b|--become: <becomeMethod>로 작업을 실행시키도록 설정합니다.
    • --become-user <becomeUser>: become 사용자를 변경합니다.
      • ansible_become_user의 기본값이 됩니다.
      • root가 기본값입니다.
    • -K|--ask-become-pass: become 사용자의 비밀번호를 물어보도록 설정합니다.
      • ansible_become_password의 기본값이 됩니다.
    • --become-method <becomeMethod>: 권한 상승 방법을 설정합니다.
      • sudo가 기본값입니다.
      • ansible-doc -t become -l 명령어로 가능한 값들을 확인할 수 있습니다.