0

ansible を使用して、ec2 で複数のサーバーを構成およびデプロイしています。これらのサーバーは頻繁に変更されるため、動的インベントリを使用したいと考えています。jenkins サーバーに ec2.py と ec2.ini をセットアップしました (ここで ansible スクリプトが実行されます) が、プレイブックを実行すると問題が発生します。

ERROR! Specified --limit does not match any hosts

これは明らかに、ホストが正しく選択されていないことを意味します。私が実行すると:

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

ですべてがよさそうaws_example.jsonです。

名前と環境の 2 つのタグに基づいてサーバーを選択しようとしています。たとえば、'api' の 'Name' タグと 'production' の 'environment' タグを持つサーバーがあります。


私は次の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

さらに、次のタグを 1 つだけ使用してみましたhostname_variable

hostname_variable = tag_Name

次のようにコマンドを実行します。

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

これらの構成はどれも機能しません。また、これらの設定に関する多くのドキュメントを見つけることができないため、正しく設定する方法がわかりません。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

2

したがって、問題は、プレイブックでホスト名をどのように表すかでした。ホスト名変数を設定するのは正しいことでした:

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

.またはなどの特殊文字を に変更して-ください_

于 2016-05-27T17:38:01.910 に答える