"msg": "boto required for this module"
ã¯ãããžãã¯ãããŸãã«ãå€ãã®å Žæã§å£ããŠããããã«èŠãããããansibleã§ã®ãã¹ãŠã®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
ããã¯OSXãã·ã³ã§çºçããŠããã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ãã£ãã«ã«è»¢éããããšæããŸãã
ãããããé¡ãããŸãã ããã«ããããã°ããã«ãªã¯ãšã¹ããRFEãªã©ã®èª²é¡è¿œè·¡ã·ã¹ãã ãç¶æã§ããŸãã
æ¹ããŠããããšãããããŸããããªã¹ããŸãã¯IRCã§ãäŒãã§ããããšã楜ãã¿ã«ããŠãããŸãã ããããšãïŒ
@bcocaã¯ãã³ããŒãšéå»ã§ãã°ãéããããšã§ãã³ãã¥ããã£ã®ç®æšã
ansibleãpython2ã/usr/bin/python
ã€ã³ã¹ããŒã«ãããŠãããšæ³å®ããŠãããšããäºå®ã¯ãã°ã§ãããéåžžã«é倧ãªãã°ã§ãã
@ ssbarnea-ããŒã«ã«ãã¹ãããã¹ããã¡ã€ã«ã«æ瀺çã«è¿œå ããŠå¶éãã¿ãŒã³ã«å«ããŠä»¥æ¥ãec2ã«é¢é£ãããã¹ãŠã®åé¡ã«ã€ããŠãããã®åä»ãªåé¡ã«é ãæ©ãŸããŠããŸããã
https://www.zigg.com/2014/using-virtualenv-python-local-ansible.htmlã«ã¯ã hosts: localhost
ã䜿çšããã¢ã¯ã·ã§ã³ãšã local_action
åŒã³åºãã®äž¡æ¹ã§æ©èœããŠããããã«èŠããé©åãªãœãªã¥ãŒã·ã§ã³ããããŸãã local_action
@ssbarnea @pauricthelodgerçããã¯ãŸã ããã«åé¡ããããŸããïŒ
ELBã«ã€ã³ã¹ã¿ã³ã¹ãç»é²ãã ec2.py
ã€ã³ãã³ããªã䜿çšãããšãæ°ãæïŒæ°å¹ŽïŒæ©èœããŠãããã¬ã€ããã¯ãlocal_action: ec2_elb
倱æãå§ããŸããã
Ansible 2.0.0.2ã2.0.1ãããã³2.1.0ãæèŒããMacOSããå®è¡ããŠãããšãã«èµ·ãããŸãã
ç§ã¯ãŸã 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ãããansibleããŒãžã§ã³2.0.0.2ã2.0.1ãããã³2.1.0ã§æ©èœããããšã確èªã§ããŸãã å床ãæè¬ããŸãïŒ
ãããééãããŠããçç±ã¯äœã§ããïŒ ããã¯ãŸã OSXïŒ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å¥ã®åé¿çãããããšãããããŸãããç§ãæ¢ããŠããã®ã¯ansibleã®ä¿®æ£ã§ãããåââé¡ãçºçãããã¹ãŠã®äººã«åé¿çã®è¿œè·¡ã«æéãè²»ããå¿ èŠã¯ãªããOSXã§æ£ããæ©èœããŸãã
ããã¯åé¿çã§ã¯ãããŸãã-Pythonãã©ã®ããã«æ©èœãããã§ãã ããã©ã«ãã®å Žæ/usr/bin/python
ã䜿çšããããªãå Žåã¯ãPythonå®è¡å¯èœãã¡ã€ã«ãã©ãã«ããããAnsibleã«æ瀺ããã ãã§ãã
ãã¬ãã£ããŽãŒã¹ãã©ã€ããŒ...å¥åŠãªããšã«ãä»ã®ãã¹ãŠã®Pythonããã°ã©ã ã¯ãvirtualenvãå¿ èŠãšããã«æ£åžžã«åäœããŸãã
å®è¡å¯èœãã¡ã€ã«ãžã®ãã¹ãããŒãã³ãŒãã£ã³ã°ãããšãå€ãã®ç°å¢ã§åé¡ãçºçããŸãã ãã ããéåžžããã®ç¹å®ã®ãã°ã®ããã«ãã©ãããã©ãŒã å šäœã§ã¯ãããŸããã
æ£è§£ã§ããPythonãåŒã³åºãæ£ããæ¹æ³ã¯ãããŒãã³ãŒãããããã¹ã§ã¯ãªãã #!/usr/bin/env python
ã䜿çšããããšã§ãã ãã®ã«ãŒã«ã«ã¯1ã€ã®äŸå€ããããŸããããã¯ã env
ã䜿çšãã代ããã«ããã«ãã¹ã䜿çšããããšãæãŸããvirtualenvsã®ã·ã§ã«ã¹ã¯ãªããã§ãã
ããã©ã«ãã®ã·ã¹ãã Pythonã䜿çšããŠããMacOSã§ã¯ãenvã¯ããŸããŸ/usr/bin/python
ã«è§£æ±ºãããŸãããããã¯ã€ã³ã¹ããŒã«ãããã¹ã¯ãªããã«/usr/bin/python
ã衚瀺ãããããšãæå³ãããã®ã§ã¯ãããŸããã
ç§ãæéããããŠäœ¿çšããããšã®1ã€ã¯ãã·ã§ã«ã¹ã¯ãªããã®äœ¿çšãé¿ããã¢ãžã¥ãŒã«ãšããŠansibleãåŒã³åºãããšã§ããã
@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 }}'
æ¥ç¶ãããŠãããã©ããã¯ããããŸããããå°æ¥ã®äººã ã«åœ¹ç«ã€å Žåã¯ã Ansible2.3ã®éçºå€æŽãã°ã§æ¬¡ã®ããšã«æ°ã¥ããŸããã
'çŸåšã®pythonå®è¡å¯èœãã¡ã€ã«'ãå«ã 'ansible_playbook_python'ãè¿œå ããŸãããAnsibleãæšæºCLIãä»ããŠåŒã³åºãããªãå Žåã¯ç©ºçœã«ãªãå¯èœæ§ããããŸãïŒsys.executableã®å¶éïŒã
Macã䜿çšããŠããŠãhomebrewãä»ããŠPythonã®ä»ã®ã³ããŒãã€ã³ã¹ããŒã«ããŠããå Žåã¯ã次ã®ã³ãã³ããå®è¡ããŠãã·ã¹ãã pythonã«botoãã€ã³ã¹ããŒã«ã§ããŸãã
sudo /usr/bin/python -m easy_install pip
sudo /usr/bin/python -m pip install boto
ããã§åé¡ã¯è§£æ±ºããŸããã ããããšãïŒïŒ
ç§ã¯ArchLinuxã䜿çšããŠãããããã©ã«ãã¯python 3ã®ããã§ãããAnsibleã¯ããã©ã«ãã§python2ã䜿çšããŠããããã§ãã
ãããã£ãŠã python
ãæ瀺çãªpython2
ã«çœ®ãæãããšã @ rsanchezã®ãœãªã¥ãŒã·ã§ã³ãæ©èœããŸãã
ããããšãã
Macã«Pythonã®è€æ°ã®ã³ããŒãååšããå¯èœæ§ãããã·ããªãªã«å¯Ÿããã @ rsanchezã®ãœãªã¥ãŒã·ã§ã³ã«å ããŠãå¥ã®æ¹æ³ã¯ããansible_python_interpreterãå€æ°ãä»ããŠäœ¿çšããPythonãansibleã«æ瀺ããããšã§ãã
/ usr / bin / pythonã®ãã¹ã«botoããªãã / usr / local / bin / python ïŒhomebrewçµç±ã§ã€ã³ã¹ããŒã«ïŒã®ansible_python_interpreter = / 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ç°å¢å€æ°ããã®åé¡ã«åœ¹ç«ã€ãã©ããçåã«æã£ãŠããŸãããç§ã¯ãããã«ã€ããŠããŸãç¥ããŸããã
ç§ãçŽ æŽã«ansible2.3.1.0ã®Dockerãã«ããè¡ã£ããšã
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"}
ãããšãé¢çœãã ãã¡ãããã€ã³ã¿ãŒããªã¿ãŒãããŒãã³ãŒãããããã®ã«èšå®ããããä»ã®åé¿çãèŠã€ãããããããšãã§ããŸãããåã«è¿°ã¹ãããã«ã_ä»ã®Pythonã¢ããªã«ã¯ãã®åé¡ã¯ãããŸãã_ã ansibleãã¿ã¹ã¯ããã¹ãïŒsshãªãã®localhostã§ãïŒã«ããŒã·ã£ãªã³ã°ããæ¹æ³ã¯ãPythonå®è¡å¯èœãã¡ã€ã«ãã³ããŒããããšã§ãããããã§ãããã®å®è¡å¯èœãã¡ã€ã«ã¯ç°å¢èšå®ãå°éããå¿ èŠããããŸãã
å°ãã®éç³é¹žç®±ã«ç«ã¡äžããããã«ãæšæºçãªæ
£è¡ã®ç¡ç¥ã¯ãansibleã§ç¹°ãè¿ãçºçããåé¡ã§ãã AWSã¢ãžã¥ãŒã«ãã»ãã·ã§ã³ããŒã¯ã³ïŒããŒã«ã®åŒãåããŸãã¯mfa authïŒã§äœ¿çšããããšã§éåžžã«å€ãã®èª²é¡ãçºçãããããå¯èœãªéããã¹ãŠã«awscli
ã䜿çšããåŸåããããŸãã ã°ãããããšã¯ãã¯ã¬ãã³ã·ã£ã«ãæž¡ããšããç¬èªã®2/3ãœãªã¥ãŒã·ã§ã³ã泚å
¥ããã®ã§ã¯ãªããããã«ã¯ã¬ãã³ã·ã£ã«ã®è§£æ±ºãåŠçãããã ãã ã£ããšããããäž¡æ¹ã®é·æãæã£ãŠããã ãããšããããšã§ãã 確ãã«ãããŒã«ã«ã¯ã¬ãã³ã·ã£ã«ã¯ãªã¢ãŒããã¹ãããã¯å©çšã§ããŸãããã1ïŒç¬èªã®ã¯ã¬ãã³ã·ã£ã«ããªãå Žåã¯ããšã«ãããããªãã¯APIã«ã®ã¿ããããããããã¿ã¹ã¯ããªã¢ãŒãã§å®è¡ãããã€ã³ãã¯äœã§ãããããã»ãšãã©ã®å ŽåãããŒã«ã«ã§åãããã«ç°¡åã«å®è¡ã§ããŸãã 2ïŒåœŒããç¬èªã®è³æ Œãæã£ãŠããå Žåã¯ãããããããããååŸããããšããå§ãããŸãã ç¡é¢ä¿ã§ãããå®è¡å¯èœãªãã¹ããã©ã¯ãã£ã¹ãç¡èŠããŠé²è¡ãããå®è¡å¯èœãªå®è£
è
ã®å¥ã®äŸã§ãã ç§ãèšãã®ã¯ç°¡åã§ããç§ã¯ansibleãå®è£
ããããšã¯ããŠããŸããïŒP
äžæçãªä¿®æ£ãšããŠãç§ã¯æ¬¡ã®ããšãè¡ããŸããã
[local]
localhost ansible_connection=local ansible_python_interpreter=/usr/local/bin/python3
Mac OSã®ããã©ã«ãã®/usr/bin/python
ã§ã¯ãªããpipãbotocoreãboto3ãpython3ã«çµ±åããŠããŸãã é©åãªä¿®æ£ãšããŠãansible_python_interpreterãç°å¢å€æ°ãšããŠèšå®ããããšãããããããŸããã
ãããéããããŠããçç±ã¯äœã§ããïŒ 2.5éçºã§ãŸã ãã®åé¡ããããŸãã
ç§ã®æ žãªãã·ã§ã³ã®åé¿çã¯ããµã€ãããã±ãŒãžã®ansibleã€ã³ã¹ããŒã«ãããã¯ããããšã§ãããããã¯ãæ¯åäœåãªå€æ°ãæž¡ãããšãå¿ããªãããã«ããããã§ãã ããªãã¯ã²ãããããããŸãããç§ã«æ鳎ããªãã§ãã ãããèªå·±è²¬ä»»ã§é²ãã§ãã ãããæ瀺ãŸãã¯é»ç€ºã®ä¿èšŒã¯ãããŸããã
ãã¡ã€ã«ãèŠã€ããã«ã¯ïŒ
python -c "import ansible; print ansible.__path__"
ãã¹ãŠã®Pythonã·ãã³ãä¿®æ£ããã«ã¯ïŒ
grep -lir "/usr/bin/python" /path/to/my/site-packages/ansible/* | xargs sed -i '' "s|/usr/bin/python|/usr/bin/env python|g"
ç§ã¯ãããè¡ãããšã«ãã£ãŠããã€ãã®ãšã©ãŒã«çŽé¢ããŠããŸãã
èŽåœçïŒ[localhost]ïŒå€±æããŸããïŒ => {"changed"ïŒfalseã "msg"ïŒ "ãã®ã¢ãžã¥ãŒã«ã«ã¯botoãå¿
èŠã§ã"}
ããããbotoã¯ãã§ã«ã€ã³ã¹ããŒã«ãããŠããŸã
ã ããç§ã¯ãã®ã³ãã³ãã䜿çšããŸããïŒMacã䜿çšããŠããããïŒ
sudo / usr / bin / python -m pip install boto
env / hostsã«ãã1è¡è¿œå ããŸãã
ansible_pyhton_interpreter = / usr / bin / python
ã ãããã®ä»äº
誰ã§ããããã®ãšã©ãŒãçºçããçç±ãææ¡ã§ããŸããç§ã¯ãã§ã«botoãã€ã³ã¹ããŒã«ããŠããã®ã§ããªããã®ã³ãã³ããå¿
èŠãªã®ã§ããã
sudo / usr / bin / python -m pip install boto
@ jawad486 ãç§ãMacã䜿çšããŠããã
@ jawad846ãã®åé¡ã«é¢ããæçš¿ã
ansible 2.5.1ã§ã¯ããã®åé¡ã¯ïŒLinuxäžã§ïŒåŒãç¶ãçºçããã¢ãžã¥ãŒã«ãç°ãªãã°åäœãç°ãªããŸãã ãã¹ããã¡ã€ã«ã®ansible_python_interpreter=python
èšå®ã§@pauricthelodgeråé¿çã䜿çšã{"changed": false, "msg": "boto is required for this module"}
倱æããŸãã ãããã®ã¢ãžã¥ãŒã«ã¯ãã¹ãŠåãã»ããã®äžéšã§ãããäžç·ã«äœ¿çšããããããããã¯å¥åŠãªããšã«é¢çœãã§ãã
ãããæãäžããŠã¿ããšãec2_vpc_netãšec2_vpc_subnetã¯boto3ã䜿çšããŠããŸãããec2_vpc_igwã¯botov2ã䜿çšããŠããããšãããããŸããã ãããã£ãŠãboto3ãšboto2ã®äž¡æ¹ãvirtualenvã«ã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã 次ã«ã @ benauthorã®sedã¹ã¯ãªããã®ä¿®æ£ããŒãžã§ã³ã
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ã§ããŸã åé¡
@ timm088Macbookã§ãã®åé¡ãä¿®æ£ããŸããã
ãã©ã®Pythonããå®è¡ããŸãã ãã¹ãæäŸããå¿
èŠããããŸããç§ã®å Žåã¯ã/ usr / local / bin / pythonãã§ããã
次ã«ãã€ã³ãã³ããªãã¡ã€ã«ã«ç§»åãããã®ãã¹ãansible_python_interpreterã«è²Œãä»ããŸãã
ãããç§ã®ã€ã³ãã³ããªãã¹ããã¡ã€ã«ã®å€èŠ³ã§ãã
[ããŒã«ã«]
localhost ansible_connection = local ansible_python_interpreter = / usr / local / bin / python /
ããã§åäœããã¯ãã§ãã
Ansibleã®éçºè ã¯ãéãããŠãã4æ¥åŸã«èªåéããããŠä»¥æ¥ãé²è¡äžã®è°è«ããŸã£ããèŠãŠããªããšæããŸãã ç§ã¯ã€ãã«ã¡ãŒãªã³ã°ãªã¹ãã«è³ªåãæçš¿ããŠããã®æ¹æ³ã§ä¿®æ£ã§ãããã©ããã確èªããŸããã
https://groups.google.com/forum/#!topic/ansible -project / WCqmyKB46qQ
æãåèã«ãªãã³ã¡ã³ã
@stevenscg ããŸã ç§ã®ã€ã³ãã³ããªãã¡ã€ã«ã§ããã䜿ã£ãŠåããŠããŸãïŒ
ãããããªãã®ããã«äœãããããã©ããç§ã«ç¥ãããŠãã ããïŒ