首页 文章

Ansible ec2动态库存问题

提问于
浏览
0

我正在使用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 中的一切看起来都不错 .

我正在尝试根据两个标签(名称和环境)选择服务器 . 例如,我有一个服务器,其'Name'标签为'api','environment'标签为'production' .


我已经像这样设置了 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 回答

  • 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
    

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

相关问题