How can I write variables inside the tasks file in ansible

user1994660 picture user1994660 · Mar 20, 2014 · Viewed 125.8k times · Source

I have this play.yml

---
- hosts: 127.0.0.1
  connection: local
  sudo: false

  tasks:
     - include: apache.yml

My Apache look like this:

vars:
    url: czxcxz

- name: Download apache
  shell: wget {{url}} 

This is giving me error.

If I remove vars then it works. But I want to include the vars inside tasks so that I can keep different vars for different tasks separate.

Answer

dodgio picture dodgio · Jan 16, 2015

NOTE: Using set_fact as described below sets a fact/variable onto the remote servers that the task is running against. This fact/variable will then persist across subsequent tasks for the entire duration of your playbook.

Also, these facts are immutable (for the duration of the playbook), and cannot be changed once set.


ORIGINAL ANSWER

Use set_fact before your task to set facts which seem interchangeable with variables:

- name: Set Apache URL
  set_fact:
    apache_url: 'http://example.com/apache'

- name: Download Apache
  shell: wget {{ apache_url }}

See http://docs.ansible.com/set_fact_module.html for the official word.