Additional inputs and tweaking jq formatting for env file.
This commit is contained in:
@@ -1,2 +1,43 @@
|
||||
# hc-vault-env
|
||||
# Adapted from https://github.com/Simporter/get-env-file-from-vault
|
||||
|
||||
## Get env-file from Hashicorp Vault GitHub Action
|
||||
|
||||
Simple action to get env file from HashiCorp Vault™.
|
||||
|
||||
## Example Usage
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
build:
|
||||
# ...
|
||||
steps:
|
||||
# ...
|
||||
- name: Get env file
|
||||
uses: https://git.trez.wtf/Trez/hc-vault-env@main
|
||||
with:
|
||||
HC_VAULT_VERSION: "1.20.4"
|
||||
HC_VAULT_ADDR: https://vault.mycompany.com:8200
|
||||
HC_VAULT_USERNAME: ${{ secrets.HC_VAULT_USERNAME }}
|
||||
HC_VAULT_PASSWORD: ${{ secrets.HC_VAULT_PASSWORD }}
|
||||
HC_VAULT_SECRETS_PATH: ${{ secrets.HC_VAULT_SECRETS_PATH }}
|
||||
# ...
|
||||
```
|
||||
|
||||
will get all the secrets from `kv` storage from `HC_VAULT_SECRETS_PATH` and put it in a `.env`
|
||||
|
||||
## Authentication method
|
||||
|
||||
Currently, only `userpass` login method is implemented. `HC_VAULT_USERNAME` and `HC_VAULT_PASSWORD` to authenticate with Vault.
|
||||
|
||||
## Reference
|
||||
|
||||
Here are all the inputs available through `with`:
|
||||
|
||||
| Input | Description | Default | Required |
|
||||
| ----------------------- | ---------------------------------------- | ------- | -------- |
|
||||
| `HC_VAULT_VERSION` | Vault version | | ✔ |
|
||||
| `HC_VAULT_ADDR` | Vault url | | ✔ |
|
||||
| `HC_VAULT_USERNAME` | Vault login username for `userpass` auth | | ✔ |
|
||||
| `HC_VAULT_PASSWORD` | Vault login password for `userpass` auth | | ✔ |
|
||||
| `HC_VAULT_SECRETS_PATH` | Vault secrets path | | ✔ |
|
||||
| `ENV_FILE_NAME` | Name of created env-file | .env | |
|
||||
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
name: "Generate .env file from Hashicorp Vault"
|
||||
description: "Get secrets from Vault and write to a .env file"
|
||||
|
||||
branding:
|
||||
icon: "lock"
|
||||
color: "purple"
|
||||
|
||||
inputs:
|
||||
HC_VAULT_VERSION:
|
||||
description: "Hashicorp Vault version"
|
||||
required: true
|
||||
|
||||
HC_VAULT_ADDR:
|
||||
description: "Vault url"
|
||||
required: true
|
||||
|
||||
HC_VAULT_USERNAME:
|
||||
description: "Vault login username"
|
||||
required: false
|
||||
|
||||
HC_VAULT_PASSWORD:
|
||||
description: "Vault login password"
|
||||
required: false
|
||||
|
||||
HC_VAULT_SECRETS_PATH:
|
||||
description: "Vault secrets path"
|
||||
required: true
|
||||
|
||||
ENV_FILE_NAME:
|
||||
description: "Name of created env-file"
|
||||
required: false
|
||||
default: .env
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Install Hashicorp Vault
|
||||
shell: bash
|
||||
run: |
|
||||
curl -S -O https://releases.hashicorp.com/vault/${{ inputs.HC_VAULT_VERSION }}/vault_${{ inputs.HC_VAULT_VERSION }}_linux_amd64.zip
|
||||
unzip -u vault_${{ inputs.HC_VAULT_VERSION }}_linux_amd64.zip -d .
|
||||
chmod +x vault
|
||||
mv vault /usr/local/bin
|
||||
|
||||
- name: Login to Hashicorp Vault with userpass
|
||||
if: ${{ HC_VAULT_AUTH_METHOD == 'userpass' }}
|
||||
shell: bash
|
||||
env:
|
||||
VAULT_ADDR: ${{ inputs.HC_VAULT_ADDR }}
|
||||
VAULT_SKIP_VERIFY: "true"
|
||||
run: |
|
||||
vault login \
|
||||
-no-print \
|
||||
-method=userpass \
|
||||
username=${{ inputs.HC_VAULT_USERNAME }} \
|
||||
password=${{ inputs.HC_VAULT_PASSWORD }}
|
||||
|
||||
- name: Create env-file from Hashicorp Vault config
|
||||
shell: bash
|
||||
env:
|
||||
VAULT_TOKEN: ${{ inputs.HC_VAULT_TOKEN }}
|
||||
VAULT_ADDR: ${{ inputs.HC_VAULT_ADDR }}
|
||||
VAULT_SKIP_VERIFY: "true"
|
||||
run: |
|
||||
vault kv get -format=json ${{ inputs.HC_VAULT_SECRETS_PATH }} \
|
||||
| jq -r '.data.data' \
|
||||
| jq -r 'keys[] as $k | "\($k)='\''\(.[$k])'\''"' > .env \
|
||||
> ${{ inputs.ENV_FILE_NAME }}
|
||||
Reference in New Issue
Block a user