From 4df83eeb67ba79b60bbb95f1eea028f9b4f2781d Mon Sep 17 00:00:00 2001 From: thehedhly Date: Tue, 16 Jan 2024 13:44:23 +0100 Subject: [PATCH] Introduce optional support for ansible.cfg --- action.yml | 3 +++ main.js | 16 ++++++++++++---- post.js | 4 ++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/action.yml b/action.yml index bf1e67a..98be187 100644 --- a/action.yml +++ b/action.yml @@ -13,6 +13,9 @@ inputs: directory: description: Root directory of Ansible project (defaults to current) required: false + configuration: + description: Ansible configuration file content (ansible.cfg) + required: false key: description: SSH private key used to connect to the host required: false diff --git a/main.js b/main.js index 147f323..2ad6292 100644 --- a/main.js +++ b/main.js @@ -9,6 +9,7 @@ async function main() { const playbook = core.getInput("playbook", { required: true }) const requirements = core.getInput("requirements") const directory = core.getInput("directory") + const configuration = core.getInput("configuration") const key = core.getInput("key") const inventory = core.getInput("inventory") const vaultPassword = core.getInput("vault_password") @@ -16,6 +17,7 @@ async function main() { const options = core.getInput("options") const sudo = core.getInput("sudo") const noColor = core.getInput("no_color") + const fileMode = 0600 let cmd = ["ansible-playbook", playbook] @@ -28,6 +30,12 @@ async function main() { core.saveState("directory", directory) } + if (configuration) { + const ansibleConfigurationFile = "ansible.cfg" + fs.writeFileSync(ansibleConfigurationFile, configuration, { mode: fileMode }) + core.saveState("ansibleConfigurationFile", ansibleConfigurationFile) + } + if (requirements) { const requirementsContent = fs.readFileSync(requirements, 'utf8') const requirementsObject = yaml.parse(requirementsContent) @@ -44,7 +52,7 @@ async function main() { if (key) { const keyFile = ".ansible_key" - fs.writeFileSync(keyFile, key + os.EOL, { mode: 0600 }) + fs.writeFileSync(keyFile, key + os.EOL, { mode: fileMode }) core.saveState("keyFile", keyFile) cmd.push("--key-file") cmd.push(keyFile) @@ -52,7 +60,7 @@ async function main() { if (inventory) { const inventoryFile = ".ansible_inventory" - fs.writeFileSync(inventoryFile, inventory, { mode: 0600 }) + fs.writeFileSync(inventoryFile, inventory, { mode: fileMode }) core.saveState("inventoryFile", inventoryFile) cmd.push("--inventory-file") cmd.push(inventoryFile) @@ -60,7 +68,7 @@ async function main() { if (vaultPassword) { const vaultPasswordFile = ".ansible_vault_password" - fs.writeFileSync(vaultPasswordFile, vaultPassword, { mode: 0600 }) + fs.writeFileSync(vaultPasswordFile, vaultPassword, { mode: fileMode }) core.saveState("vaultPasswordFile", vaultPasswordFile) cmd.push("--vault-password-file") cmd.push(vaultPasswordFile) @@ -68,7 +76,7 @@ async function main() { if (knownHosts) { const knownHostsFile = ".ansible_known_hosts" - fs.writeFileSync(knownHostsFile, knownHosts, { mode: 0600 }) + fs.writeFileSync(knownHostsFile, knownHosts, { mode: fileMode }) core.saveState("knownHostsFile", knownHostsFile) cmd.push(`--ssh-common-args="-o UserKnownHostsFile=${knownHostsFile}"`) process.env.ANSIBLE_HOST_KEY_CHECKING = "True" diff --git a/post.js b/post.js index ac6bbe0..430a26e 100644 --- a/post.js +++ b/post.js @@ -11,6 +11,7 @@ function rm(file) { async function main() { try { const directory = core.getState("directory") + const ansibleConfigurationFile = core.getState("ansibleConfigurationFile") const keyFile = core.getState("keyFile") const inventoryFile = core.getState("inventoryFile") const vaultPasswordFile = core.getState("vaultPasswordFile") @@ -18,6 +19,9 @@ async function main() { if (directory) process.chdir(directory) + + if (ansibleConfigurationFile) + rm(ansibleConfigurationFile) if (keyFile) rm(keyFile)