<p>boto рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде: рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ boto</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдорд╛рд░реНрдЪ 2016  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ansible/ansible

"msg": "boto required for this module" рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕рдорд░реНрдерди рдХреЛ рдмреЗрдХрд╛рд░ рдореЗрдВ рдмреЗрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрд░реНрдХ рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЯреВрдЯрд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк 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

рдпрд╣ рдУрдПрд╕ рдПрдХреНрд╕ рдорд╢реАрди рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдмреЛрдЯреЛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

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

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкреНрд▓реЗрдмреБрдХ рд╕реЗ рд╣реА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд▓рдХреНрд╖реНрдп рдорд╢реАрди рдкрд░ рдмреЛрдЯреЛ рднреА рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рд▓реЛрдХрд▓_рдПрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ ec2 рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА рдЖрдкрдХреЛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред

which python
/usr/local/bin/python

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@stevenscg , рдЕрднреА рднреА рдореБрдЭреЗ рдЕрдкрдиреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

[localhost]
localhost ansible_connection=local ansible_python_interpreter=python

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ!

рд╕рднреА 32 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕реВрдЪреА рдЬрд╛рдирдХрд╛рд░реА

рдирдорд╕реНрддреЗ!

Ansible рдореЗрдВ рдЖрдкрдХреА рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╢реНрди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдпрд╛ рдЖрдИрдЖрд░рд╕реА рдЪреИрдирд▓ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рд╡рд╣рд╛рдВ рд░реБрдХ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЯреНрд░реИрдХрд░ рдХреЛ рдмрдЧ, рдкреБрд▓ рдЕрдиреБрд░реЛрдз, рдЖрд░рдПрдлрдИ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд▓рд┐рдП рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд╣рдо рдЖрдкрдХреЛ рд╕реВрдЪреА рдпрд╛ рдЖрдИрдЖрд░рд╕реА рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж!

@bcoca рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдФрд░ рдЕрддреАрдд рдХреЗ рд╕рд╛рде рдмрдЧ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдпрд╣ рд╡реИрдз рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ ansible рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ /usr/bin/python рдкрд░ рдкрд╛рдпрдерди 2 рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдПрдХ рдмрдЧ рд╣реИ, рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

@ssbarnea - рдЗрд╕ рдЙрдкрджреНрд░рд╡ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде ec2 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рд┐рд░ рдкреАрдЯ рд░рд╣рд╛ рд╣реИ, рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реАрдорд╛ рдкреИрдЯрд░реНрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдЬреЛрдбрд╝рд╛ рд╣реИред

https://www.zigg.com/2014/using-virtualenv-python-local-ansible.html рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ hosts: localhost рдпрд╛ local_action рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

@ssbarnea @pauricthelodger рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрднреА рднреА рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╕ рдПрдХ рдкреНрд▓реЗрдмреБрдХ рдереА рдЬрд┐рд╕рдиреЗ рдорд╣реАрдиреЛрдВ (рд╡рд░реНрд╖реЛрдВ) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, local_action: ec2_elb рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЬрдм рдИрдПрд▓рдмреА рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ ec2.py рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдХреЛрдЬрд╝ рд╕реЗ Ansible 2.0.0.2, 2.0.1 рдФрд░ 2.1.0 рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╕рдордп рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЬрд╝рд┐рдЧ рд▓реЗрдЦ рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред

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 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдмрдВрдж рд╣реИ? рдпрд╣ рдЕрднреА рднреА рдУрдПрд╕ рдПрдХреНрд╕ (рд╕рд┐рдПрд░рд╛) рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ:

$ 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

рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЗрд╕рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

@rolet Ansible рдбрд┐рдлрд╝реЙрд▓реНрдЯ /usr/bin/python рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ( /usr/local/bin/python рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ)ред рдореЗрд░реА рд╕рд▓рд╛рд╣ - рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ( 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 рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╡рд░реНрдХ-рдЕрд░рд╛рдЙрдВрдб рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ - рдЗрд╕ рддрд░рд╣ рдЕрдЬрдЧрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд╛рди /usr/bin/python рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ Ansible рдХреЛ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдкрд╛рдпрдерди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╣рд╛рдБ рд╣реИред

рдирдХрд╛рд░рд╛рддреНрдордХ рднреВрдд рд╕рд╡рд╛рд░ ... рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рд╣рд░ рджреВрд╕рд░реЗ рдЕрдЬрдЧрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдВрдЧ рдкрде рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдмрдЧ рдХреА рддрд░рд╣ рд╕рдВрдкреВрд░реНрдг рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдирд╣реАрдВ рд╣реИред

рдЪрд▓реЛ рд╕рд╣реА рд╣реЛ, рдЕрдЬрдЧрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ #!/usr/bin/env python рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдФрд░ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рдкрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ ред рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ, рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡реНрд╕ рд╕реЗ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╣рд╛рдВ env рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реНрдг рдкрде рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдХреЛрдЬрд╝ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП env /usr/bin/python рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ /usr/bin/python рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рд╕рдордп рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд╡рд╣ рдереА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдФрд░ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ ansible рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред

@ssbarnea рд╕рд╣рдордд рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ #!/usr/bin/env python virtualenvs рдХреЗ рднреАрддрд░ рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрднреА рднреА рдкрде рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред

рдЙрддреНрддрд░ рдореЗрдВ 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 }}'

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕рдбрд╝рдХ рдХреЗ рдиреАрдЪреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдорджрдж рдорд┐рд▓рддреА рд╣реИ, рдореИрдВ рддреЛ рдмрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрд╛ devel рдмрджрд▓рд╛рд╡ рдХрд╛ Ansible 2.3 рдХреЗ рддрд╣рдд:

рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ 'ansible_playbook_python' рдЬрд┐рд╕рдореЗрдВ 'рд╡рд░реНрддрдорд╛рди рдкрд╛рдпрдерди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп' рд╢рд╛рдорд┐рд▓ рд╣реИ, рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ рд╕реАрдПрд▓рдЖрдИ (sys.executable рд╕реАрдорд╛) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Ansible рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдореИрдХ рдкрд░ рд╣реИрдВ рдФрд░ рдЖрдкрдиреЗ рд╣реЛрдордмреНрд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдЬрдЧрд░ рдХреА рдЕрдиреНрдп рдкреНрд░рддрд┐рдпрд╛рдВ рд╕реНрдерд╛рдкрд┐рдд рдХреА рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдЕрдЬрдЧрд░ рдореЗрдВ рдмреЛрдЯреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

sudo /usr/bin/python -m easy_install pip
sudo /usr/bin/python -m pip install boto

рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!!

рдореИрдВ рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЬрдЧрд░ 3 рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ Ansible рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЬрдЧрд░ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
рддреЛ @rsanchez рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдореИрдВ python рдХреЛ рд╕реНрдкрд╖реНрдЯ python2 рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рдзрдиреНрдпрд╡рд╛рджред

рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП @rsanchez рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдореИрдХ рдкрд░ рдкрд╛рдЗрдерди рдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ "ansible_python_interpreter" рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреМрди рд╕рд╛ рдкрд╛рдпрдерди рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ /usr/bin/python рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ boto рдирд╣реАрдВ рд╣реИ рдФрд░ /usr/рд▓реЛрдХрд▓/рдмрд┐рди/рдкрд╛рдпрдерди (рд╣реЛрдордмреНрд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд) рдореЗрдВ рдпрд╣ рд╣реИ ("рдЗрдореНрдкреЛрд░реНрдЯ рдмреЛрдЯреЛ" рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рдлрд┐рд░ рдЖрдк рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ " ansible_python_interpreter= /usr/local/bin/python " рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА рдЖрдк рдЗрд╕реЗ " --extra-vars='ansible_python_interpreter=/usr/local/bin/python ' ' рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА, рд▓реЗрдХрд┐рди netaddr ред

Ansible рдореЗрд░реА рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХреБрдЫ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛:

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 рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЬрдм рдореИрдВрдиреЗ рднреЛрд▓реЗрдкрди рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде ansible 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"}

рд╣реБрд╣, рджрд┐рд▓рдЪрд╕реНрдкред рдмреЗрд╢рдХ рдореИрдВ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдХрд┐рд╕реА рд╣рд╛рд░реНрдб рдХреЛрдбреЗрдб рдЪреАрдЬрд╝ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ _no рдЕрдиреНрдп рдкрд╛рдпрдерди рдРрдкреНрд╕ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЙрддреНрддрд░рджрд╛рдпреА рдорд╛рд░реНрд╢рд▓ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ ssh рдХреЗ рдмрд┐рдирд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рднреА) рдПрдХ рдкрд╛рдпрдерди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕рд╛рдмреБрди рдХреЗ рдбрд┐рдмреНрдмреЗ рдкрд░ рдЙрдардирд╛, рдорд╛рдирдХ рдЕрднреНрдпрд╛рд╕ рдХреА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рд╕рд╛рде рдЖрд╡рд░реНрддреА рд╕рдорд╕реНрдпрд╛ред рд╕рддреНрд░ рдЯреЛрдХрди (рднреВрдорд┐рдХрд╛ рдзрд╛рд░рдгрд╛ рдпрд╛ рдПрдордПрдлрдП рдСрде рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдЗрддрдиреА рд╕рд╛рд░реА рдЪреБрдиреМрддрд┐рдпрд╛рдВ рд╣реИрдВ рдХрд┐ рдореИрдВ рд╣рд░ рд╕рдВрднрд╡ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП awscli рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдЕрдЧрд░ рд╡реЗ рдмреЛрдЯреЛ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ 2/3 рд╕рдорд╛рдзрд╛рди рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрддреЗ, рддреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╣реЛрддреЗред рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдорд╛рдг-рдкрддреНрд░ рджреВрд░рд╕реНрде рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди 1) рдпрджрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдкрдиреА рд╕рд╛рдЦ рдирд╣реАрдВ рдереА, рддреЛ рдХрд╛рд░реНрдп рдХреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рд╣рд┐рдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡рд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдФрд░ 2) рдпрджрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕рд╛рдЦ рд╣реИ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдЪреБрдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЕрд╕рдВрдмрдВрдзрд┐рдд, рд▓реЗрдХрд┐рди рдЙрддреНрддрд░рджрд╛рдпреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рдЙрдирдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдореИрдВ рдЙрддреНрддрд░рджрд╛рдпреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: рдкреА

рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВрдиреЗ рдХрд┐рдпрд╛:

[local]
localhost              ansible_connection=local     ansible_python_interpreter=/usr/local/bin/python3

рдореЗрд░реЗ рдкрд╛рд╕ pip, botocore, рдФрд░ boto3 рдХреЛ python3 рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдХ рдУрдПрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ /usr/bin/python ред рдПрдХ рдЙрдЪрд┐рдд рд╕реБрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ ansible_python_interpreter рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдмрдВрдж рдХреНрдпреЛрдВ рд╣реИ? рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ 2.5 devel рдкрд░ рд╣реИред

рдореЗрд░рд╛ рдкрд░рдорд╛рдгреБ-рд╡рд┐рдХрд▓реНрдк рдХрд╛рдордХрд╛рдЬ рдореЗрд░реЗ рд╕рд╛рдЗрдЯ-рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдЙрддреНрддрд░рджрд╛рдпреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЛ рд╣реИрдХ рдХрд░рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣рд░ рдмрд╛рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрд░реНрд╕ рдкрд╛рд╕ рдХрд░рдирд╛ рдпрд╛рдж рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред рдЖрдк рд╡рд┐рдВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭ рдкрд░ рдЪрд┐рд▓реНрд▓рд╛рдПрдВ рдирд╣реАрдВ, рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ, рдХреЛрдИ рд╡рд╛рд░рдВрдЯреА рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдпрд╛ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИред

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП:

python -c "import ansible; print ansible.__path__"

рд╕рднреА рдЕрдЬрдЧрд░ рд╢реЗрдмреИрдВрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

 grep -lir "/usr/bin/python" /path/to/my/site-packages/ansible/* | xargs sed -i '' "s|/usr/bin/python|/usr/bin/env python|g"

рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛
рдШрд╛рддрдХ: [рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ]: рд╡рд┐рдлрд▓! => {"рдмрджрд▓рд╛": рдЭреВрдард╛, "рд╕рдВрджреЗрд╢": "рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмреЛрдЯреЛ"}
рд▓реЗрдХрд┐рди рдмреЛрдЯреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдореИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)
sudo /usr/bin/python -m pip install boto
рдФрд░ рдореИрдВрдиреЗ env/hosts . рдореЗрдВ рдПрдХ рдФрд░ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реА
ansible_pyhton_interpreter=/usr/bin/python
рддреЛ рдЗрд╕рдХрд╛ рдХрд╛рдо

рдХреЛрдИ рднреА рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЛрдЯреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛ рддреЛ рдореБрдЭреЗ рдЗрд╕ рдЖрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
sudo /usr/bin/python -m pip install boto

@ jawad486 , рдореИрдВ рдПрдХ рдореИрдХ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЙрдХрдЯрд░ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднреНрдпрд╛рд╕ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕рдиреЗ рдореЙрдбреНрдпреВрд▓ рдЦреЛрдЬрдиреЗ рдХреЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд╣реЗрдЬ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рде, рдирдП рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдмреНрд░реВ, рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡, рдпрд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ред рдореИрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ ~/.aws рдФрд░ ~/.ssh рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реВрдВред

@jawad846 рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкреЛрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдкрд╕ рдкрдврд╝реЗрдВред рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред ansible рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдЬрдЧрд░ рдХреЗ рдкрде рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рддрд╛ рд╣реИред

рдЙрддреНрддрд░ 2.5.1 рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА (рд▓рд┐рдирдХреНрд╕ рдкрд░) рдмрдиреА рд░рд╣рддреА рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╣реЛрд╕реНрдЯреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ansible_python_interpreter=python рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде @pauricthelodger рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ ec2_vpc_net рдФрд░ ec2_vpc_subnet рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ec2_vpc_igw {"changed": false, "msg": "boto is required for this module"} рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдордЬрд╝реЗрджрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдореЙрдбреНрдпреВрд▓ рд╕рднреА рдПрдХ рд╣реА рд╕реЗрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЗрд╕рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдкрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ ec2_vpc_net рдФрд░ ec2_vpc_subnet boto3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди ec2_vpc_igw boto v2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ BOTH boto3 рдФрд░ boto2 рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рд╕рднреА рд╢реЗрдмреИрдВрдЧ рд╣реЗрдбрд░ рдХреЛ @benauthor s sed script рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде

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"

рдЬрд╣рд╛рдВ рд╡реАрдкреА рд╕реНрдерд╛рдиреАрдп рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдкрде рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

2.5.2 рдкрд░ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛

@ timm088 рдореИрдВрдиреЗ рдЕрднреА рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдкрдиреА рдореИрдХрдмреБрдХ рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИред
"рдХреМрди рд╕рд╛ рдкрд╛рдпрдерди" рдЪрд▓рд╛рдПрдВред рдпрд╣ рдЖрдкрдХреЛ рдкрде рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ "/ usr/рд╕реНрдерд╛рдиреАрдп/рдмрд┐рди/рдкрд╛рдпрдерди" рдерд╛ред
рдлрд┐рд░ рдЕрдкрдиреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдПрдВ, рдЙрд╕ рдкрде рдХреЛ ansible_python_interpreter рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред
рдореЗрд░реА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
[рд╕реНрдерд╛рдиреАрдп]
рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ ansible_connection=рд╕реНрдерд╛рдиреАрдп ansible_python_interpreter=/usr/рд▓реЛрдХрд▓/рдмрд┐рди/рдкрд╛рдпрдерди/

рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдорд╛рди рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ Ansible Developers рдиреЗ рдХрд┐рд╕реА рднреА рдЪрд▓ рд░рд╣реА рдЪрд░реНрдЪрд╛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЦреЛрд▓реЗ рдЬрд╛рдиреЗ рдХреЗ 4 рджрд┐рди рдмрд╛рдж рдЗрд╕реЗ рд╕реНрд╡рддрдГ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЕрдВрдд рдореЗрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдПрдХ рдкреНрд░рд╢реНрди рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

https://groups.google.com/forum/#!topic/ansible -project/WCqmyKB46qQ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

hryamzik picture hryamzik  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

eparis picture eparis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Pallokala picture Pallokala  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

renaudguerin picture renaudguerin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rokka-n picture rokka-n  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ