sudo add-apt-repository ppa:ansible/ansible
become: yes 일 경우 sudo 로 명령을 실행한다.ansible-playbook에 --ask-become-pass 옵션을 주면 최초 시작시 비밀번호를 물어본다.ansible-playbook playbook.yml ... --user=username \ --extra-vars "ansible_become_pass=yourPassword"
read -s SUDO_PASSWORD 등으로 읽거나 환경변수에 지정하고서 다음과 같이 하면 명령 history 노출등에 방어가 된다.ansible-playbook playbook.yml ... \
--extra-vars="ansible_become_pass='{{ lookup('env', 'SUDO_PASSWORD') }}'"
ansible-playbook 자체를 root 로 실행한다면 become 대신 become_user를 사용해야 할듯.- name: playbook name
hosts: localhost # 혹은 127.0.0.1 로도 작동했음.
connection: local
tasks:
- name: blah.. blah..
# 실행 ansible-playbook playbook.yml
tasks:
- name: Ansible create file with content example
copy:
dest: "/Users/mdtutorials2/Documents/Ansible/remote_server.txt"
content: "contents"
mode: 0777
owner: mdtutorials2
- debug: msg="{{ lookup('env', 'HOME') }} is an environment variable"
vars_files : 외부 yml 파일의 key/value 쌍을 변수로 읽어들인다. 기본 경로는 현재 플레이북 경로이다.- name: blah blah..
hosts: ...
vars_files:
- "vars.yml" # file in the same directory
tasks: ...
vars.yml# key/value 쌍.
ubuntu_release: "{{ lookup('pipe', 'lsb_release -cs') }}"
current_user: "{{ lookup('env', 'USER') }}"
vagrant_version: 2.2.10
packer_version: 1.6.1
...
- hosts: all
roles:
- php
- nginx
environment:
MY_ENV_VARIABLE: whatever_value
tasks:
- name: Echo my_env_var
shell: "echo $MY_ENV_VARIABLE"
environment:
MY_ENV_VARIABLE: whatever_value
command는 명령만 실행할 뿐 셸을 띄우지 않기 때문에 환경변수 등이 주입이 안된다./bin/sh 를 띄워 명령을 실행한다. Bash 등으로 강제로 바꿔야 올바로 작동하는 명령들도 있을 수 있으므로 그 때는 args.executable: /bin/bash로 셸을 변경해줘야 한다.--start-at-task="태스크이름" : 해당 태스크 부터 실행--step : 실행여부 질문register, until, delay 와 함께 사용.retries 는 until이 없으면 작동하지 않는다. until에서 명백하게 성공 조건을 명시해야한다.retries 종료 해달라는 이슈. PR 이 있으며, 머지될 가능성이 있음.local.yml 파일을 실행한다.ansible-pull -U https://github.com/.../xxx.git
include* 는 동적(dynamic)이다. 일부 기능이 작동하지 않는다(–start-at-task같은). 실행시점 해석.import* 는 정적(static)이다. 설정파일 읽을 때 해석.sudo apt install python3-argcomplete
.bashrc 에 넣는다 배포판에 따라 register-python-argcomplete(3 제외)일 수도 있음. (전역 설정도 가능함)# 필히 "" 로 감싸야한다. eval "$(register-python-argcomplete3 ansible)" eval "$(register-python-argcomplete3 ansible-config)" eval "$(register-python-argcomplete3 ansible-console)" eval "$(register-python-argcomplete3 ansible-doc)" eval "$(register-python-argcomplete3 ansible-galaxy)" eval "$(register-python-argcomplete3 ansible-inventory)" eval "$(register-python-argcomplete3 ansible-playbook)" eval "$(register-python-argcomplete3 ansible-pull)" eval "$(register-python-argcomplete3 ansible-vault)"