使用Ansible设置EC2实例时遇到问题

布赖恩·迪卡萨

我对如何使用Ansible启动EC2实例感到非常困惑。

我正在尝试使用ec2.py库存脚本。我不确定应该使用哪一个,因为Ansible安装了三个:

  • ansible / lib / ansible / module_utils / ec2.py
  • ansible / lib / ansible / modules / core / cloud / amazon / ec2.py
  • ansible /插件/库存/ec2.py

我认为在库存/中运行一个最有意义,所以我使用以下命令运行它:

ansible-playbook launch-ec2.yaml -i ec2.py

这给了我:

msg: Either region or ec2_url must be specified

所以我添加了一个区域(即使我指定了vpc_subnet_id),我得到:

msg: Region us-east-1e does not seem to be available for aws module boto.ec2. If the region definitely exists, you may need to upgrade boto or extend with endpoints_path

我认为Amazon必须最近更改了ec2,因此您需要使用VPC?即使当我尝试从Amazon控制台启动实例时,“ EC2 Classic”选项也被禁用。

当我尝试在cloud / amazon /中使用ec2.py脚本时,我得到:

ERROR: Inventory script (/software/ansible/lib/ansible/modules/core/cloud/amazon/ec2.py) had an execution error:

没有比这更多的细节了。

搜索后,我发现/ module_utils中的ec2.py模块已更改,因此不需要指定区域。我尝试运行此文件,但得到:

错误:文件/software/ansible/lib/ansible/module_utils/ec2.py被标记为可执行文件,但无法正确执行。如果不应将其视为可执行脚本,请使用进行更正chmod -x /software/ansible/lib/ansible/module_utils/ec2.py

因此,正如错误所提示的,我删除了ec2.py文件的可执行权限,但是随后出现以下错误:

ERROR: /software/ansible/lib/ansible/module_utils/ec2.py:30: Invalid ini entry: distutils.version - need more than 1 value to unpack

有谁对如何使它起作用有任何想法吗?什么是正确的文件?在这一点上,我完全迷失了如何使它工作。

ll

您的帖子中有几个问题。我将尝试在三个项目中对它们进行总结:

  1. 是否仍可以在EC2 Classic(无VPC)中启动实例?
  2. 如何使用Ansible创建新的EC2实例?
  3. 如何启动动态库存文件ec2.py

1. EC2经典版

根据您何时创建AWS账户,实例类型和使用的AMI虚拟化类型,您的选择会有所不同。参考:aws account实例类型

如果以上参数均未限制EC2 classic的使用,则您应该能够在不定义任何VPC的情况下创建新实例。

2.使用Ansible创建一个新的EC2实例

由于您的实例不存在,因此动态清单文件(ec2.py)无效。尝试指示ansible在您的本地计算机上运行。

创建一个新的清单文件,例如,new_hosts具有以下内容:

[localhost]
127.0.0.1

然后,您的剧本(例如)create_instance.yml应使用本地连接和hosts: localhost请参阅以下示例:

--- # Create ec2 instance playbook

- hosts: localhost
  connection: local
  gather_facts: false
  vars_prompt:
    inst_name: "What's the name of the instance?"
  vars:
      keypair: "your_keypair"
      instance_type: "m1.small"
      image: "ami-xxxyyyy"
      group: "your_group"
      region: "us-west-2"
  tasks:
    - name: make one instance
      ec2: image={{ image }}
           instance_type={{ instance_type }}
           keypair={{ keypair }}
           instance_tags='{"Name":"{{ inst_name }}"}'
           region={{ region }}
           group={{ group }}
           wait=true
      register: ec2_info

    - name: Add instances to host group
      add_host: hostname={{ item.public_ip }} groupname=ec2hosts
      with_items: ec2_info.instances

    - name: Wait for SSH to come up
      wait_for: host={{ item.public_dns_name }} port=22 delay=60 timeout=320 state=started
      with_items: ec2_info.instances

该过程将创建一个EC2实例,并将其公共IP注册为可访问的主机变量,ec2hosts即。就像您在清单文件中定义它一样。如果您要设置刚刚创建的实例,只需添加一个新的角色,这将很有用hosts: ec2hosts

最终,按以下方式启动ansible:

export ANSIBLE_HOST_KEY_CHECKING=false
export AWS_ACCESS_KEY=<your aws access key here>
export AWS_SECRET_KEY=<your aws secret key here>

ansible-playbook -i new_hosts create_instance.yml

环境变量的目的ANSIBLE_HOST_KEY_CHECKING=false是避免在连接到实例时提示您添加ssh主机密钥。

注意:需要在运行上述ansible命令的计算机上安装boto。

3.使用Ansible的ec2动态广告空间

EC2动态清单由2个文件ec2.py和组成ec2.ini在您的特定情况下,我认为您的问题是由于ec2.py无法找到ec2.ini文件。

要解决您的问题,请复制ec2.py复制ec2.ini到要运行ansible的计算机上的同一文件夹,例如/etc/ansible/

Pre Ansible 2.0发行版(相应地更改分支)

cd /etc/ansible
wget https://raw.githubusercontent.com/ansible/ansible/stable-1.9/plugins/inventory/ec2.py
wget https://raw.githubusercontent.com/ansible/ansible/stabe-1.9/plugins/inventory/ec2.ini
chmod u+x ec2.py

对于Ansible 2

cd /etc/ansible
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/ec2.py
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/ec2.ini
chmod u+x ec2.py

配置ec2.ini并运行ec2.py,这应该将ini格式的主机列表打印到stdout。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Ansible将Quantum Mobile部署到AWS EC2实例时遇到问题。我不确定如何配置名为“ vagrant”或“ vagrant-ssh”的设置

来自分类Dev

在Amazon EC2 Linux Micro实例上的virtualenv中安装scipy时遇到问题

来自分类Dev

创建简单的Terraform脚本以启动AWS EC2实例时遇到问题

来自分类Dev

我在使用 .pem 通过 SSH 连接到 AWS EC2 时遇到问题

来自分类Dev

遇到Mup设置错误(AWS EC2实例)

来自分类Dev

EC2实例连接:设置实例连接时出现问题

来自分类Dev

创建ViewController实例时遇到问题

来自分类Dev

使用PowerShell cmdlet设置MSMQ ACL时遇到问题

来自分类Dev

使用CSS设置SVG样式时遇到问题?

来自分类Dev

使用 CSS 设置图像样式时遇到问题

来自分类Dev

使用 jQuery 设置元素的 onclick 属性时遇到问题

来自分类Dev

在本地/远程设置git时遇到问题(使用Coda 2和Terminal)

来自分类Dev

如何为ec2实例设置ansible?

来自分类Dev

设置 $_SESSION['lang'] 时遇到问题

来自分类Dev

设置 $PATH 时遇到问题

来自分类Dev

使用ggplot2进行绘图时遇到问题

来自分类Dev

尝试使用Ansible更改EC2实例的根volume_size时出错

来自分类Dev

安装wxwidgets 2时遇到问题

来自分类Dev

安装wxwidgets 2时遇到问题

来自分类Dev

使用Ansible启动AWS EC2实例的最佳方法

来自分类Dev

使用AWS凭证由Ansible创建EC2实例

来自分类Dev

使用Ansible连接到AWS EC2实例

来自分类Dev

使用 Ansible 配置多个 EC2 实例

来自分类Dev

使用CloudFormation启动EC2实例时出现的安全组问题

来自分类Dev

使用LIKE%...%时遇到问题

来自分类Dev

使用onLoad与.each()时遇到问题

来自分类Dev

使用AWS SWF时遇到问题

来自分类Dev

我在使用Geolocation时遇到问题

来自分类Dev

我在使用 OneDrive 时遇到问题

Related 相关文章

  1. 1

    使用Ansible将Quantum Mobile部署到AWS EC2实例时遇到问题。我不确定如何配置名为“ vagrant”或“ vagrant-ssh”的设置

  2. 2

    在Amazon EC2 Linux Micro实例上的virtualenv中安装scipy时遇到问题

  3. 3

    创建简单的Terraform脚本以启动AWS EC2实例时遇到问题

  4. 4

    我在使用 .pem 通过 SSH 连接到 AWS EC2 时遇到问题

  5. 5

    遇到Mup设置错误(AWS EC2实例)

  6. 6

    EC2实例连接:设置实例连接时出现问题

  7. 7

    创建ViewController实例时遇到问题

  8. 8

    使用PowerShell cmdlet设置MSMQ ACL时遇到问题

  9. 9

    使用CSS设置SVG样式时遇到问题?

  10. 10

    使用 CSS 设置图像样式时遇到问题

  11. 11

    使用 jQuery 设置元素的 onclick 属性时遇到问题

  12. 12

    在本地/远程设置git时遇到问题(使用Coda 2和Terminal)

  13. 13

    如何为ec2实例设置ansible?

  14. 14

    设置 $_SESSION['lang'] 时遇到问题

  15. 15

    设置 $PATH 时遇到问题

  16. 16

    使用ggplot2进行绘图时遇到问题

  17. 17

    尝试使用Ansible更改EC2实例的根volume_size时出错

  18. 18

    安装wxwidgets 2时遇到问题

  19. 19

    安装wxwidgets 2时遇到问题

  20. 20

    使用Ansible启动AWS EC2实例的最佳方法

  21. 21

    使用AWS凭证由Ansible创建EC2实例

  22. 22

    使用Ansible连接到AWS EC2实例

  23. 23

    使用 Ansible 配置多个 EC2 实例

  24. 24

    使用CloudFormation启动EC2实例时出现的安全组问题

  25. 25

    使用LIKE%...%时遇到问题

  26. 26

    使用onLoad与.each()时遇到问题

  27. 27

    使用AWS SWF时遇到问题

  28. 28

    我在使用Geolocation时遇到问题

  29. 29

    我在使用 OneDrive 时遇到问题

热门标签

归档