Ansible - неопределенная переменная в командной оболочке - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть следующая книга воспроизведения, которая должна просто извлекать имена и версии пакетов и печатать для отладки:

---
- hosts: localhost
  tasks:
  - name: Get current versions of packages
    shell: "yum list installed {{ packages }} | grep vim-enhanced | awk '{print $1 $2}'"
    var:
      packages:
      - vim-enhanced
      - nss-pem
    register: packages_installed
    changed_when: False

  - name: Print packages installed
    debug:
      var: packages_installed

При запуске я получаю следующую ошибку:

fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'packages' is undefined\n\nThe error appears to have been in '/etc/ansible/patching/patching.yaml': line 4, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n  tasks:\n  - name: Get current versions of packages\n    ^ here\n"}

IЯ все еще довольно новичок в этом, так что, скорее всего, что-то простое мне не хватает, но я не нашел ни одной статьи на данный момент, чтобы решить.

Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Я думаю, что есть две проблемы.

Во-первых, это должно быть vars, а не var.

- name: Get current versions of packages
  shell: ...
  vars:     # <---
    packages:
    - vim-enhanced
    - nss-pem

Во-вторых, packages - это список, которыйинтерполируется как [u'vim-enhanced', u'nss-pem'] в команду оболочки.Это, вероятно, не то, что вы хотите.Кроме того, ваш grep для vim-enhanced не имеет смысла.

...