Ansible: циклы с элементами или индексированными списками - PullRequest
0 голосов
/ 24 января 2020

Я новичок ie в ansible, и я пытаюсь написать сборник пьес, чтобы другие версии сервиса jboss работали в другой коробке. Дело в том, что у меня может быть запущено 1, 2 или 3 разных сервиса. Если есть только один, каталог будет jbapp и его порт 4280; если их 2, каталогами будут jbapp на 4280 и jbapp2 на 4290 и так далее. Я легко определяю, что нужно с помощью ls / opt. Но когда я пытаюсь запустить curl с помощью find_results, он жалуется на неопределенную переменную, я создал словарь, но я не знаю, как на него ссылаться. По сути, я хочу сделать ansible ~ эквивалент

for server in server_list
  jboss_count = $(ls /opt/jbapp* |wc -l)
  if [ jboss_count == 3 ] then
        jboss_list = "4280 4290 4300"
  else if [jboss_count ==2 ] then
        jboss_list = "4280 4290"
  else if [jboss_count ==1 ] then
        jboss_list = "4280"
  fi
  for jboss in jboss_list
  do 
     curl http://server:jboss/blabla/
  done
done

Это мой код:

vars:
  jbapp_http_port :
    - jbapp:  4280
    - jbapp2: 4290
    - jbapp3: 4300
tasks:
  - name: Finding jbapp directories
      shell: ls /opt |grep jbapp
      register: jboss_list
  - name: Get version jboss
      shell: 'curl http://127.0.0.9:{{ item }}/jbapp/'
with_items:
  -4280
  -4290
  -4300

Задача «Получить версию jboss» должна получить только соответствующий список порты, но я заставил его go через все из них, что не очень хорошо, так как выдает ошибки, когда не все из них установлены.

Заранее спасибо за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...