How can I pass variable to ansible playbook in the

2019-01-30 03:27发布

I'm new to ansible and wonder how to do so as the following didn't work

ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"

Where django_fixtures is my variable.

6条回答
对你真心纯属浪费
2楼-- · 2019-01-30 04:06

Other answers state how to pass in the command line variables but not how to access them, so if you do:

--extra-vars "version=1.23.45 other_variable=foo"

In your yml file you assign these to scoped ansible variables by doing something like:

vars:
    my_version: "{{ version }}"
    my_other_variable: {{ other_variable }}

An alternative to using command line args is to utilise environmental variables that are already defined within your session, you can reference these within your ansible yml files like this:

vars:
    my_version: "{{ lookup('env', 'version') }}"
    my_other_variable: {{ lookup('env', 'other_variable') }}
查看更多
闹够了就滚
3楼-- · 2019-01-30 04:09
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
查看更多
forever°为你锁心
4楼-- · 2019-01-30 04:09
ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"

In the yml file you can use them like this

---
arg1: "{{ var1 }}"
arg2: "{{ var2 }}"

Also, --extra-vars and -e are the same, you can use one of them.

查看更多
姐就是有狂的资本
5楼-- · 2019-01-30 04:11

You can use the --extra-vars option. See the docs

查看更多
forever°为你锁心
6楼-- · 2019-01-30 04:15

Reading the docs I find the section Passing Variables On The Command Line, that give this sample:

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

Others examples demonstrate how to load from JSON string (≥1.2) or file (≥1.3)

查看更多
做个烂人
7楼-- · 2019-01-30 04:16

For some reason none of the above Answers worked for me. As I need to pass several extra vars to my playbook in Ansbile 2.2.0, this is how I got it working (note the -e option before each var):

ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2
查看更多
登录 后发表回答