ansible lookup dig: объект списка не имеет атрибута

Команда, мне не удается понять или устранить эту ошибку. Моя задача - получить имя сервера из переменной и выполнить поиск по DNS с помощью модуля dig. какой-нибудь намек? Точно такая же задача работает локально на рабочем столе ubuntu, но когда я запускаю ее через образ jenkins / container / ubuntu, это не так.

      - name: Validate DNS record lookup for {{ api_server_public_names }}
        debug: msg="{{ lookup('dig', '{{ api_server_public_names }}' )}}"
        vars:
          dns_response: "{{ lookup('dig', '{{ api_server_public_names }}' )}}"
        failed_when: not dns_response
 TASK [services-pre-install-checks : Validate DNS record lookup for [u'test.customer.com']] ***
  Thursday 31 October 2019  22:05:34 +0000 (0:00:00.037)       0:00:02.890 ****** 
  fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'dig'. Error was a <type 'exceptions.AttributeError'>, original message: 'list' object has no attribute 'startswith'"}
15:05:34  

person AhmFM    schedule 31.10.2019    source источник


Ответы (1)


api_server_public_names - это список, который нельзя использовать непосредственно при поиске. Вам нужно будет перебрать переменную:

    - name: Validate DNS record lookup
      debug: msg="{{ lookup('dig', '{{ item }}' )}}"
      vars:
        dns_response: "{{ lookup('dig', '{{ item }}' )}}"
      failed_when: not dns_response
      loop: "{{ api_server_public_names }}"

Однако учтите, что ваш failed_when не будет работать должным образом. Возможно, вам потребуется сделать что-то похожее на failed_when: dns_response == "NXDOMAIN"

person Matt P    schedule 31.10.2019
comment
вот и все. спасибо хороший улов. так как заставить работать failed_when? кроме того, нельзя ли использовать индекс вместо цикла? нравится товар [0]? будет ли это работать, поскольку в api_server_public_names только одно имя - person AhmFM; 01.11.2019
comment
Да api_server_public_names[0] или api_server_public_names | first будут работать без цикла, хотя я сомневаюсь, почему это список, если он имеет только одно значение. Что касается failed_when, я привел пример, но вам, возможно, придется поэкспериментировать с ним. Если вы все еще боретесь с этим, возможно, создайте новый вопрос. - person Matt P; 01.11.2019