I need to use host_vars in my ansible file to install a package on remote host, i am trying to pull a variable by the name package from host_vars dir in which a file ansi2 reside which is the hostname of remote machine,, the name of my main yaml file is service.yml and reside in /etc/ansible ....

 - hosts: all
   become: yes
   ignore_errors: yes
   gather_facts: no

   - name: install vim
     yum: name={{ package }} state=present

Dir Structure:

[root@ansi1 ansible]# pwd
[root@ansi1 ansible]#
[root@ansi1 ansible]# ls -l ansi2/host_vars/
total 4
-rw-r--r-- 1 root root 19 Jun 13 08:15 ansi2
[root@ansi1 ansible]#

[root@ansi1 ansible]# cat ansi2/host_vars/ansi2
package: "vim"


TASK [install vim] *************************************************************
task path: /etc/ansible/service.yml:7
fatal: [ansi2.example.com]: FAILED! => {
    "failed": true,
    "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'package' is undefined\n\nThe error appears to have been in '/etc/ansible/service.yml': line 7, column 6, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n   tasks:\n   - name: install vim\n     ^ here\n"

As per your output, inventory hostname is ansi2.example.com.
You should change file name ansi2 to match your inventory hostname.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.