Skip to content

Commit

Permalink
Merge pull request #19 from Apreche/host_key_checking
Browse files Browse the repository at this point in the history
Add support for SSH Host Key Checking
  • Loading branch information
dawidd6 authored Apr 4, 2021
2 parents aad578f + d45b74f commit 2127137
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 2 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,15 @@ jobs:
Subsystem sftp /usr/lib/openssh/sftp-server
EOF
sudo systemctl restart sshd
echo 'SSH_KNOWN_HOSTS<<EOF' >> $GITHUB_ENV
echo $(ssh-keyscan localhost) >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: With everything
uses: ./
with:
playbook: playbook.yml
key: ${{env.SSH_PRIVATE_KEY}}
known_hosts: ${{env.SSH_KNOWN_HOSTS}}
directory: test
vault_password: test
requirements: requirements.yml
Expand Down
3 changes: 3 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ inputs:
vault_password:
description: The password used for decrypting vaulted files
required: false
known_hosts:
description: Contents of SSH known_hosts file
required: false
options:
description: Extra options that should be passed to ansible-playbook command
required: false
Expand Down
22 changes: 20 additions & 2 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ async function main() {
const key = core.getInput("key")
const inventory = core.getInput("inventory")
const vaultPassword = core.getInput("vault_password")
const knownHosts = core.getInput("known_hosts")
const options = core.getInput("options")

let cmd = ["ansible-playbook", playbook]
Expand Down Expand Up @@ -63,10 +64,27 @@ async function main() {
cmd.push(vaultPasswordFile)
}

process.env.ANSIBLE_HOST_KEY_CHECKING = "False"
if (knownHosts) {
const knownHostsFile = ".ansible_known_hosts"
fs.writeFileSync(knownHostsFile, knownHosts, { mode: 0600 })
core.saveState("knownHostsFile", knownHostsFile)
let known_hosts_param = [
"--ssh-common-args=",
"\"",
"-o UserKnownHostsFile=",
knownHostsFile,
"\""
].join('')
cmd.push(known_hosts_param)
process.env.ANSIBLE_HOST_KEY_CHECKING = "True"
} else {
process.env.ANSIBLE_HOST_KEY_CHECKING = "False"
}

process.env.ANSIBLE_FORCE_COLOR = "True"

await exec.exec(cmd.join(" "))
await exec.exec(cmd.join(' '))

} catch (error) {
core.setFailed(error.message)
}
Expand Down
5 changes: 5 additions & 0 deletions post.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ async function main() {
const keyFile = core.getState("keyFile")
const inventoryFile = core.getState("inventoryFile")
const vaultPasswordFile = core.getState("vaultPasswordFile")
const knownHostsFile = core.getState("knownHostsFile")

if (directory)
process.chdir(directory)
Expand All @@ -26,6 +27,10 @@ async function main() {

if (vaultPasswordFile)
rm(vaultPasswordFile)

if (knownHostsFile)
rm(knownHostsFile)

} catch (error) {
core.setFailed(error.message)
}
Expand Down

0 comments on commit 2127137

Please sign in to comment.