如何在ansible中使用include_vars

jak*_*ake 13 include ansible ansible-playbook ansible-vault

我创建了自己的自定义库,我将自定义库添加到我的存储库的公共文件夹中.我需要动态传递变量.这是一个保密的密码,所以我在ansible中使用"vault".

在我的要求是如何通过include_varstasks\main.yml主机前.

例如:mytasks.yml

- include_vars: sample_vault.yml
- include: sample_tasks.yml
- hosts: localhost
  tasks:
    name: "free task"
    command: ls -a
Run Code Online (Sandbox Code Playgroud)

我的目录结构如下:

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
Run Code Online (Sandbox Code Playgroud)

sample_vault.yml使用ansible执行hosts任务之前,我需要使用文件中传递的变量运行sample_tasks文件.如果我使用额外的变量意味着密码可见,所以我不需要.

当我include_vars在我的tasks/main.yml文件中使用时,它显示以下错误:

错误!'include_vars'不是Play的有效属性

Kon*_*rov 26

你不能用include_vars这种方式,它只能在下面使用tasks.
如果sample_tasks.yml是任务列表,您也无法在playbook级别使用它.请参阅我的其他答案进行解释.

你可以vars_files像这样使用:

- hosts: localhost
  vars_files:
    - sample_vault.yml
  tasks:
    name: "free task"
    command: ls -a
Run Code Online (Sandbox Code Playgroud)

或者将文件作为额外变量传递:

ansible-playbook --ask-vault-pass -e @sample_vault.yml myplaybook.yml
Run Code Online (Sandbox Code Playgroud)