Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specifying variables in master Ansible playbook

Tags:

ansible

I am writing a master Ansible playbook which is including playbooks. Now, I want to set variables that all the playbooks specified within it use. How do I specify variables in this playbook? I know that one of the options is to include vars_files and use it with each of the playbook. Example: - include: abc.yml vars_files: vars.yml

I am using Ansible 1.9.3.

like image 913
Divya Mangotra Avatar asked Oct 19 '22 10:10

Divya Mangotra


1 Answers

First I would really recommend you to update your Ansible to latest version. It is very easy to do so, no reason to stay behind.

Having said that, there are many ways on how to specify variables in your master playbook. All these are more or less the same with any other playbook. Briefly mentioning:

a. Define them in your playbook itself

- hosts: webservers
  vars:
    http_port: 80

b. Separating into a variable file, as you already said:

- hosts: all
  remote_user: root
  vars:
    favcolor: blue
  vars_files:
    - /vars/external_vars.yml

vars/external_vars.yml

somevar: somevalue
password: magic

Other possibilities include:

c. Using facts

d. Registering output into variables

Additionally, which may be important for your case:

d. You can pass variables into includes:

tasks:
  - include: wordpress.yml wp_user=timmy
  - include: wordpress.yml wp_user=alice
  - include: wordpress.yml wp_user=bob

e. Passing variables in command line:

ansible-playbook release.yml -k "version=1.23.45 other_variable=foo"

-k is shorthand for --exra-vars.

There might be other ways too that I may be missing at the moment.

like image 188
Wtower Avatar answered Oct 21 '22 06:10

Wtower