根据条件更改的默认值

时间:2018-10-31 11:22:30

标签: ansible devops

我需要帮助Ansible,并根据条件使用另一个用户定义的变量来创建变量。 我写了这样的东西,但是我很确定这是错误的脚本。

因此必须根据用户定义的“ {{vm_size}}”来定义“ {{vcpu_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 }}"

2 个答案:

答案 0 :(得分:1)

您可以这样使用Jinja表达式:

  vcpu_size: "{% if vm_size == 'S' %}2{% elif vm_size == 'M' %}4{% else %}some_def_value_here{% endif %}"

答案 1 :(得分:1)

您可以在group_vars/all或其他地方(例如角色的var或剧本本身)中定义尺寸:

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

然后像这样使用它:

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