16

我已经创建了自己的自定义库,我在存储库的公共文件夹中添加了自定义库。因为我需要动态传递变量。这是一个机密密码,所以我在 ansible 中使用“保险库”。

我的要求是如何传入之前include_varstasks\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_vault.yml在这里,在使用 ansible 执行主机任务之前,我需要使用文件中传递的变量运行 sample_tasks 文件。如果我使用额外的变量意味着密码是可见的,所以我不需要。

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

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

4

1 回答 1

36

这种方式不能用include_vars,只能在tasks.
如果sample_tasks.yml是任务列表,您也不能在剧本级别使用它。请参阅我的其他答案以获取解释。

你可以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
于 2016-10-01T20:48:58.033 回答