I am trying to orchestrate a database replication setup. This means I need
to read configuration details from the master node, and apply this on the
slave to facilitate the replication setup.
I try to read a configuration value, which works (master has 'primary' set
to true):
- name: get audit file dest from database
action: "shell export ORACLE_SID={{ oracle_sid }}; export
ORACLE_HOME={{ oracle_home }}; printf \"set head off\nselect value from
v\\$parameter where name = 'audit_file_dest';\" | $ORACLE_HOME/bin/sqlplus
-S / as sysdba | grep -v ^$"
when: primary
register: audit_file_dest
Then I try to apply the value on the slave (slave has 'standby' set to
true):
- name: create audit file dest on standby
file: path={{ audit_file_dest.stdout }} state=directory
when: standby
This is how the execution looks like:
TASK: [get audit file dest from database]
*************************************
skipping: [192.168.39.142]
changed: [192.168.39.139]
TASK: [create audit file dest on standby]
*************************************
skipping: [192.168.39.139]
fatal: [192.168.39.142] => One or more undefined variables: 'dict object'
has no attribute 'stdout'
When using the debug module, I see the problem:
TASK: [debug var=audit_file_dest]
*********************************************
ok: [192.168.39.142] => {
"audit_file_dest": {
"changed": false,
"skipped": true
}
}
ok: [192.168.39.139] => {
"audit_file_dest": {
"changed": true,
"cmd": "export ORACLE_SID=test; export
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1; printf \"set head
off\nselect value from v\\$parameter where name = 'audit_file_dest';\" |
$ORACLE_HOME/bin/sqlplus -S / as sysdba | grep -v ^$",
"delta": "0:00:00.035030",
"end": "2014-12-24 15:54:41.230344",
"invocation": {
"module_args": "export ORACLE_SID=test; export
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1; printf \"set head
off\nselect value from v\\$parameter where name = 'audit_file_dest';\" |
$ORACLE_HOME/bin/sqlplus -S / as sysdba | grep -v ^$",
"module_name": "shell"
},
"rc": 0,
"start": "2014-12-24 15:54:41.195314",
"stderr": "",
"stdout": "/u01/app/oracle/admin/test/adump",
"stdout_lines": [
"/u01/app/oracle/admin/test/adump"
],
"warnings": []
}
}
Because I try to use the variable on an host on which the variable was not
filled, there is not stdout for it.
How can I simply obtain a value on one host for use on another? In this
case I would love to make the registered variable contents global.
It can't be that this is a unique situation? Or is there another way that I
should do this?
Thanks
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/137c26de-2b73-4d95-87b7-2dca81a73158%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.