Ansible ec2动态库存问题

时间:2016-05-26 15:49:39

标签: amazon-web-services jenkins amazon-ec2 ansible ansible-inventory

我正在使用ansible在ec2中配置和部署多个服务器。由于这些服务器经常更换,我想使用动态库存。我在我的jenkins服务器中设置了ec2.py和ec2.ini(这是运行ansible脚本的地方)但是当我运行playbook时遇到了问题:

ERROR! Specified --limit does not match any hosts

这显然意味着未正确选择我的主机。我跑的时候:

./ec2.py --list >> aws_example.json

aws_example.json中的所有内容都很好。

我正在尝试根据两个标签(名称和环境)选择服务器。例如,我的服务器的“名称”标签为“api”,“环境”标签为“生产”。

我已设置destination_format_tags,如此:

destination_format_tags = Name,environment

并按如下方式运行ansible:

ansible-playbook site.yml -i ec2.py -l api

我也尝试更改hostname_variable

hostname_variable = tag_Name.tag_environment

并像这样运行命令:

ansible-playbook site.yml -i ec2.py -l api.production

此外,我还尝试过只使用hostname_variable的一个标记:

hostname_variable = tag_Name

并像这样运行命令:

ansible-playbook site.yml -i ec2.py -l api

这些配置都不起作用。我也找不到关于这些设置的大量文档,所以我不确定如何正确配置它。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

所以问题是我如何在我的剧本中表示我的主持人姓名。设置hostname变量是正确的做法:

hostname_variable = tag_Name

以下是如何在剧本中表现它:

- name: configure and deploy api servers
  hosts: tag_Name_api
  remote_user: ec2-user
  sudo: true

  roles:
  - java
  - nginx
  - api

此外,它需要像这样调用:

ansible-playbook site.yml -i ec2.py -l tag_Name_api

务必将.-等特殊字符更改为_