【问题标题】:ansible adding data to empty list from variableansible将数据从变量添加到空列表
【发布时间】:2020-09-29 20:01:34
【问题描述】:

在我的 ansible 游戏中,我使用 vars_prompt 来获取交换机端口接口的值。该剧的目标是从提示中接收数据(我现在正在使用但对 cli 开放的方法)并附加到列表中。当我只有一个端口时,我可以实现这一点,但当我想要多个端口时,它不会像列表中那样拆分为多个项目。

请参阅下面的代码:

'''

      hosts: all
      gather_facts: false
      vars:
        port_list: []
      vars_prompt:
        - name: SwitchPort
          prompt: "Please enter port name(format e.g, Ethernet1/1,Ethernet2/1)"

      tasks:
        -  name: add port items to port_list
           set_fact:
             ports: "{{port_list}} + ['{{SwitchPort}}']"
   
       - name: print ports
         debug:
           var: item
         loop: "{{ports}}" '''

当我传递给 vars_prompt: SwitchPort var Ethernet1/1 时,我得到了可以使用的这个。当我传递它“Ethernet1/1,Ethernet2/1”时,它返回 Ethernet1/1,Ethernet2/1 而不是我想要的列表中的两个项目。有人可以帮我将数据从 cli 变量添加到空列表吗?

【问题讨论】:

    标签: list loops ansible


    【解决方案1】:

    您没有做任何事情来将SwitchPort 拆分为一个列表。你可能想要这样的东西:

    - name: add port items to port_list
      set_fact:
        ports: "{{ port_list + SwitchPort.split(',') }}"
    

    有了这个改变,如果我在提示符下输入Ethernet1/1,Ethernet2/1,输出是:

    TASK [print ports] ***************************************************************************
    ok: [localhost] => (item=Ethernet1/1) => {
        "ansible_loop_var": "item",
        "item": "Ethernet1/1"
    }
    ok: [localhost] => (item=Ethernet2/1) => {
        "ansible_loop_var": "item",
        "item": "Ethernet2/1"
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      相关资源
      最近更新 更多