2015-01-13 2 views
0

Я пытаюсь применить задачи на основе операционной системы, но, кажется, переменный не работает с include:анзибля: включает в себя с переменной

То, что я пытался

- include: {{ ansible_distribution }}_mongodb.yml

тех же работает с режимом отладки. доступная версия: 1.8.2

ответ

3

Что касается доступного 1.7.2, переменные не разлагаются в инструкции include.

Вы можете использовать:

- include: ubuntu_mongodb.yml 
    when: ansible_distribution == 'Ubuntu' 

Или:

- include: ubuntu_mongodb.yml 
    when: ansible_distribution in ['Ubuntu'] 

Имейте в виду, что вы можете быть более универсальным, используя переменную ansible_os_family. Для одного UBUNTU коробки, содержимое этих переменных:

  • ansible_os_family: "Debian"
  • ansible_distribution: "Ubuntu"
+0

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

+0

@Keba, вы уверены, что ваша версия 1.7.2? Я также использую эту версию, и она не расширяет переменные в 'include'. –

+0

100% - работает на Amazon Linux (полагаю, что RHEL). Другие ОС могут варьироваться, поскольку одна или две из команд несовместимы между операционными системами. – PhillipHolmes

Смежные вопросы