0

Я использую возможность конфигурирования и развертывания нескольких серверов в ec2. Поскольку эти серверы часто меняются, я бы хотел использовать динамический инвентарь. Я настроил ec2.py и ec2.ini в моем сервере Дженкинс (это где анзибль скрипты запускаются), но я бегу на вопрос, когда я бегу пьес:Устранение неполадок динамических ресурсов ec2

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-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 

Ни одна из этих конфигураций не работает. Я также не могу найти много документации об этих настройках, поэтому я не уверен, как правильно его настроить. Может кто-то указать мне верное направление?

+0

Как вы выполняете playbook? Вывод командной строки, включая аргументы. – helloV

+0

@helloV Я обновил вопрос, включив в него команду. – cscan

ответ

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 

Обязательно для смены специальных символов, таких как . или - - _.

+0

теги могут содержать.или любой другой специальный символ, однако инвентарь преобразует все специальные символы в символы подчеркивания. – smiller171

+0

tag_Name_api.production становится тегом_Name_api_production – smiller171

+0

спасибо @ smiller171, я обновил свой ответ, чтобы отразить это. – cscan