$ vagrant provision
==> default: Running provisioner: ansible...
default: Running ansible-playbook...
PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit='default' --inventory-file=/Users/bob/src/ansible-devops/.vagrant/provisioners/ansible/inventory -v playbook.yml
No config file found; using defaults
ERROR! Decryption failed
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
์ ๋ Ansible์ ์ฒ์ ์ ํ์ง๋ง ์ํธํ ํ ์ ์ด ์์์ต๋๋ค. ๋ฐ๋ผ์ "Decryption failed"๋ฉ์์ง๊ฐ ํ์๋๋ ๊ฒ์ "์ ์ฉํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ์ง ๋ชปํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ด ์์๋์์ต๋๋ค"์ ๊ฒฝ์ฐ์ฒ๋ผ ๋ณด์ ๋๋ค.
_what_์ด๋ผ๊ณ ๋งํ์ง ์๊ณ "๋ณตํธํ ์คํจ"๋ผ๊ณ ํด๋ ํ๋ก๊ทธ๋จ์ด ๋ณตํธํํ๋ ค๊ณ ํ๋ ๊ฒ์ ์คํ๋ ค .... ๋ฐ๋ณด์ ๋๋ค.
ansible 2.0.0์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ค์ ๋ก ์ฌ์ฉํ ์ ์๋๋ก Ansible์ ์์ ํ์ญ์์ค.
๊ทธ๋ ๋ค๋ฉด ๋๊ตฐ๊ฐ๊ฐ ๋ฌธ์ ๋ฅผ ์ฌํํ๊ณ ๋ณผ ์ ์๋๋ก ๋ฐฉ๋ ํ์ผ๊ณผ ansible ํ์ผ์ ์ ๊ณต ํ ์ ์์ต๋๊น?
๊ทธ๋ฐ ์ด๋ณด ์ง๋ฌธ์ํ๋ฉด ๋์๊ฒ ๋งํ์ง ๋ง์์ผ ํ ๊ฒ ๊ฐ์, ๋ฏธ์. ์ฌ๊ฐํ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ 5 ๋ถ ์ด๋ด์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋๋ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ค. ๋๋ ํน๋ณํ ๊ทธ๋ ๊ฒ ํ ๋๊ธฐ๋ฅผ ๋๋ผ์ง ์์ผ๋ฉฐ์ด ํ๋ก์ ํธ์ ๋ํ ์ปค๋ฐ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค. ๋ด๊ฐ ์์๋ค๋ฉด ์ด๋ฏธ ๊ณ ์ณค์ ์๋ ์์ต๋๋ค. ๊ทธ๋ ๊ธดํ์ง๋ง ์ ๋ ํ์ง ๊ธฐ์ค์ด ๋ฎ์ ์ฌ๋๋ค์ด ์์ฑํ ์ํํธ์จ์ด๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ ํธํฉ๋๋ค.
@ 0xABAB ์ด๊ฒ์ ๋ด๊ฐ ๋น์ ์ด ๋ ๋๋ ๊ฒ์ ๋ณธ ๋ ๋ฒ์งธ ๋ฌด๋กํ ๋๊ธ์ ๋๋ค. ๊ธฐ๊บผ์ด ๋์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.ํ์ง๋ง ๋์์ ์ฃผ๋ ค๋ ์ฌ๋๋ค (ํนํ Ansible ์ง์์ด ์๋ ์ปค๋ฎค๋ํฐ ๊ตฌ์ฑ์)์ ๊ณ์ํด์ ํ๋ํ๋ค๋ฉด ๋ฌธ์ ์ ๋ํ ๊ฒ์๋ฅผ ๊ธ์ง ํ ์๋ฐ์ ์์ต๋๋ค.
@ jimi-c ๋น์ ์ ๋ด๊ฐ ๋ฌด๋ฃ๋ก๋ณด๊ณ ํ ๋ชจ๋ ๋ฒ๊ทธ๋ฅผ ๊ธฐ๊บผ์ด ์ธ์ ํ๊ณ , ์ด๋ณด์๊ฐ ๋น์ ์ ์ด๋ฑํ ์ ํ์ ๋ฒ๊ทธ๋ฅผ ๋ฌด๋ฃ๋ก ๊ณ ์ณ ์ฃผ๋ฉด ํ๋ณตํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ณ , ๋ด๊ฐ ์ด๋ณด์์๊ฒ ๊ทธ๊ฐ ์ด๋ณด์๋ผ๊ณ ์ค๋ช ํ๋ฉด ํ๋ณตํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๊ฒ์ด ๋น์ ์ ์์ ๋ ธ๋ ์ ๋ต๊ณผ ์ ๋ง์ง ์๋๋ค๊ณ ?
์ง๋ฏธ ์จ ๊ฐ์ ์ฌ๋๋ค์ด ์ต์ ์ ์ํฉ ์ค ์ต์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋๋ฉด ์์ ์ ํ๋์ ์ดํดํ ์์๋ ์ง๋ฅ์ด ๋ถ์กฑํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ๊ทธ๋ฅ ๊ทธ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ชจ๋์๊ฒ ํธ์๋ฅผ ๋ฒ ํธ๋ ๊ฒ์ ๋๋ค.
@ 0xABAB ๋น์ ์ ์๋ฉ์ด๊ฐ๋๊ณ ์์ต๋๋ค. ๊ฐ๋ฒ๋ ค.
์ถ์ : ๋น์ ์ ๋์ฐ ๋ คํ๋ "์ด๋ณด์"๋ ๋ช ๋ ๋์ Ansible์ 100 ๊ฐ ์ด์์ ์ปค๋ฐ์ ์ ๊ณตํ์ต๋๋ค.
๋๋ Vagrant๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ansible์ ์ต์ํ์ง ์์ง๋ง ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค- -vvv
์ถ๊ฐ๋ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์์ฑํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ํ๊น๊ฒ๋ ์ง๊ธ๊น์ง ๋๊ธ๋ก ์ธํด ์ฌ๋๋ค์ด์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.ํ์ง๋ง ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค (๋๋ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ฝ๋ ๋ค). ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์๊ณ ๋ Ansible์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ด vsphere ์ธ์คํด์ค๊ฐ ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง SSL์ ์คํ ์ค์ด๋ฉฐ ์ธ์ฆ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๋๋ ์ต์ ์ด ์ค์ ๋ก ํ์๋์ง ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ง๋ฌธ์ ์ด๊ฒ์ด ๋ฌธ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ์๋์ง ์ฌ๋ถ์ ๋๋ค. ๋ชจ๋์ ์์ ํ ์๋ชป ์ฌ์ฉํ๊ณ ์์ ์๋ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด ์์ต๋๋ค.
ํ๋ ์ด ๋ถ (vm_provision.yml) :
- hosts: all
gather_facts: false
connection: local
vars_prompt:
- name: "vcenter_username"
prompt: "VCenter Username: "
private: no
- name: "vcenter_password"
prompt: "VCenter Password: "
private: yes
tasks:
- vsphere_guest:
vcenter_hostname: REDACTED
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
guest: "{{ vm_name }}"
from_template: yes
template_src: "{{ vm_template }}"
cluster: "{{ vm_cluster }}"
vm_extra_config:
notes: "{{ vm_note }}"
folder: "{{ vm_folder }}"
์ธ๋ฒคํ ๋ฆฌ (์์ ๋ ํญ๋ชฉ์ ๋ชจ๋ ๋ฌธ์์ด ์) :
[vmtest]
REDACTED vm_name='testvm'
[vmtest:vars]
vm_datastore='REDACTED'
vm_network='REDACTED'
vm_memory='4096' cpucount='2'
vm_template='REDACTED'
vm_note='Testing'
vm_folder='REDACTED'
ansible ์คํ :
ansible-playbook playbooks/vm_provision.yml -i inventory -l vmtest -vvv
SSH password:
SUDO password[defaults to SSH password]:
ERROR! Decryption failed
ansible ๋ฒ์ ์ ๋ณด
ansible --version
ansible 2.1.0
config file = /Users/aaron.nichols/projects/cba-deploy/ansible.cfg
configured module search path = Default w/o overrides
@adnichols ๋ฉ์์ง๋ ansible-vault๊ฐ vars ํ์ผ์ ํด๋ ํ์ง ๋ชปํ ๊ฒฐ๊ณผ์ ๋๋ค. ๋ณผํธ ์ํธ๋ฅผ ์ ๋ฌํ๊ฑฐ๋ ์ ์ฅ๋ ํ์ผ์ ํฌํจํ์ง ์์๋์ง ํ์ธํ์ญ์์ค.
์ค๋ฅ๋ 0f73fb0d6fce6c01e79a68267d184290408b429d๋ฅผ ํตํด ํ์ฌ ๊ฐ๋ฐ์์์ ๋ ๋ช ํ ํด ์ก์ผ๋ฏ๋ก์ด ํฐ์ผ์ ๋ซ์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ํ์ผ์ด ๋ถ๋ช ํด์ง๋๋ค.
์ํธ๊ฐ ์ง์ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ํธ ํด๋
์ ์คํจํ ๊ฒฝ์ฐ --vault-password-file
, --ask-vault-pass
๋๋ ๊ทธ ํจ๊ณผ๋ฅผ ์ฌ์ฉํ๋ผ๋ ์๋ฆผ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
"๋ณตํธํ ์คํจ"๋ ์ฝ๊ฐ ์ ๋งคํฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๊ณ ansible 2.1.1.0์ ์ฌ์ฉํ๊ณ ์์์ ์๊ณ ์์ง๋ง์ด ์ค๋ฅ ๋ฉ์์ง๋ ์ฌ์ ํ ๋ํ๋๊ณ Google์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ค๋ฅ ๋ฉ์์ง์ ๋ณผํธ ํ์ผ์ ์ธ๊ธํ์ง๋ ์์ต๋๋ค.
์ด ๊ฒ์๋ฌผ์ ํตํด ์ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ง๋ง ์์ธ์ .vault.passwd์์ ์ฌ์ฉ ๋ ์ํธ๊ฐ vault.yml์ ์์ฑ ํ ์ํธ๊ฐ ์๋๊ธฐ ๋๋ฌธ์
๋๋ค. ํจ์ฌ ๋ ๋์ ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"{path to vault.yml}์ ์ํธ๋ฅผ ํด๋
ํ ์ ์์ต๋๋ค."
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@ 0xABAB ์ด๊ฒ์ ๋ด๊ฐ ๋น์ ์ด ๋ ๋๋ ๊ฒ์ ๋ณธ ๋ ๋ฒ์งธ ๋ฌด๋กํ ๋๊ธ์ ๋๋ค. ๊ธฐ๊บผ์ด ๋์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.ํ์ง๋ง ๋์์ ์ฃผ๋ ค๋ ์ฌ๋๋ค (ํนํ Ansible ์ง์์ด ์๋ ์ปค๋ฎค๋ํฐ ๊ตฌ์ฑ์)์ ๊ณ์ํด์ ํ๋ํ๋ค๋ฉด ๋ฌธ์ ์ ๋ํ ๊ฒ์๋ฅผ ๊ธ์ง ํ ์๋ฐ์ ์์ต๋๋ค.