Невозможно выполнить задачу, даже с правильным синтаксисом - PullRequest
0 голосов
/ 15 мая 2019

Я изучаю ANSIBLE и написал задачу для проверки LDAP.Тем не менее, когда я запускаю playbook, задание не выполняется, даже если проверка правильна.

Ниже приводится ответная задача, которая проверяет максимальный возраст пароля LDAP

- name: LDAP Validation
      shell: /usr/bin/ldapsearch -w admin  -H ldap://localhost:10389 -x -D "cn=manager,dc=apache,dc=com" -b "cn=default,ou=pwpolicies,dc=apache,dc=com" | grep 'pwdMaxAge'
      register: output


- name: LDAP password age check 
  fail:
    msg: "Password MaxAge not set to 0"
  when: output.stdout != "pwdMaxAge: 0"

Ниженовая синтаксическая ошибка, которую генерирует ansible после обновления задачи.

ERROR! Syntax Error while loading YAML.
  mapping values are not allowed here

The error appears to have been in '/etc/ansible/server/roles/LDAP/tasks/ldap.yml': line 40, column 36, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

    msg: "Password MaxAge not set to 0"
  when: output.stdout != "pwdMaxAge: 0"
                                   ^ here

1 Ответ

1 голос
/ 15 мая 2019

Переменная output является словарем; сравнивать его со строкой не имеет смысла: сравнение будет никогда равным. Взгляните на документацию , чтобы увидеть, какие значения возвращаются модулем shell.

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

- name: LDAP password age check 
  fail:
    msg: "Password MaxAge not set to 0"
  when: 'output.stdout != "pwdMaxAge: 0"'

Как подсказал @PatrickForget, вы можете использовать задачу debug для проверки вашей зарегистрированной переменной:

- name: show output variable
  debug:
    var: output
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...