Экранирование одиночной фигурной скобки в доступной переменной

Я использую ansible для чтения списка RPM, установленных на моем хосте redhat, и также хотел бы указать формат. Как я могу избежать одиночных фигурных скобок в моей командной строке?

- hosts: localhost
  gather_facts: no
  tasks:
  - name: rpm -qa
    command: rpm -qa --qf "{NAME}: %{VERSION}\n" | sort
    register: rpmout

  - debug:
      msg: Your rpms are {{ rpmout.stdout }}

Результат запуска приведенной выше пьесы:

$ ansible-playbook -vvv ./a.yml 
ansible-playbook 2.7.10
  config file = None
  configured module search path = [u'/home/ansible/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.5 (default, Apr  9 2019, 14:30:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
No config file found; using defaults
/etc/ansible/hosts did not meet host_list requirements, check plugin documentation if this is unexpected
/etc/ansible/hosts did not meet script requirements, check plugin documentation if this is unexpected
Parsed /etc/ansible/hosts inventory source with ini plugin
ERROR! Syntax Error while loading YAML.
  mapping values are not allowed in this context

The error appears to have been in '/home/ansible/a.yml': line 5, column 34, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

  - name: rpm -qa
    command: rpm -qa --qf "{NAME}: %{VERSION}\n" | sort
                                 ^ here

Заключите всю строку в одинарные кавычки: command: 'rpm -qa --qf "{NAME}: %{VERSION}\n" | sort'

zerkms 16.07.2019 03:12

Спасибо @zerkms Это было легко! Я могу принять ваше решение, если вы опубликуете его в качестве ответа.

linuxfan 16.07.2019 03:15
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
2
2
4 372
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы "не путать" синтаксический анализатор YAML, вам нужно поместить всю строку в одинарные кавычки:

command: 'rpm -qa --qf "{NAME}: %{VERSION}\n" | sort'

или если вам нужен символ новой строки:

command: |
    rpm -qa --qf "{NAME}: %{VERSION}
    " | sort

Быстрое продолжение: как я могу получить вывод, чтобы он содержал фактические символы новой строки вместо \n

linuxfan 16.07.2019 03:48

Другие вопросы по теме