2016-10-01 4 views
2

Я создал свою собственную пользовательскую библиотеку, я добавил свою собственную библиотеку в общую папку моего репозитория. В этом я должен динамически передавать переменные. Это конфиденциальный пароль, поэтому я использую «хранилище» в недоступном.Как использовать include_vars в ansible

В том, что мое требование - как пройти include_vars в tasks\main.yml перед хостами.

например: mytasks.yml

- include_vars: sample_vault.yml 
- include: sample_tasks.yml 
- hosts: localhost 
    tasks: 
    name: "free task" 
    command: ls -a 

моя структура каталогов, как это:

myfolder 
    - common 
     -library 
     -my file.py 
     - sample_tasks.yml 

    - mytasks 
     -mytasks.yml(my main master playbook file) 
     -sample_vault.yml (note:i create this using vault for confidential purpose) 
     - roles 
     -myrole 

Здесь мне нужно запустить файл sample_tasks используя переменные, переданные в sample_vault.yml файл, прежде чем я выполнить задачи, используя хосты анзибль. Если я использую дополнительные переменные, значит, пароль видимый, поэтому мне это не нужно.

Когда я использую include_vars в моем tasks/main.yml файл, он показывает следующее сообщение об ошибке:

ERROR! 'include_vars' is not a valid attribute for a Play

ответ

7

Вы не можете использовать include_vars таким образом, он доступен для использования только под tasks.
Если sample_tasks.yml - это список задач, вы также не можете использовать его на уровне плейеров. Для объяснения см. Мой other answer.

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

- hosts: localhost 
    vars_files: 
    - sample_vault.yml 
    tasks: 
    name: "free task" 
    command: ls -a 

Или передать файл в качестве дополнительных переменных:

ansible-playbook --ask-vault-pass -e @sample_vault.yml myplaybook.yml 
+0

Спасибо за большой ответ! Я столкнулся с проблемой с 'include_vars' из сводчатого файла как' environment' в ansible 2+, переключившись на 'vars_files' evrything works! – andi

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