我创建了自己的自定义库,我将自定义库添加到我的存储库的common文件夹中。我需要动态传递变量。这是一个保密密码,所以我在ansible中使用“vault”。
我的要求是如何在主持人之前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
在使用ansible执行hosts任务之前,我需要使用sample_vault.yml
文件中传递的变量运行sample_tasks文件。如果我使用额外的变量意味着密码可见,所以我不需要。
当我在include_vars
文件中使用tasks/main.yml
时,会显示以下错误:
ERROR! 'include_vars'不是Play
的有效属性
答案 0 :(得分:20)
您不能以这种方式使用include_vars
,它只能在tasks
下使用。
如果sample_tasks.yml
是任务列表,您也无法在Playbook级别使用它。有关说明,请参阅我的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