Преобразование оболочки If-else в Ansible - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь преобразовать эту команду в сценарий Ansible. Но мне не везет. Когда модуль не поможет.

if [ ${EnvType} == "PRE" ]
then
 EnvPrefix="RP"
else 
 EnvPrefix=$(echo "${EnvType}" | cut -c1,3)
fi
export EnvPrefix

По сути, мне нужно экспортировать envprefix на основе envtype. Я могу запустить команду оболочки, чтобы узнать, является ли envtype предварительным, но я получаю пустое сообщение, когда пытаюсь экспортировать с использованием модуля оболочки.

- name: Set Envprefix for other environment
shell: |
  EnvPrefix=$(echo "${EnvType}" | cut -c1,3)
  export EnvPrefix
when: output.stdout != "PRE"

1 Ответ

0 голосов
/ 07 мая 2020

Это эквивалент

- set_fact:
    EnvPrefix: "{{ (EnvType == 'PRE')|
                   ternary('ST',[EnvType.0,EnvType.2]|join) }}"
- command: "export {{ EnvPrefix }}"

Если список выбранных вариантов длиннее, map / extract может быть более эффективным

- set_fact:
    EnvPrefix: "{{ (EnvType == 'PRE')|
                   ternary('ST',[0,2]|map('extract',EnvType)|list|join) }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...