2016-05-12 2 views
6

Я хотел бы иметь мастер-книжку, в которую входят другие плейбуки. Можно ли передать переменную к включенной в нее книжке?Пропустить переменную до версии playbook?

обычный синтаксис, который используется для передачи переменных, включенных задач не работает (см ниже)

- include: someplaybook.yml variable=value 

и

- include: someplaybook.yml 
    vars: 
    variable: value 

Я бегу v2.0.2.0.

+0

Знаете ли вы о ролях? что это нормальный синтаксис, который не работает? – Nasr

+1

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

+0

@ Наср Да, я знаю о ролях - они не помогут в этом случае , Я добавил обычный синтаксис. Ansible имеет разные области действия для переменных разных типов. Просто использование set_facts не работает. – CamHart

ответ

0

Единственное, что я вижу, - это цитаты.

- include: someplaybook.yml variable='value' 

Это работает для меня и должно работать на вас. Если вы не разделяете ошибку, с которой вы сталкиваетесь.

Убедитесь, что эта переменная «переменная» определена в задаче роли, а отсюда вы просто передаете значение этой переменной.

+3

Это работает для задачи включает в себя - не playbook включает. – CamHart

+0

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

+2

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

0

Кроме того, я предлагаю вам прочитать это, http://docs.ansible.com/ansible/latest/playbooks_reuse.html и попытаться использовать роли в этом случае, это поможет в таком случае, как это, где вы пытаетесь включить/импортировать несколько playbooks в одном главном PlayBook. И о передаче значения в оператор include вы можете добавить его в vars main.yml роли. Или, если переменная, которую вы хотите передать, является результатом предыдущей задачи в одной основной пьесе, используйте «register» и сохраняйте вывод в переменной.

- debug: msg="{{result.stdout_lines}}"

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

+1

Я не помню точного контекста, когда я спрашивал об этом, но если вы прочтете комментарии по первому вопросу, я понял, что роли не могут быть использованы для решения этой проблемы. Я уже использовал роли - это был немного другой случай использования, чем то, что могли бы выполнять роли. Однако я забыл детали. – CamHart

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