2016-01-05 4 views
0

Я использую следующую анзибль задачу создать базу данных MDB для OpenLDAP:Испытание на существование LDAP DB?

- name: set up MDB database 
    shell: ldapadd -Y EXTERNAL -H ldapi:/// -f {{tmp_dir}}/mdb.ldif 

Однако после того, как DB была установка, если я снова запустить пьес, я получаю ошибку:

<olcSuffix> namingContext "dc=test,dc=cluster" already served by a preceding mdb database 

Мне, очевидно, нужно добавить условие when, так что БД настроена, если она еще не существует. Тем не менее, я не знаю, что тестировать. Должен ли я добавить пользовательский факт, основанный, скажем, на ldapsearch, или есть лучший способ?

+0

я в конечном итоге делает следующее, что, кажется, работает для моих целей: - название: тест существует ли уже база данных MDB оболочки: ldapsearch -H ldap: // -x -s base -b "" -LLL "namingContexts" | Grep -c "{{ldap_suffix}}" регистр: is_db_setup - имя: настройка базы данных MDB оболочки: ldapadd -Y EXTERNAL -H ldapi: /// -f {{tmp_dir}}/mdb.ldif , когда: not is_db_setup.stdout – loris

+0

Вы должны добавить это как ответ на вопрос. Комментарии не позволяют форматировать, поэтому хорошо отформатированный ответ будет намного легче читать, чем комментарий. –

ответ

1

Как Брюс P указал, я бы ответил на мой собственный вопрос, чтобы разрешить форматирование:

я в конечном итоге делает следующее, что, кажется, работает для моих целей:

- name: test whether MDB database already exists 
    shell: ldapsearch -H ldap:// -x -s base -b "" -LLL "namingContexts" | grep -c "{{ ldap_suffix }}" 
    register: is_db_setup 
- name: set up MDB database 
    shell: ldapadd -Y EXTERNAL -H ldapi:/// -f {{tmp_dir}}/mdb.ldif 
    when: not is_db_setup.stdout 
1

На самом деле, трубопроводы результат поиска через grep (см. мой другой ответ) - не такая хорошая идея, потому что, если строка не найдена, генерируется ошибка, которая затем должна игнорироваться. Это кажется более изящным использовать функцию строки find в when пункте:

- name: test whether MDB database already exists 
    shell: ldapsearch -H ldap:// -x -s base -b "" -LLL "namingContexts" 
    register: naming_contexts 
- name: set up MDB database 
    shell: ldapadd -Y EXTERNAL -H ldapi:/// -f {{tmp_dir}}/mdb.ldif 
    when: naming_contexts.stdout.find("{{ ldap_suffix }}") == -1 
Смежные вопросы