ansible добавление данных в пустой список из переменной

#list #loops #ansible

#Список #циклы #ansible

Вопрос:

В моем воспроизведении ansible я использую vars_prompt для получения значений для интерфейсов портов коммутатора. Цель игры — получить данные из 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?

Ответ №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"
}