Вычислить стандартный вывод Ansible для определения конца вывода

#ansible

#ansible

Вопрос:

У меня есть задача оболочки, которая получает конфигурацию дефрагментации и сохраняет ее в переменной, например:

 - name: Check if hugepages is disabled
  shell: cat /sys/kernel/mm/transparent_hugepage/defrag
  register: hugepages_status
  changed_when: False
  

В следующей задаче я хочу оценить hugepages_status , чтобы увидеть, является ли последнее слово в нем «никогда». Как я могу прочитать hugepages_status , чтобы оценить только последнее слово в строке?

Что-то вроде:

 - name: Disable hugepages
  shell: echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
  when: swap_status.stdout != "*never"
  

Ответ №1:

Вы можете использовать is search, который будет искать строку независимо от позиции. Я думаю, этого было бы достаточно для этого сценария. Дайте мне знать, если вы хотите выполнить поиск только в конце.

 ---
- name: play
  hosts: localhost
  tasks:
    - name: Check if hugepages is disabled
      shell: cat /sys/kernel/mm/transparent_hugepage/defrag
      register: hugepages_status

    - name: display the output
      debug:
        var: hugepages_status.stdout_lines
      when: hugepages_status.stdout is search('never')