1

I'm new to ansible.

I'm trying to pick the passwords out of a vault file and pass them to a unix script.

Created oem_vault.yml under group_vars/all

ansible-vault edit groups_vars/all/oem.yml

oem_vault:
user: sysman
password: XXXXXXXXXX

2. create playbook

cat tgt-blackout-oem-on.yml

#!/usr/bin/env ansible-playbook
---

 - name: Turn blackout on for target clone
   hosts: hostapp01
   any_errors_fatal: true
   remote_user: ansible
   become: yes
   become_user: oracle
   roles:
      - oraoem-blackout-on
   vars_files:
      - groups_vars/all/oem.yml

3.create roles and tasks

cd roles/oraoem-blackout-on/

cat main.yml

---
- name: Setting static variables
  set_fact:
    dest: /home/oracle/ansible

- name: Copy the blackout script for the target node
  copy:
    src: "{{ item }}"
    dest: /home/oracle/ansible
    owner: oracle
    group: oinstall
    mode: 0700
  with_items:
    - oem_blackout_on.sh

- name: Performing blackout on
  shell: "cd {{ dest }}; {{ dest }}/oem_blackout_on.sh {{ oem_vault.user }} {{ oem_vault.password }}"
  register: oem_on
  ignore_errors: no
- debug: var=oem_on.stderr_lines
  tags:
    - oem_on

Running execution output:

TASK [oraoem-blackout-on : Performing blackout on]
 *********************************************************************    
fatal: [hostapp01]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'None' has no attribute 'sysman'\n\nThe error appears to be in 'roles/oraoem-blackout-on/tasks/main.yml': line 20, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Performing blackout on\n  ^ here\n"}

I was expecting it to pick up the username and password and pass it to the unix script which then gets executed on the remote server

Laurel
  • 5,965
  • 14
  • 31
  • 57

1 Answers1

2

The name of the directory groups_vars is wrong. The correct name is group_vars

Given the file

shell> cat group_vars/all/oem.yml 
oem_vault:
user: sysman
password: XXXXXXXXXX

the playbook

shell> cat pb.yml
- hosts: localhost
  tasks:
    - debug:
        var: password

works as expected

shell> ansible-playbook pb.yml 

PLAY [localhost] *****************************************************************************

TASK [debug] *********************************************************************************
ok: [localhost] => 
  password: XXXXXXXXXX

PLAY RECAP ***********************************************************************************
localhost: ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

You'll get the same result when you encrypt the file

shell> ansible-vault encrypt group_vars/all/oem.yml
Vladimir Botka
  • 58,131
  • 4
  • 32
  • 63