【问题标题】:Variable name is undefined in ansible变量名称在ansible中未定义
【发布时间】:2022-11-21 20:05:05
【问题描述】:

我正在尝试编写一个角色剧本,在该剧本运行的机器上完成它的一些任务。我通过使用 bash 脚本在角色的 vars 文件夹中生成 vars 文件来定义变量。之后,下一个任务将使用 bash 脚本中定义的变量部署多个网络,但我收到此错误:

致命的[目标节点]:失败! => { msg": "'vars_t0' 未定义}

这是我的剧本:

    - name: Running Script
      script: generate_var.sh 2
      register: result


    - name: Modify Tier0
      vmware.ansible_for_nsxt.nsxt_policy_tier0:
        hostname: "********"
        username: "admin"
        password: "********"
        validate_certs: False
        state: present
        display_name: "{{ item.t0_name }}"
        locale_services:
          - state: present
            edge_cluster_info:
              edge_cluster_display_name: "*******"
            preferred_edge_nodes_info:
              - edge_cluster_display_name: "********"
                edge_node_display_name: "*********"
      with_items: "{{ var_t0 }}"

这是从任务 bash 脚本生成的 vars 文件:

vars_t0:
  - t0_name: T0_GW_01
  - t0_name: T0_GW_02

【问题讨论】:

  • 你想让你的脚本做的不仅仅是生成映射变量t0_name: T0_GW_{1..n}吗?如果不是,那么在 ansible 中生成这些映射并传递该变量会更容易

标签: ansible


【解决方案1】:

问题是因为当您运行创建变量文件时,Ansible 没有加载它。

如果你所做的只是创建一个变量列表,我建议你尝试with_sequence,它会完成你的脚本在 Ansible 中所做的所有工作。

with_sequence

with_sequence 使用以下变量

  1. start从什么开始迭代
  2. end最后一个值是多少
  3. format结果数字的格式

    format 中,我将“T0_GW_”与结果数字连接起来,用 2 个零填充。 示例解决方案

    ---
    - name: Modify Tier0
      vmware.ansible_for_nsxt.nsxt_policy_tier0:
        hostname: "********"
        username: "admin"
        password: "********"
        validate_certs: False
        state: present
        display_name: "{{item}}"
        locale_services:
          - state: present
            edge_cluster_info:
              edge_cluster_display_name: "*******"
            preferred_edge_nodes_info:
              - edge_cluster_display_name: "********"
                edge_node_display_name: "*********"
      with_sequence: start=1 end=2 format=T0_GW_%02d
    

    更多关于序列https://docs.ansible.com/ansible/latest/collections/ansible/builtin/sequence_lookup.html#parameter-format

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多