Ansible var_prompt - PullRequest
       24

Ansible var_prompt

0 голосов
/ 30 августа 2018

Я пытаюсь создать playbook, который настроит виртуальный сервер LTM, задавая пользователю несколько вопросов. Вот пример того, как может выглядеть конфигурация:

tmsh create ltm virtual junk_virtual { destination 192.168.51.60:80 ip-protocol tcp pool junk_pool profiles add { tcp { } http { } junk_profile { } } }

Большую часть этого просто выполнить, но мне интересно, как обойти необязательные элементы в конфигурации. Допустим, я спрашиваю пользователя, хотят ли они настроить профиль:

   - name: "virtual_server_profile"
      prompt: "Enter a profile"
      private: no

И в случае, если они захотят настроить профиль, я передам переменную virtual_server_profile в команду виртуальной конфигурации:

 - name: Implementation
    bigip_command:
      server: "{{ inventory_hostname }}"
      user: "{{ remote_username }}"
      password: "{{ remote_passwd }}"
      commands:
        - "tmsh create ltm virtual junk_virtual { destination 192.168.51.60:80 ip-protocol tcp pool junk_pool profiles add { {{ virtual_server_profile }} }"
      validate_certs: no
    delegate_to: localhost

В случае, если пользователь нажимает ввод в приглашении, создавая нулевое значение, есть ли способ удалить / игнорировать часть конфигурации "{добавление профилей {{{virtual_server_profile}}}" "?

1 Ответ

0 голосов
/ 30 августа 2018

В вашем примере у вас не совпадают скобки, я полагаю, вы хотели закрыть с } после virtual_server_profile. В противном случае просто исправьте это самостоятельно.

Вот синтаксис, который вам нужен:

commands:
  - tmsh create ltm virtual junk_virtual { destination 192.168.51.60:80 ip-protocol tcp pool junk_pool {{ 'profiles add {' + virtual_server_profile + '} ' if virtual_server_profile else '' }}}
  • объединяет profiles add { и } строки с переменной virtual_server_profile
  • используйте условное выражение для проверки virtual_server_profile истинности и выведите либо указанное выше значение, либо пустую строку
...