diff --git a/README.md b/README.md index 1f9503f7..00b87247 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +> [!TIP] +> This fork main purpose is to forward the RUNDECK variables (such as RD_JOB_USERNAME, etc.) to the Ansible playbook. One reason is to give the ansible playbook the ability to proper identify who is running the playbook. + +--- + [![Gitter](https://img.shields.io/gitter/room/rundeck-ansible-plugin/Lobby.svg)](https://gitter.im/rundeck-ansible-plugin/Lobby) [Read more about Rundeck + Ansible](https://www.rundeck.com/ansible) Please [report](https://github.com/rundeck-plugins/ansible-plugin/issues) any errors or suggestions! diff --git a/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunner.java b/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunner.java index 3b8e7980..135fd438 100644 --- a/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunner.java +++ b/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunner.java @@ -119,6 +119,8 @@ public static AnsibleRunner buildAnsibleRunner(AnsibleRunnerContextBuilder conte // set rundeck options as environment variables Map options = contextBuilder.getListOptions(); if (options != null) { + //also add all the job options + options.putAll(contextBuilder.getJobOptions()); ansibleRunnerBuilder.options(options); } diff --git a/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunnerContextBuilder.java b/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunnerContextBuilder.java index 77f3294f..93604dd6 100644 --- a/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunnerContextBuilder.java +++ b/src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunnerContextBuilder.java @@ -833,4 +833,15 @@ public Map getListOptions(){ } return options; } + + public Map getJobOptions(){ + Map options = new HashMap<>(); + Map jobOptions = context.getDataContext().get("job"); + for (Map.Entry entry : jobOptions.entrySet()) { + if(entry.getValue() != null) { + options.put("RD_JOB_" + entry.getKey().toUpperCase(), entry.getValue()); + } + } + return options; + } }