Выберите переменную в зависимости от условия - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть следующая переменная:

secureVar:
  cosmosconstr: ""
  postgresUrl: ""

, которая может быть либо пустой, либо содержать URL базы данных, в зависимости от того, что мне нужно условно создавать внешние службы в kubernetes:

- name: Get DB data
  when: (secureVars | from_json)['cosmosconstr'] | length == 0 and (secureVars | from_json)['postgresUrl'] | length == 0
  shell: ./python/db_credentials.py -dp {{ deploymentPrefix }}
  register: dbData

- name: Generate external services templates
  when: (secureVars | from_json)['cosmosconstr'] | length == 0 and (secureVars | from_json)['postgresUrl'] | length == 0
  action: template src=k8s/common/external-services.j2 dest=/tmp/k8s-external-svc.yml
  vars:
    cosmosUrl: "{{ dbData.stdout_lines[0] | urlsplit('hostname') }}"
    postgresUrl: "{{ dbData.stdout_lines[1] }}"

- name: Generate external services templates
  when: (secureVars | from_json)['cosmosconstr'] | length > 0 and (secureVars | from_json)['postgresUrl'] | length > 0
  action: template src=k8s/common/external-services.j2 dest=/tmp/k8s-external-svc.yml
  vars:
    cosmosUrl: "{{ ( secureVars | from_json )['cosmosconstr'] | urlsplit('hostname') }}"
    postgresUrl: "{{ ( secureVars | from_json )['postgresUrl'] }}"

это то, что я делаю сейчас, я хотел бы установить условие, чтобы в случае пропуска dbData я использовал secureVars, а если он не пропущен, я использовал dbData, проблема в том, что я не могу проверить,dbData.skipped равно true, потому что, если оно не пропущено, оно не содержит skipped свойство

1 Ответ

0 голосов
/ 28 декабря 2018

Возможно, вы захотите использовать значение по умолчанию False.

когда: dbData.skipped |по умолчанию ('False')

редактировать с OP:

Я закончил тем, что сделал это:

"{% if dbData.skipped is defined %}{{ ( secureVars.stdout | from_json )['postgresUrl'] }}{% else %}{{ dbData.stdout_lines[1] }}{% endif %}"
...