简体   繁体   中英

how to use include_vars in ansible

I have created my own custom library, I added my custom library in the common folder of my repository. In that I need to pass variables dynamically. It's a confidential password, so I am using "vault" in ansible.

In that my requirement is how to pass include_vars in the tasks\\main.yml before hosts.

eg: mytasks.yml

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

my directory structure like this:

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

Here I need to run sample_tasks file using a variables passed in sample_vault.yml file before I execute the hosts tasks using ansible. If I use extra variable means password is visible so I don't need that.

When I use include_vars in my tasks/main.yml file, it shows the following error:

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

You can't use include_vars this way, it's only available for use under tasks .
If sample_tasks.yml is a list of tasks, you also can't use it on playbook level. See my other answer for explanation.

You can use vars_files like this:

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

Or pass a file as extra variables:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM