Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ansible: How to add variables to "command" or "shell"

Is it possible to use variables on command or shell modules? I have the following code, and I would like to use variable file to provide some configurations:

I would like to read the Hadoop version from my variables file. On other modules of ansible I could use {{ansible_version}}, but with command or shell it doesn't works.

- name: start ZooKeeper HA
  command: hadoop-2.7.1/bin/hdfs zkfc -formatZK -nonInteractive

- name: start zkfc
  shell: hadoop-2.7.1/sbin/hadoop-daemon.sh start zkfc

I would like to convert to the following:

- name: Iniciar zkfc
  command: {{ hadoop_version }}/sbin/hadoop-daemon.sh start zkfc

Because if I run the with this syntax it throws this error:

- name: inicializar estado ZooKeeper HA
  command: {{hadoop_version}}/bin/hdfs zkfc -formatZK -nonInteractive
                             ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

I have try using, but same problem:

- name: Iniciar zkfc
  command: "{{ hadoop_version }}"/sbin/hadoop-daemon.sh start zkfc

What is the correct syntax?

like image 294
Asier Gomez Avatar asked Jan 10 '17 10:01

Asier Gomez


1 Answers

I have done below steps to replacing the inventory hostname in ansible shell module

- name: 'Task-10 Modif the splunk input.conf file with Actual hostname'

  become: yes
  become_method: sudo
  become_user: root
  shell: |
    /splunk/splunkforwarder/bin/splunk enable boot-start --accept-license --answer-yes --no-prompt -user splunk
    declare wfqdn 
    wfqdn=$(uname -n)
    sed -i "s/$wfqdn/"{{ inventory_hostname }}"/g" /splunk/splunkforwarder/etc/system/local/inputs.conf
  tags:
    - always

The Main play is :

sed -i "s/$wfqdn/"{{ inventory_hostname }}"/g" /splunk/splunkforwarder/etc/system/local/inputs.conf
like image 197
user12886803 Avatar answered Nov 20 '22 23:11

user12886803