захватить использованное пространство на ansible - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть простая книга игр:

задачи:

- shell: df -h "{{ item }}" | tail -n 1 | awk {'print $5 '}  | sed 's/%//g'

  with_items:

  - "/"

  register: FS

- debug: var=FS

- debug: var=FS.stdout

from: debug: var = FS У меня много строк, но внизу я все еще вижу 2 строки с размер

из: debug: var = FS.stdout или FS.result Я получил: "FS.result": "ПЕРЕМЕННАЯ НЕ ОПРЕДЕЛЕНА!"

как я могу получить вывод с только номер?

Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2020

как я могу получить вывод только с номером?

Если бы вы посмотрели ближе к выводу var=FS, вы бы заметили, что ansible на самом деле фиксирует результаты все l oop предметов, которые применяются к вам из-за использования with_items:

Таким образом, ваш ответ будет в два раза: если вы действительно хотите только df из один элемент, не используйте with_items, и результат будет в FS.stdout, как вы и пытались. Если вы хотите df из нескольких предметов, то вам нужно попасть в список .results[] и извлечь из каждого из них stdout:

- debug:
    msg: '{{ FS.results | map(attribute="stdout") | list }}'

, хотя это предполагает, что вы сохранили список, который был передан в with_items:, поскольку список results упорядочен таким же образом.

Если, с другой стороны, вы бы предпочли создать отображение dict[str, str] из оригинала элемент списка к его результату:

- debug: var=free_by_mount_point
  vars:
    free_by_mount_point: >-
      {%- set results = {} -%}
      {%- for r in FS.results -%}
      {%-   set _ = results.update({r.item, r.stdout}) -%}
      {%- endfor -%}
      {{ results }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...