ansible-playbook 명령어
ansible-playbook 명령어는 Ansible로 작성된 플레이북을 실행하는데 사용되는 명령어입니다. 플레이북은 시스템 설정, 소프트웨어 설치, 배포, 설정 등을 자동화하기 위한 Ansible의 설정 파일입니다.
ansible ad-hoc 명령어(shell module)
ansible 명령어의 주요 옵션과 사용 방법
1. 기본 구문
ansible [options] <host-pattern> [-m <module-name>]
2. 주요 옵션
- <host-pattern>: 대상 호스트 또는 그룹을 지정합니다. 와일드카드(*), 호스트명, 그룹명, 그룹 패턴 등으로 지정할 수 있습니다.
- -m, --module-name: 실행할 모듈을 지정합니다.
- -a, --args: 모듈에 전달할 인수를 지정합니다.
- -i, --inventory: 사용할 인벤토리 파일을 지정합니다. 기본적으로 /etc/ansible/hosts 파일이 사용됩니다.
- -u, --user: SSH 접속에 사용할 사용자 이름을 지정합니다.
- -b, --become: 작업을 수행할 때 슈퍼유저(root) 권한으로 실행합니다.
- -K, --ask-become-pass: 슈퍼유저 권한으로 실행하기 위해 sudo 암호를 입력 받습니다.
- -C, --check: 변경 사항을 시뮬레이션하여 결과를 표시합니다.
- -f, --forks: 병렬로 실행할 최대 호스트 수를 지정합니다.
- -t, --tags: 실행할 특정 태그를 지정합니다. 특정 태그만 실행하도록 제한할 수 있습니다.
3. 예제
- ansible 명령어로 모듈 실행
ansible all -m ping
- 대상 호스트 또는 그룹 지정
ansible webservers -m command -a "uptime"
- 인벤토리 파일 사용
ansible all -i inventory_file.yml -m command -a "uptime"
- 슈퍼유저로 실행
ansible all -b -m yum -a "name=httpd state=present"
- 태그를 이용한 실행
ansible webservers -m service -a "name=httpd state=started" --tags "start_service"
위 예제들은 ansible 명령어의 주요 옵션과 사용 방법을 보여주는 것이며, 사용 시 실제 호스트 패턴, 모듈명, 인벤토리 파일 경로, 사용자 이름 등을 적절하게 변경하여 사용하시면 됩니다.
ansible 사용법
$ ansible -h
usage: ansible [-h] [--version] [-v] [-b] [--become-method BECOME_METHOD] [--become-user BECOME_USER] [-K | --become-password-file BECOME_PASSWORD_FILE]
[-i INVENTORY] [--list-hosts] [-l SUBSET] [-P POLL_INTERVAL] [-B SECONDS] [-o] [-t TREE] [--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER]
[-c CONNECTION] [-T TIMEOUT] [--ssh-common-args SSH_COMMON_ARGS] [--sftp-extra-args SFTP_EXTRA_ARGS] [--scp-extra-args SCP_EXTRA_ARGS]
[--ssh-extra-args SSH_EXTRA_ARGS] [-k | --connection-password-file CONNECTION_PASSWORD_FILE] [-C] [-D] [-e EXTRA_VARS]
[--vault-id VAULT_IDS] [--ask-vault-password | --vault-password-file VAULT_PASSWORD_FILES] [-f FORKS] [-M MODULE_PATH]
[--playbook-dir BASEDIR] [--task-timeout TASK_TIMEOUT] [-a MODULE_ARGS] [-m MODULE_NAME]
pattern
Define and run a single task 'playbook' against a set of hosts
positional arguments:
pattern host pattern
options:
--ask-vault-password, --ask-vault-pass
ask for vault password
--become-password-file BECOME_PASSWORD_FILE, --become-pass-file BECOME_PASSWORD_FILE
Become password file
--connection-password-file CONNECTION_PASSWORD_FILE, --conn-pass-file CONNECTION_PASSWORD_FILE
Connection password file
--list-hosts outputs a list of matching hosts; does not execute anything else
--playbook-dir BASEDIR
Since this tool does not use playbooks, use this as a substitute playbook directory. This sets the relative path for many features
including roles/ group_vars/ etc.
--task-timeout TASK_TIMEOUT
set task timeout limit in seconds, must be positive integer.
--vault-id VAULT_IDS the vault identity to use
--vault-password-file VAULT_PASSWORD_FILES, --vault-pass-file VAULT_PASSWORD_FILES
vault password file
--version show program's version number, config file location, configured module search path, module location, executable location and exit
-B SECONDS, --background SECONDS
run asynchronously, failing after X seconds (default=N/A)
-C, --check don't make any changes; instead, try to predict some of the changes that may occur
-D, --diff when changing (small) files and templates, show the differences in those files; works great with --check
-K, --ask-become-pass
ask for privilege escalation password
-M MODULE_PATH, --module-path MODULE_PATH
prepend colon-separated path(s) to module library (default={{ ANSIBLE_HOME ~ "/plugins/modules:/usr/share/ansible/plugins/modules"
}})
-P POLL_INTERVAL, --poll POLL_INTERVAL
set the poll interval if using -B (default=15)
-a MODULE_ARGS, --args MODULE_ARGS
The action's options in space separated k=v format: -a 'opt1=val1 opt2=val2' or a json string: -a '{"opt1": "val1", "opt2":
"val2"}'
-e EXTRA_VARS, --extra-vars EXTRA_VARS
set additional variables as key=value or YAML/JSON, if filename prepend with @
-f FORKS, --forks FORKS
specify number of parallel processes to use (default=5)
-h, --help show this help message and exit
-i INVENTORY, --inventory INVENTORY, --inventory-file INVENTORY
specify inventory host path or comma separated host list. --inventory-file is deprecated
-k, --ask-pass ask for connection password
-l SUBSET, --limit SUBSET
further limit selected hosts to an additional pattern
-m MODULE_NAME, --module-name MODULE_NAME
Name of the action to execute (default=command)
-o, --one-line condense output
-t TREE, --tree TREE log output to this directory
-v, --verbose Causes Ansible to print more debug messages. Adding multiple -v will increase the verbosity, the builtin plugins currently
evaluate up to -vvvvvv. A reasonable level to start is -vvv, connection debugging might require -vvvv.
Privilege Escalation Options:
control how and which user you become as on target hosts
--become-method BECOME_METHOD
privilege escalation method to use (default=sudo), use `ansible-doc -t become -l` to list valid choices.
--become-user BECOME_USER
run operations as this user (default=root)
-b, --become run operations with become (does not imply password prompting)
Connection Options:
control as whom and how to connect to hosts
--private-key PRIVATE_KEY_FILE, --key-file PRIVATE_KEY_FILE
use this file to authenticate the connection
--scp-extra-args SCP_EXTRA_ARGS
specify extra arguments to pass to scp only (e.g. -l)
--sftp-extra-args SFTP_EXTRA_ARGS
specify extra arguments to pass to sftp only (e.g. -f, -l)
--ssh-common-args SSH_COMMON_ARGS
specify common arguments to pass to sftp/scp/ssh (e.g. ProxyCommand)
--ssh-extra-args SSH_EXTRA_ARGS
specify extra arguments to pass to ssh only (e.g. -R)
-T TIMEOUT, --timeout TIMEOUT
override the connection timeout in seconds (default=10)
-c CONNECTION, --connection CONNECTION
connection type to use (default=smart)
-u REMOTE_USER, --user REMOTE_USER
connect as this user (default=None)
Some actions do not make sense in Ad-Hoc (include, meta, etc)
ansible-playbook 명령어(shell module)
ansible-playbook 명령어의 주요 옵션과 사용 방법
1. 기본 구문
ansible-playbook [options] playbook.yml
2. 주요 옵션
- --inventory, -i: 인벤토리 파일을 지정합니다. 기본적으로 /etc/ansible/hosts 파일이 사용됩니다.
- --limit: 실행 대상 호스트 또는 그룹을 지정합니다.
- --tags: 실행할 특정 태그를 지정합니다. 특정 태그만 실행하도록 제한할 수 있습니다.
- --skip-tags: 특정 태그를 스킵합니다. 지정한 태그를 가진 작업은 실행하지 않습니다.
- --check: 실행 전에 변경 사항을 시뮬레이션하여 결과를 표시합니다.
- --diff: 변경 사항이 있을 때 변경 내용을 보여줍니다.
- --list-hosts: 실행 대상 호스트 목록을 표시합니다.
- --list-tasks: 플레이북에 포함된 태스크 목록을 표시합니다.
- --syntax-check: 플레이북 구문 오류를 확인합니다.
- --step: 태스크를 한 단계씩 실행합니다.
3. 예제
- 기본적인 플레이북 실행
ansible-playbook playbook.yml
- 특정 인벤토리 파일 사용(-i inventory_file.yml)
ansible-playbook -i inventory_file.yml playbook.yml
- 실행 대상 호스트 지정(--limit server1)
ansible-playbook -i inventory_file.yml --limit server1 playbook.yml
- 특정 태그만 실행(--tags "setup,install")
ansible-playbook -i inventory_file.yml --tags "setup,install" playbook.yml
- 특정 태그를 스킵(--skip-tags "setup")
ansible-playbook -i inventory_file.yml --skip-tags "setup" playbook.yml
- 변경 사항 시뮬레이션 및 결과 출력(--check --diff)
ansible-playbook -i inventory_file.yml --check --diff playbook.yml
- 실행 대상 호스트 목록 표시(--list-hosts)
ansible-playbook -i inventory_file.yml --list-hosts playbook.yml
- 플레이북에 포함된 태스크 목록 표시(--list-tasks)
ansible-playbook -i inventory_file.yml --list-tasks playbook.yml
- 플레이북 구문 오류 확인(--syntax-check)
ansible-playbook -i inventory_file.yml --syntax-check playbook.yml
- 태스크를 한 단계씩 실행(--step)
ansible-playbook -i inventory_file.yml --step playbook.yml
- 플레이북 파일이 복수개일 경우(playbook1.yml playbook2.yml playbook3.yml)
ansible-playbook -i inventory_file.yml playbook1.yml playbook2.yml playbook3.yml
위 예제들은 ansible-playbook 명령어의 주요 옵션 및 사용 방법을 보여주는 것이며, 사용 시 실제 플레이북 파일과 인벤토리 파일의 경로를 적절하게 변경하여 실행하시면 됩니다.
ansible-playbook 사용법
$ ansible-playbook -h
usage: ansible-playbook [-h] [--version] [-v] [--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER] [-c CONNECTION] [-T TIMEOUT]
[--ssh-common-args SSH_COMMON_ARGS] [--sftp-extra-args SFTP_EXTRA_ARGS] [--scp-extra-args SCP_EXTRA_ARGS]
[--ssh-extra-args SSH_EXTRA_ARGS] [-k | --connection-password-file CONNECTION_PASSWORD_FILE] [--force-handlers] [--flush-cache]
[-b] [--become-method BECOME_METHOD] [--become-user BECOME_USER] [-K | --become-password-file BECOME_PASSWORD_FILE] [-t TAGS]
[--skip-tags SKIP_TAGS] [-C] [-D] [-i INVENTORY] [--list-hosts] [-l SUBSET] [-e EXTRA_VARS] [--vault-id VAULT_IDS]
[--ask-vault-password | --vault-password-file VAULT_PASSWORD_FILES] [-f FORKS] [-M MODULE_PATH] [--syntax-check] [--list-tasks]
[--list-tags] [--step] [--start-at-task START_AT_TASK]
playbook [playbook ...]
Runs Ansible playbooks, executing the defined tasks on the targeted hosts.
positional arguments:
playbook Playbook(s)
options:
--ask-vault-password, --ask-vault-pass
ask for vault password
--become-password-file BECOME_PASSWORD_FILE, --become-pass-file BECOME_PASSWORD_FILE
Become password file
--connection-password-file CONNECTION_PASSWORD_FILE, --conn-pass-file CONNECTION_PASSWORD_FILE
Connection password file
--flush-cache clear the fact cache for every host in inventory
--force-handlers run handlers even if a task fails
--list-hosts outputs a list of matching hosts; does not execute anything else
--list-tags list all available tags
--list-tasks list all tasks that would be executed
--skip-tags SKIP_TAGS
only run plays and tasks whose tags do not match these values
--start-at-task START_AT_TASK
start the playbook at the task matching this name
--step one-step-at-a-time: confirm each task before running
--syntax-check perform a syntax check on the playbook, but do not execute it
--vault-id VAULT_IDS the vault identity to use
--vault-password-file VAULT_PASSWORD_FILES, --vault-pass-file VAULT_PASSWORD_FILES
vault password file
--version show program's version number, config file location, configured module search path, module location, executable location and exit
-C, --check don't make any changes; instead, try to predict some of the changes that may occur
-D, --diff when changing (small) files and templates, show the differences in those files; works great with --check
-K, --ask-become-pass
ask for privilege escalation password
-M MODULE_PATH, --module-path MODULE_PATH
prepend colon-separated path(s) to module library (default={{ ANSIBLE_HOME ~ "/plugins/modules:/usr/share/ansible/plugins/modules"
}})
-e EXTRA_VARS, --extra-vars EXTRA_VARS
set additional variables as key=value or YAML/JSON, if filename prepend with @
-f FORKS, --forks FORKS
specify number of parallel processes to use (default=5)
-h, --help show this help message and exit
-i INVENTORY, --inventory INVENTORY, --inventory-file INVENTORY
specify inventory host path or comma separated host list. --inventory-file is deprecated
-k, --ask-pass ask for connection password
-l SUBSET, --limit SUBSET
further limit selected hosts to an additional pattern
-t TAGS, --tags TAGS only run plays and tasks tagged with these values
-v, --verbose Causes Ansible to print more debug messages. Adding multiple -v will increase the verbosity, the builtin plugins currently
evaluate up to -vvvvvv. A reasonable level to start is -vvv, connection debugging might require -vvvv.
Connection Options:
control as whom and how to connect to hosts
--private-key PRIVATE_KEY_FILE, --key-file PRIVATE_KEY_FILE
use this file to authenticate the connection
--scp-extra-args SCP_EXTRA_ARGS
specify extra arguments to pass to scp only (e.g. -l)
--sftp-extra-args SFTP_EXTRA_ARGS
specify extra arguments to pass to sftp only (e.g. -f, -l)
--ssh-common-args SSH_COMMON_ARGS
specify common arguments to pass to sftp/scp/ssh (e.g. ProxyCommand)
--ssh-extra-args SSH_EXTRA_ARGS
specify extra arguments to pass to ssh only (e.g. -R)
-T TIMEOUT, --timeout TIMEOUT
override the connection timeout in seconds (default=10)
-c CONNECTION, --connection CONNECTION
connection type to use (default=smart)
-u REMOTE_USER, --user REMOTE_USER
connect as this user (default=None)
Privilege Escalation Options:
control how and which user you become as on target hosts
--become-method BECOME_METHOD
privilege escalation method to use (default=sudo), use `ansible-doc -t become -l` to list valid choices.
--become-user BECOME_USER
run operations as this user (default=root)
-b, --become run operations with become (does not imply password prompting)
Ansible CLI cheatsheet
ansible-playbook -i /path/to/my_inventory_file -u my_connection_user -k -f 3 -T 30 -t my_tag -m /path/to/my_modules -b -K my_playbook.yml
위의 명령어는 ansible-playbook 명령어의 다양한 옵션들을 사용하여 특정 플레이북을 실행하는 예제입니다.
각 옵션들의 역할은 다음과 같습니다.
- -i /path/to/my_inventory_file: 사용할 인벤토리 파일을 지정합니다.
- -u my_connection_user: SSH 접속에 사용할 사용자 이름을 지정합니다.
- -k: 슈퍼유저 권한으로 실행하기 위해 sudo 암호를 입력 받습니다.
- -f 3: 병렬로 실행할 최대 호스트 수를 3으로 지정합니다.
- -T 30: SSH 연결 시간 초과를 30초로 지정합니다.
- -t my_tag: 실행할 특정 태그를 지정합니다.
- -m /path/to/my_modules: 사용자 정의 모듈이 있는 디렉토리 경로를 지정합니다.
- -b: 작업을 수행할 때 슈퍼유저(root) 권한으로 실행합니다.
- -K: 슈퍼유저 권한으로 실행하기 위해 sudo 암호를 입력 받습니다.
- my_playbook.yml: 실행할 플레이북 파일의 경로를 지정합니다.
위의 명령어를 사용하여 my_playbook.yml 플레이북을 실행하면, 해당 플레이북이 my_connection_user 사용자로 my_inventory_file 인벤토리 파일에 기재된 호스트들을 대상으로 병렬로 실행되며, 필요에 따라 슈퍼유저 권한으로 작업을 수행할 수 있습니다. 또한, 특정 태그로 플레이북 실행을 제한할 수 있으며, 사용자 정의 모듈 디렉토리도 추가로 지정할 수 있습니다.
참고URL
- Ansible Shell Module Examples : https://www.middlewareinventory.com/blog/ansible-shell-examples/
- ansible-playbook : https://docs.ansible.com/ansible/latest/user_guide/cheatsheet.html#
- ansible-playbook : https://docs.ansible.com/ansible/latest/cli/ansible-playbook.html#ansible-playbook
'리눅스' 카테고리의 다른 글
우분투에서 MHA(Master High Availability)를 컴파일하고 설치하는 방법 (0) | 2023.07.23 |
---|---|
리눅스에 콘솔 접근 또는 원격 접근 시 경고 메시지를 설정하는 방법 (0) | 2023.07.20 |
우분투에 Ansible을 위한 기본 Bash 완성을 설치하는 방법 (0) | 2023.07.17 |
MySQL 리플리케이션(replication)을 설정하는 방법 (0) | 2023.07.16 |
Ansible fingerprint 접속 오류 (0) | 2023.07.16 |