Ansible Debug msg для переменной

Близкие,

У меня есть сценарий ниже, который я использую для создания списка всех блочных устройств на моей машине с Linux, на которых нет разделов, а затем запускаю модуль parted для их разделения. Я пытаюсь сохранить значение item.key в переменной, которая впоследствии может использоваться модулем parted. Любая помощь, как я могу сохранить значение msg в var.

- name: Print disk result

become: true

  debug:

        msg: "/dev/{{item.key}}"
  when:

     - not item.value.partitions
     - item.value.model == "VBOX HARDDISK"

  with_dict: "{{ ansible_devices }}"

person MikeKim    schedule 29.03.2020    source источник


Ответы (2)


Нет такой вещи, как «сохранение сообщения отладки в переменную», есть только «создание переменной с тем же синтаксисом, который вы использовали бы в сообщении». Кроме того, debug: с become: true - бессмысленное положение дел.

- name: set vbox device fact
  set_fact:
    vbox_device_path: /dev/{{ item.key }}
  when:
  - not item.value.partitions
  - item.value.model == 'VBOX HARDDISK'
  with_dict: '{{ ansible_devices }}'

- debug:
   var: vbox_device_path
person mdaniel    schedule 29.03.2020

  # Assuming what your 'ansible_devices' looks like
  vars:
    ansible_devices:
      # model is valid, partitions are empty
      device_a:
        model: VBOX HARDDISK
        partitions: []
      # model is valid, partitions are not empty
      device_b:
        model: VBOX HARDDISK
        partitions:
          - 1_partition
          - 2_partition
      # model is not valid, partitions are empty
      device_c:
        model: BEATBOX HARDDISK
        partitions:
          - 1_partition
          - 2_partition
  tasks:
    - name: Make the variable with devices with no partitions
      # Create a variable using set_fact
      # Use json_query to filter and assign without explicitly looping ansible_devices
      set_fact:
         no_partition_list: "{{ ansible_devices | dict2items | json_query('[?(value.model==`VBOX HARDDISK`)]|[?!(value.partitions)]') }}"

    - debug:
        var: no_partition_list

Что я делаю?

  • Преобразовать словарь в массив
  • Apply a json query on the converted array
    • filter for value.model equal to required model name
    • затем передайте результат, используя |
    • then, apply another filter to find which objects don't have 'value.partitions'
      • value.partitions returns true if not empty
      • !(value.partitions) возвращает true, если пусто
    • Вывести значение переменной no_partition_list
person Uttam    schedule 29.03.2020