Возможное изменение значения по умолчанию в соответствии с условием

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

Итак, "{{vcpu_size}}" должен быть определен на основе определяемого пользователем "{{vm_size}}", и я не знаю, как это сделать

Спасибо за помощь

    ---
    - name: Deploy VM on XenServer
      hosts: XEN_Server
      become: true

      tasks:

        - name: Load VPS specs for chosen type
          set_fact:
            vcpu_size: "{{ '2' if ({{ vm_size }} == 'S') }}"
            vcpu_size: "{{ '4' if ({{ vm_size }} == 'M') }}"
            vcpu_size: "{{ '6' if ({{ vm_size }} == 'L') }}"
            vcpu_size: "{{ '8' if ({{ vm_size }} == 'XL') }}"

        - debug:
            msg: "Write {{ vcpu_size }} and to be sure {{ vm_size }}"
0
0
138
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать выражение Jinja следующим образом:

  vcpu_size: "{% if vm_size == 'S' %}2{% elif vm_size == 'M' %}4{% else %}some_def_value_here{% endif %}"
Ответ принят как подходящий

Вы можете определить размеры в group_vars/all или где-нибудь еще (например, vars для роли или в самом playbook):

sizes:
  S: 2
  M: 4
  L: 6
  XL: 8

Тогда используйте это так:

  set_fact:
    vcpu_size: "{{ sizes[vm_size] }}"

Если они, несмотря ни на что, выполняют set_fact, они могут даже поместить вары только в саму задачу!

Kevin M Granger 31.10.2018 14:09

Большое вам спасибо .. Это лучшее решение для моей цели :)

Tomas Jeck 31.10.2018 14:38

Другие вопросы по теме