Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Ansible ec2动态库存的问题_Amazon Web Services_Jenkins_Amazon Ec2_Ansible_Ansible Inventory - Fatal编程技术网

Amazon web services Ansible ec2动态库存的问题

Amazon web services Ansible ec2动态库存的问题,amazon-web-services,jenkins,amazon-ec2,ansible,ansible-inventory,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 - name: configure and deploy api servers hosts: tag_Name_api remote_use

我正在使用ansible在ec2中配置和部署几个服务器。由于这些服务器经常变化,我想使用动态资源清册。我已经在jenkins服务器中设置了ec2.py和ec2.ini(这是运行ansible脚本的地方),但在运行playbook时遇到了一个问题:

ERROR! Specified --limit does not match any hosts
- name: configure and deploy api servers
  hosts: tag_Name_api
  remote_user: ec2-user
  sudo: true

  roles:
  - java
  - nginx
  - api
这显然意味着我的主机没有被正确选择。当我跑步时:

./ec2.py --list >> aws_example.json
aws\u example.json中,一切看起来都很好

我试图根据两个标记选择服务器,名称和环境。例如,我有一个服务器,其“Name”标记为“api”,而“environment”标记为“production”


我已经设置了
目的地\u格式\u标签
,如下所示:

destination_format_tags = Name,environment
并按如下方式运行ansible:

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

我还尝试更改了
hostname\u变量

hostname_variable = tag_Name.tag_environment
hostname_variable = tag_Name
然后像这样运行命令:

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

此外,我还尝试只使用一个带有
hostname\u变量的标记

hostname_variable = tag_Name.tag_environment
hostname_variable = tag_Name
然后像这样运行命令:

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


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

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

hostname_variable = tag_Name
下面是如何在剧本中表现出来的:

ERROR! Specified --limit does not match any hosts
- 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 api.production
ansible-playbook site.yml -i ec2.py -l api
ansible-playbook site.yml -i ec2.py -l tag_Name_api

确保将特殊字符(如
-
更改为
.

),因此问题在于我如何在剧本中表示主机名。设置hostname变量是正确的做法:

hostname_variable = tag_Name
下面是如何在剧本中表现出来的:

ERROR! Specified --limit does not match any hosts
- 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 api.production
ansible-playbook site.yml -i ec2.py -l api
ansible-playbook site.yml -i ec2.py -l tag_Name_api

确保将特殊字符(如
-
更改为
.

如何执行剧本?发布包含参数的命令行。@helloV我已经更新了问题以包含命令。您是如何执行剧本的?发布包含参数的命令行。@helloV我已经更新了问题以包含command.tags可以包含的内容。或者任何其他特殊字符,但是库存将所有特殊字符转换为下划线。tag_Name_api.production变为tag_Name_api_production谢谢@smiller171,我已更新了我的答案以反映这一点。tags可以包含。或者任何其他特殊字符,但是库存将所有特殊字符转换为下划线。tag_Name_api.production变为tag_Name_api_production谢谢@smiller171,我已经更新了我的答案以反映这一点。