integration github action with vault hashicorp

0
214

halo sobat sekolahlinux, jadi kali ini aku akan coba memberikan guide bagaimana cara integrasi antara vault sebagai secret management dengan github action, yang mana kita tau github secret action value nya itu tidak bisa di reveal, jadi tentu ini menyulitkan kita ketika akan coba untuk melihat value yang sudah kita set

nah pada tutorial kali ini saya menggunakan self hosted runner, dan disini saya install vault-server didalam network private yang sama dengan github action self hosted runner, sehingga nanti nya jobs yang menggunakan self host runner bisa terhubung ke vault melalui private connection, oh dibawah ini detail koneksi yang digunakan

  • vault-server: http://10.11.202.209:8200

oke langsung masuk saja ke parh github workflow action nya, dan dibawah ini adalah github workflow yang saya buat saya buat di .github/workflow/blank.yaml

name: CI

on:
  push:
    branches: [ "main" ]

  workflow_dispatch:

jobs:
  build:
    runs-on: [self-hosted-ec2]
    container: centos:centos7.9.2009

    steps:
      - uses: actions/checkout@v3
      
      - name: Vault
        uses: hashicorp/vault-action@v2.4.0
        with:
          url: http://10.11.202.209:8200
          token: ${{ secrets.VAULT_TOKEN }}
          secrets: |
            dev/data/fe_service url_test ; # for kv version_2 add /data/ between secrets name and path

      - name: Testing
        run: |
          echo ""
          echo "----------"
          curl -s $URL_TEST
          echo "----------"

dari script diatas kita coba bedah step per step

kita mulai dari step Vault

      - name: Vault
        uses: hashicorp/vault-action@v2.4.0
        with:
          url: http://10.11.202.209:8200
          token: ${{ secrets.VAULT_TOKEN }}
          secrets: |
            dev/data/fe_service url_test ;
  • pada paramater url: ganti endpoint sesuai dengan endpoint vault yang kalian setup, disini saya menggunakan selft host runner untuk github action runner nya, dan host runner saya setup masih sama dengan private network host vault, sehingga komunikasi antara vault dan runner bisa private
  • pada paramater token: buat github secret action di dengan variable name VAULT_TOKEN dan berikan value dengan token yang sudah kalian buat, disini bisa meletakkan token root ataupun token yang kita buat dengan custom policy, untuk tutorial membuat custom token, kalian bisa lihat di tutorial saya
  • pada paramater secrets: disini kita akan meregister secrets apa saja yang akan diload menjadi environment variable di github action, disini saya coba mereload variable url_test yang ada di dev/fe_service, pasti kalian bertanya2 kenapa di script diatas ditulisnya dev/data/fe_service, jadi pada kv version_2 di vault untuk meload sebuah secret diharuskan menambahkan /data/ diantara secret name dan path name, namun pada kv version_1  kita tidak perlu menambahkan /data/ cukup menulisnya dev/fe_service, sample:
    • kv version_1:
      - name: Vault
        uses: hashicorp/vault-action@v2.4.0
        with:
          url: http://10.11.202.209:8200
          token: ${{ secrets.VAULT_TOKEN }}
          secrets: |
            dev/fe_service url_test ;
    • kv version_2:
      - name: Vault
        uses: hashicorp/vault-action@v2.4.0
        with:
          url: http://10.11.202.209:8200
          token: ${{ secrets.VAULT_TOKEN }}
          secrets: |
            dev/data/fe_service url_test ;

untuk isi value dari variable url_test yang saya set kurang lebih seperti dibawah

lalu selanjutnya kita coba masuk ke step Testing

      - name: Testing
        run: |
          echo ""
          echo "----------"
          curl -s $URL_TEST
          echo "----------"
  • disini kita akan coba me run beberapa perintah sekaligus, diantaranya adalah perintah curl, disini kita akan curl url yang kita set di vault pada variable name $URL_TEST disini walau di vault kita set lower_case $url_test maka ketika di load di github action dia akan menjadi upper_case

maka result nya ketika jobs nya berjalan akan seperti capture dibawah

nah semoga tutorial singkat kali ini bermanfaat

LEAVE A REPLY

Please enter your comment!
Please enter your name here