"msg": "boto required for this module"
๋
ผ๋ฆฌ๊ฐ ๋๋ฌด ๋ง์ ๊ณณ์์ ๊นจ์ง ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ aws ์ง์์ ์ธ๋ชจ ์๊ฒ ๋ง๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
local_action
๋๋ ์ง์ ์คํํ๋ ค๊ณ ์๋ํ๊ณ ๋ด๊ฐ ํ์ธํ ๊ฒฝ์ฐ์๋ ์ด๊ฒ์ ๋ ๊ฒฝ์ฐ ๋ชจ๋์์ ๊นจ์ก์ต๋๋ค.
- hosts:
- localhost
tasks:
- pip:
name: boto
- name: Provision Krypton (kr)
local_action: ec2
key_name=kr
instance_type=m4.4xlarge
image=ami-c109e8aa
wait=yes
group=webserver
count=3
vpc_subnet_id="{{ aws_vpc }}"
assign_public_ip=yes
์ด๊ฒ์ OS X ์ปดํจํฐ์์ ๋ฐ์ํ๋ฉฐ boto๊ฐ ์ค์น๋์ด ์์์ ํ์ธํ์ต๋๋ค.
Python 2.7.10 (default, Jul 13 2015, 12:05:58)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto
ํ๋ ์ด๋ถ ์์ฒด์์ ๋ณผ ์ ์๋ฏ์ด ๋์ ์์คํ ์์ boto๋ ๊ฐ์ ธ์ค๋ฉฐ local_action์ ์ฌ์ฉํ๋ ๋์ ec2 ๋ชจ๋์ ์ง์ ํธ์ถํ๋ฉด ์ฌ์ ํ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
which python
/usr/local/bin/python
์๋ !
Ansible์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๊ฒ์ ์ง์ฌ์ผ๋ก ์ฐ๋ฆฌ์๊ฒ ๋ง์ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ์ ์ง๋ฌธ์ธ ๊ฒ ๊ฐ์ผ๋ฉฐ, ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ข ๋ฅ์ ๊ฒ๋ค์ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ IRC ์ฑ๋๋ก ๋ณด๋ด๊ณ ์ถ์ต๋๋ค.
๊ฑฐ๊ธฐ์ ๋ค๋ฌ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฒ๊ทธ, pull ์์ฒญ, RFE ๋ฑ์ ๋ํ ๋ฌธ์ ์ถ์ ๊ธฐ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ๋ชฉ๋ก์ด๋ IRC์์ ๋ต๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๊ฐ์ฌ ํด์!
@bcoca ์นดํผ์ ๊ณผ๊ฑฐ๋ก ๋ฒ๊ทธ๋ฅผ ๋ซ๋ ๊ฒ์ ์ปค๋ฎค๋ํฐ ๋ชฉํ๋ฅผ ์ธ์ฐ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์ ํจํ ๋ฒ๊ทธ ๋ณด๊ณ ์์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋๋๋ค.
asible์ด python 2๊ฐ /usr/bin/python
์ ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค๋ ์ฌ์ค์ ๋ฒ๊ทธ์ด๋ฉฐ ๋งค์ฐ ์ค์ํ ๊ฒ์
๋๋ค.
@ssbarnea - ํธ์คํธ ํ์ผ์ ๋ช ์์ ์ผ๋ก localhost๋ฅผ ์ถ๊ฐํ์ฌ ์ ํ ํจํด์ ํฌํจ์ํจ ์ดํ๋ก ec2์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฌธ์ ์ ๋ํด์๋ ์ด ์ฑ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
https://www.zigg.com/2014/using-virtualenv-python-local-ansible.html ์๋ hosts: localhost
ํ๊ฑฐ๋ local_action
ํธ์ถํ๋ ์์
์ ๋ํด ๋ชจ๋ ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๊ด์ฐฎ์ ์๋ฃจ์
์ด ์์ต๋๋ค
@ssbarnea @pauricthelodger ์์ง๋ ์ด๊ฒ์ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
ELB์ ์ธ์คํด์ค๋ฅผ ๋ฑ๋กํ๊ณ ec2.py
์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ช ๋ฌ(๋ช ๋
) ๋์ ์๋ํ ํ๋ ์ด๋ถ์ด local_action: ec2_elb
์์ ์คํจํ๊ธฐ ์์ํ์ต๋๋ค.
MacOS์์ Ansible 2.0.0.2, 2.0.1, 2.1.0์ ์คํํ ๋ ๋ฐ์ํฉ๋๋ค.
๋๋ ์์ง zigg ๊ธฐ์ฌ ์ถ์ฒ์ ์๋ํ์ง ์์์ต๋๋ค.
TASK [AWS - Register instances with the load balancer] *************************
fatal: [10.x.x.x -> localhost]: FAILED! => {"changed": false, "failed": true, "msg": "boto required for this module"}
$ which python
/usr/local/bin/python
$ pip list boto | grep boto
boto (2.38.0)
boto3 (1.1.4)
botocore (1.2.10)
$ ansible --version
ansible 2.0.0.2
$ python -V
Python 2.7.9
@stevenscg , ์ฌ์ ํ ๋ด ์ธ๋ฒคํ ๋ฆฌ ํ์ผ์์ ์ด๊ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
[localhost]
localhost ansible_connection=local ansible_python_interpreter=python
๊ทธ๊ฒ์ด ๋น์ ์๊ฒ ๋์์ด๋๋ค๋ฉด ์๋ ค์ฃผ์ธ์!
@pauricthelodger ๋๋ ์ด๊ฒ์ด ๊ฐ๋ฅํ ๋ฒ์ 2.0.0.2, 2.0.1 ๋ฐ 2.1.0์์ ์๋ํ์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!
ํ์๋ ์ด์ ๊ฐ ์๋์? OS X(Sierra)์์๋ ์ฌ์ ํ ๋ฌธ์ ์ ๋๋ค.
$ which python
/usr/local/bin/python
$ pip list boto | grep boto
boto (2.45.0)
botocore (1.5.1)
$ ansible --version
ansible 2.2.1.0
$ python -V
Python 2.7.12
์ธ๋ฒคํ ๋ฆฌ ํ์ผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ง๋์ณค์ง๋ง ์ฌ์ ํ ๋ฌธ์ ์ ๋๋ค.
@rolette Ansible์ ๊ธฐ๋ณธ /usr/bin/python
( /usr/local/bin/python
์ ๋์ผํ์ง ์์). ๋ด ์กฐ์ธ - virtualenv ์ฌ์ฉ ( virtualenv .venv
)
๋ฐ ๋ก์ปฌ ํธ์คํธ ์ธ๋ฒคํ ๋ฆฌ: inventory/localhost
:
#!/bin/bash
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/.."
echo "{
\"localhost\": {
\"ansible_connection\": \"local\",
\"ansible_python_interpreter\": \"${ROOT_DIR}/.venv/bin/python\"
}
}"
@wojtek-oledzki ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ์ง๋ง ์ ๊ฐ ์ฐพ๊ณ ์๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ชจ๋ ์ฌ๋์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ถ์ ํ๋ ๋ฐ ์๊ฐ์ ์๋นํ๋๋ก ์๊ตฌํ๋ ๋์ OS X์์ ์ ๋๋ก ์๋ํ๋๋ก ํ๋ ๋ฌธ์ ์ ๋ํ ์์ ์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋๋๋ค. ํ์ด์ฌ์ด ์๋ํ๋ ๋ฐฉ์์
๋๋ค. ๊ธฐ๋ณธ ์์น /usr/bin/python
๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด Python ์คํ ํ์ผ์ด ์๋ ์์น๋ฅผ Ansible์ ์๋ ค ์ฃผ๊ธฐ๋ง โโํ๋ฉด ๋ฉ๋๋ค.
๋ถ์ ์ ์ธ ๊ณ ์คํธ๋ผ์ด๋... ์ด์ํ๊ฒ๋ ๋ค๋ฅธ ๋ชจ๋ ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ virtualenv ์์ด๋ ์ ์๋ํฉ๋๋ค.
์คํ ํ์ผ์ ๋ํ ํ๋ ์ฝ๋ฉ ๊ฒฝ๋ก๋ ๋ง์ ํ๊ฒฝ์์ ์ค๋จ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ํน์ ๋ฒ๊ทธ์ ๊ฐ์ ์ ์ฒด ํ๋ซํผ์ ์๋๋๋ค.
python์ ํธ์ถํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ํ๋์ฝ๋ฉ๋ ๊ฒฝ๋ก๊ฐ ์๋๋ผ #!/usr/bin/env python
๋ฅผ ํตํ๋ ๊ฒ์
๋๋ค. ์ด ๊ท์น์ ๋ํ ํ ๊ฐ์ง ์์ธ๊ฐ ์์ต๋๋ค. virtualenvs์ ์
ธ ์คํฌ๋ฆฝํธ๋ env
๋ฅผ ์ฌ์ฉํ๋ ๋์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ENV๊ฐ ํด๊ฒฐ๋ฉ๋๊น ๊ธฐ๋ณธ ์์คํ
ํ์ด์ฌ ์ฌ์ฉํ์ฌ ๋งฅ OS์ /usr/bin/python
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ณด๋ ๊ฒ์ ์๋ฏธํ์ง ์๋๋ค /usr/bin/python
์ค์น ์คํฌ๋ฆฝํธ๋ฅผ.
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ด๊ฐ ์ฌ์ฉํ ํ ๊ฐ์ง๋ ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ๋ฅํ ๋ชจ๋์ ํธ์ถํ๋ ๊ฒ์ด์์ต๋๋ค.
@ssbarnea #!/usr/bin/env python
๊ฐ virtualenvs ๋ด์์ ์ฌ๋ฐ๋ฅธ ์์
์ ์ํํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ ๋์ํ๋ฏ๋ก ์ฌ์ ํ ๊ฒฝ๋ก๋ฅผ ํ๋์ฝ๋ฉํ ์ด์ ๊ฐ ์์ต๋๋ค.
ansible์์ ec2_tag
๋ชจ๋์ ์ฌ์ฉํ ๋๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
TASK [Retrieve all tags on an instance] ****************************************
fatal: [10_12_26_12]: FAILED! => {"changed": false, "failed": true, "msg": "boto required for this module"}
ํ๋ ์ด๋ถ:
- name: Get instance ec2 facts
action: ec2_facts
register: ec2_facts
- name: Retrieve all tags on an instance
ec2_tag:
region: '{{ ansible_ec2_placement_region }}'
resource: '{{ ansible_ec2_instance_id }}'
state: list
register: ec2_tags
๊ทธ๋ฌ๋ local_action์ผ๋ก ์์
- name: Get instance ec2 facts
action: ec2_facts
register: ec2_facts
- name: Get resource tags from ec2 facts
#sudo: false
local_action: ec2_tag resource={{ec2_facts.ansible_facts.ansible_ec2_instance_id}} region={{ec2_facts.ansible_facts.ansible_ec2_placement_region}} state=list
register: ec2_tags
ec2_elb
ํ๊ทธ์ ๋์ผํ ์ค๋ฅ:
pre_tasks:
- name: Gathering ec2 facts
action: ec2_facts
- name: Trackor Instance de-register
become: no
local_action:
module: ec2_elb
region: "{{ ansible_ec2_placement_region }}"
instance_id: "{{ ansible_ec2_instance_id }}"
state: absent
wait_timeout: 30
ec2_elbs: '{{ trackor_elb_name }}'
์ฐ๊ฒฐ๋์ด ์๋์ง ํ์คํ์ง ์์ง๋ง ์ฌ๋๋ค์๊ฒ ๋์์ด ๋ ์ ์๋๋ก Ansible 2.3์ ๊ฐ๋ฐ ๋ณ๊ฒฝ ๋ก๊ทธ ์์ ๋ค์์ ํ์ธํ์ต๋๋ค.
'ํ์ฌ python ์คํ ํ์ผ'์ด ํฌํจ๋ 'ansible_playbook_python'์ด ์ถ๊ฐ๋์์ต๋๋ค. Ansible์ด ํ์ค CLI(sys.executable ์ ํ)๋ฅผ ํตํด ํธ์ถ๋์ง ์๋ ๊ฒฝ์ฐ์๋ ๋น์ด ์์ ์ ์์ต๋๋ค.
Mac์ ์ฌ์ฉ ์ค์ด๊ณ homebrew๋ฅผ ํตํด python์ ๋ค๋ฅธ ๋ณต์ฌ๋ณธ์ ์ค์นํ๋ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ boto๋ฅผ ์์คํ python์ ์ค์นํ ์ ์์ต๋๋ค.
sudo /usr/bin/python -m easy_install pip
sudo /usr/bin/python -m pip install boto
์ด๊ฒ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!!
์ ๋ Arch Linux๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ python 3์ธ ๋ฐ๋ฉด Ansible์ ๊ธฐ๋ณธ์ ์ผ๋ก python 2๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ python
๋ฅผ ๋ช
์์ ์ธ python2
๋ฐ๊พธ๋ฉด @rsanchez ์ ์๋ฃจ์
์ด ์ ์๊ฒ ํจ๊ณผ์ ์
๋๋ค.
๊ฐ์ฌ ํด์.
Mac์ ์ฌ๋ฌ ๊ฐ์ ํ์ด์ฌ ์ฌ๋ณธ์ด ์์ ์ ์๋ ์๋๋ฆฌ์ค์ ๋ํ @rsanchez ์ ์๋ฃจ์ ์ธ์๋, ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ "ansible_python_interpreter" ๋ณ์๋ฅผ ํตํด ์ฌ์ฉํ ํ์ด์ฌ์ ์๋ ค์ฃผ๋ ๊ฒ์ ๋๋ค.
/usr/bin/python ์ ๊ฒฝ๋ก์ boto๊ฐ ์๊ณ /usr/local/bin/python (homebrew๋ฅผ ํตํด ์ค์น๋จ)์ python์ boto๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค(repl์ ์๋ ๋์ "import boto" ์๋). ๊ทธ๋ฐ ๋ค์ ์ธ๋ฒคํ ๋ฆฌ ํ์ผ์์ " /usr/local/bin/python "์ ์ค์ ํ ์ ์์ต๋๋ค.
๋ํ " --extra-vars='ansible_python_interpreter=/usr/local/bin/python ' " ์ต์ ์ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ค์์ ์ค์ ํฉ๋๋ค.
๋๋ ์ด์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์์ง๋ง netaddr
.
Ansible์ ๋ด ์ปดํจํฐ์ ์ค์น๋ ์ ๋์ ์ผ๋ก ์์์ python ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
ansible all -i ./.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory -m debug -a "var=ansible_playbook_python"
elastic0 | SUCCESS => {
"ansible_playbook_python": "/usr/local/opt/python/bin/python2.7"
}
๊ทธ๋ฐ ๋ค์ /usr/local/opt/python/bin/python2.7 -m pip install netaddr
ํธ๋ฆญ์ ์ฌ์ฉํ์ฌ ์ค์นํ์ต๋๋ค.
PYTHON_HOME ๋ฐ PYTHON_PATH์ ๊ฐ์ python ํ๊ฒฝ ๋ณ์๊ฐ ์ด ๋ฌธ์ ์ ๋์์ด ๋ ์ง ๊ถ๊ธํ์ง๋ง ์ด์ ๋ํด ๋๋ฌด ๋ง์ด ์์ง๋ ๋ชปํฉ๋๋ค.
๋ด๊ฐ ์์งํ๊ฒ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ผ๋ก ๊ฐ๋ฅํ 2.3.1.0์ ์ํ ๋์ปค ๋น๋๋ฅผ ํ์ ๋
FROM python:2.17
RUN pip install --upgrade pip
RUN pip install boto3 botocore ansible>=2.3.1.0 awscli
์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค
fatal: [127.0.0.1]: FAILED! => {"changed": false, "failed": true, "msg": "boto3 and botocore are required for this module"}
ํฅ๋ฏธ๋กญ๊ตฐ. ๋ฌผ๋ก ์ธํฐํ๋ฆฌํฐ๋ฅผ ํ๋ ์ฝ๋ฉ๋ ๊ฒ์ผ๋ก ์ค์ ํ๊ฑฐ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ง๋ง ์ด์ ์ ๋งํ๋ฏ์ด _๋ค๋ฅธ ํ์ด์ฌ ์ฑ์๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค_. ๊ฐ๋ฅํ ์์ ์ ํธ์คํธ๋ก ๋ง์ฌ๋งํ๋ ๋ฐฉ๋ฒ( ssh ์๋ localhost )์ ํ์ด์ฌ ์คํ ํ์ผ์ ๋ณต์ฌํ๋ ๊ฒ์ด์ง๋ง ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ํด๋น ์คํ ํ์ผ์ ํ๊ฒฝ ์ค์ ์ ์กด์คํด์ผ ํฉ๋๋ค.
์ ์ ๋์ ๋น๋ ์์์์ ์ผ์ด๋๊ธฐ ์ํด ํ์ค ๊ดํ์ ๋ํ ๋ฌด์ง๋ ๋ํ์ด๋๋ ๋ฌธ์ ์
๋๋ค. ์ธ์
ํ ํฐ(์ญํ ์์ ๋๋ mfa auth์ฉ)๊ณผ ํจ๊ป AWS ๋ชจ๋์ ์ฌ์ฉํ๋ ๋ฐ ๋ง์ ์ด๋ ค์์ ๊ฒช์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ์ awscli
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ด๋ฆฌ์์ ์ ์ ๊ทธ๋ค์ด ์๊ฒฉ ์ฆ๋ช
์ ์ ๋ฌํ๋ ์์ฒด 2/3 ์๋ฃจ์
์ ์ฃผ์
ํ๋ ๋์ boto๊ฐ ์๊ฒฉ ์ฆ๋ช
ํ์ธ์ ์ฒ๋ฆฌํ๋๋ก ํ๋ค๋ฉด ๋ ๊ฐ์ง ์ฅ์ ์ ๋ชจ๋ ๋๋ฆด ์ ์์์ ๊ฒ์
๋๋ค. ๋ฌผ๋ก ๋ก์ปฌ ์๊ฒฉ ์ฆ๋ช
์ ์๊ฒฉ ํธ์คํธ์์ ์ฌ์ฉํ ์ ์์ง๋ง 1) ์์ฒด ์๊ฒฉ ์ฆ๋ช
์ด ์์ผ๋ฉด ์ด์จ๋ ๊ณต์ฉ API์๋ง ๋๋ฌํ๊ธฐ ๋๋ฌธ์ ์๊ฒฉ์ผ๋ก ์์
์ ์คํํ๋ ์์ ์ ๋ฌด์์
๋๊น? ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ก์ปฌ์์ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค. 2) ๊ทธ๋ค์ด ์์ ์ ์๊ฒฉ ์ฆ๋ช
์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์๋ง๋ ๊ทธ๊ฒ์ ์ ํํ๊ณ ์ถ์ ๊ฒ์
๋๋ค. ๊ด๋ จ์ด ์์ง๋ง ์ํํ ์ ์๊ณ ๋ฐ๋ผ์ผ ํ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ชจ๋ฅด๊ณ ์งํํ๋ ์คํ ๊ฐ๋ฅํ ๊ตฌํ์์ ๋ ๋ค๋ฅธ ์์
๋๋ค. ๋ด๊ฐ ๋งํ๊ธฐ ์ฌ์ด, ๋๋ ๊ฐ๋ฅํ ๊ตฌํํ๋ ค๊ณ ํ์ง ์์ต๋๋ค : P
์์ ์์ ์ผ๋ก ๋ด๊ฐ ํ :
[local]
localhost ansible_connection=local ansible_python_interpreter=/usr/local/bin/python3
Mac OS ๊ธฐ๋ณธ๊ฐ /usr/bin/python
์๋ python3์ ํตํฉ๋ pip, botocore ๋ฐ boto3์ด ์์ต๋๋ค. ์ ์ ํ ์์ ์ผ๋ก ๋๋ ํ๊ฒฝ ๋ณ์๋กsible_python_interpreter๋ฅผ ์ค์ ํ๋ ค๊ณ ํ ์ ์์ต๋๋ค.
ํ์๋ ์ด์ ๊ฐ ์๋์? 2.5 devel์์ ์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ด ํต ์ต์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋งค๋ฒ ์ถ๊ฐ ๋ณ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๊ธฐ์ตํ๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ ๋ด ์ฌ์ดํธ ํจํค์ง์์ ansible ์ค์น๋ฅผ ํดํนํ๋ ๊ฒ์ ๋๋ค. ๋น์ ์ ์์ฐํ ์ ์๊ณ , ๋์๊ฒ ์๋ฆฌ์ง๋ฅด์ง ์๊ณ , ์ค์ค๋ก ์ํ์ ๊ฐ์ํ๊ณ ์งํํ๋ฉฐ, ๋ช ์์ ์ด๊ฑฐ๋ ๋ฌต์์ ์ธ ๋ณด์ฆ์ด ์์ต๋๋ค.
ํ์ผ์ ์ฐพ์ผ๋ ค๋ฉด:
python -c "import ansible; print ansible.__path__"
๋ชจ๋ python shebangs๋ฅผ ์์ ํ๋ ค๋ฉด:
grep -lir "/usr/bin/python" /path/to/my/site-packages/ansible/* | xargs sed -i '' "s|/usr/bin/python|/usr/bin/env python|g"
๋๋ ์ด๊ฒ์ํจ์ผ๋ก์จ ์ฝ๊ฐ์ ์ค๋ฅ์ ์ง๋ฉดํ๋ค
์น๋ช
์ : [localhost]: ์คํจ! => {"๋ณ๊ฒฝ๋จ": false, "msg": "์ด ๋ชจ๋์ boto๊ฐ ํ์ํจ"}
ํ์ง๋ง boto๋ ์ด๋ฏธ ์ค์น๋์ด ์์ต๋๋ค
๊ทธ๋์ ๋๋์ด ๋ช
๋ น์ ์ฌ์ฉํ์ต๋๋ค (Mac์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์)
sudo /usr/bin/python -m pip ์ค์น boto
env/hosts์ ํ ์ค ๋ ์ถ๊ฐํ์ต๋๋ค.
sible_pyhton_interpreter=/usr/bin/python
๊ทธ๋์ ๊ทธ ์ผ
๋๊ตฌ๋ ์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ฏธ boto๋ฅผ ์ค์นํ ๋ค์ ์ด ๋ช
๋ น์ด ํ์ํ ์ด์ ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
sudo /usr/bin/python -m pip ์ค์น boto
@jawad486 , ์ ๋ Mac์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ docker์์๋ง ๊ฐ๋ฅํ๊ฒ ์คํํ๋ ๊ฒ์ ์ฐ์ตํ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ชจ๋์ ์ฐพ๋ ๋ฌธ์ ๋ฅผ ์์ ํ ํผํ์ผ๋ฉฐ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฒ์ , ์ ๋ฒ์ ๋๋ ์ด์ ๋ฒ์ ์ ๋์์ ์์ ์ ์ผ๋ก ์คํํ ์ ์๊ฒ ํ์ต๋๋ค. brew, virtualenv ๋๋ ๋ด์ฅ Python์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๋์ผํ๊ฒ ๋งํ ์ ์์ต๋๋ค. ํ์์ ๋ฐ๋ผ ~/.aws ๋ฐ ~/.ssh์ ๋ง์ดํธํฉ๋๋ค.
@jawad846 ์ด ๋ฌธ์ ์ ๋ํ ๊ฒ์๋ฌผ์ ๋ค์ ์ฝ์ผ์ญ์์ค. ๋ฒ๊ทธ์ ๋๋ค. ํ๊ฒฝ์์ ๊ฐ์ ธ์ค๋ ๋์ python์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์๋ชป ํ๋์ฝ๋ฉํฉ๋๋ค.
ansible 2.5.1์์ ์ด ๋ฌธ์ ๋ ์ฌ์ ํ ์ง์๋๋ฉฐ(๋ฆฌ๋
์ค์์) ๋ค๋ฅธ ๋ชจ๋์ ๋ค๋ฅด๊ฒ ์๋ํฉ๋๋ค. ํธ์คํธ ํ์ผ์ ansible_python_interpreter=python
์ค์ ๊ณผ ํจ๊ป @pauricthelodger ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉ {"changed": false, "msg": "boto is required for this module"}
์ ํจ๊ป ์คํจํฉ๋๋ค. ์ด ๋ชจ๋์ ๋ชจ๋ ๊ฐ์ ์ธํธ์ ์ผ๋ถ์ด๊ณ ํจ๊ป ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ด์ํ๊ฒ ์๊น๋๋ค.
์ด๊ฒ์ ํ๊ณ ๋ค๋ฉด ec2_vpc_net๊ณผ ec2_vpc_subnet์ boto3๋ฅผ ์ฌ์ฉํ์ง๋ง ec2_vpc_igw๋ boto v2๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ virtualenv boto3 ๋ฐ boto2์ ๋ชจ๋ ์ค์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ @benauthor s sed ์คํฌ๋ฆฝํธ์ ์์ ๋ ๋ฒ์ ์ผ๋ก ๋ชจ๋ shebang ํค๋๋ฅผ
grep -lir "/usr/bin/python" vp/local/lib/python2.7/site-packages/ansible/* | xargs sed -i "s@/usr/bin/python@/usr/bin/env python@g"
์ฌ๊ธฐ์ vp๋ ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ก์ปฌ virtualenv ๊ฒฝ๋ก์ ๋๋ค.
2.5.2์์๋ ์ฌ์ ํ ๋ฌธ์
@ timm088 ๋ฐฉ๊ธ ๋ด ๋งฅ๋ถ์์ ๊ทธ ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค.
"์ด๋ค ํ์ด์ฌ"์ ์คํํ์ญ์์ค. ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ ๊ฒฝ์ฐ์๋ "/usr/local/bin/python"์ด์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ธ๋ฒคํ ๋ฆฌ ํ์ผ๋ก ์ด๋ํ์ฌ ํด๋น ๊ฒฝ๋ก๋ฅผsible_python_interpreter์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
์ธ๋ฒคํ ๋ฆฌ ํธ์คํธ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
[ํ์ง์]
๋ก์ปฌ ํธ์คํธ ansible_connection=๋ก์ปฌ ansible_python_interpreter=/usr/local/bin/python/
์ง๊ธ ์๋ํด์ผ ํฉ๋๋ค.
Ansible ๊ฐ๋ฐ์๋ ์ด๋ฆฐ ์ง 4์ผ ํ์ ์๋์ผ๋ก ๋ซํ๊ธฐ ๋๋ฌธ์ ์งํ ์ค์ธ ํ ๋ก ์ ๋ณธ ์ ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ง์นจ๋ด ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ์ง๋ฌธ์ ๊ฒ์ํ์ฌ ๊ทธ๋ฐ ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋์ง ์์๋ณด์์ต๋๋ค.
https://groups.google.com/forum/#!topic/ansible -project/WCqmyKB46qQ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@stevenscg , ์ฌ์ ํ ๋ด ์ธ๋ฒคํ ๋ฆฌ ํ์ผ์์ ์ด๊ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ทธ๊ฒ์ด ๋น์ ์๊ฒ ๋์์ด๋๋ค๋ฉด ์๋ ค์ฃผ์ธ์!