iac_modules/.github/workflows/use-setup-devops-server.yml
2023-12-27 21:01:36 +08:00

88 lines
2.7 KiB
YAML

name: Workflow Call Setup DevOPS Server
on:
workflow_call:
inputs:
domain:
required: true
type: string
cluster_name:
required: true
type: string
ssh_host_name:
required: true
type: string
secrets:
GCP_CREDENTIALS_JSON:
required: true
SSH_PRIVATE_KEY:
required: true
DNS_AK:
required: true
DNS_SK:
required: true
SSH_USER:
required: true
jobs:
setup-app-cluster:
runs-on: ubuntu-latest
env:
DOMAIN: ${{ inputs.domain }}
DNS_AK: ${{ secrets.DNS_AK }}
DNS_SK: ${{ secrets.DNS_SK }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_HOST_DOMAIN: "${{ inputs.ssh_host_name }}.${{ inputs.domain }}"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Pre Setup
run: |
sudo apt-get update
sudo apt-get install -y python3-pip jq
python -m pip install --upgrade pip jinja2
- name: Set up Terraform
uses: hashicorp/setup-terraform@v1
with:
terraform_version: 1.6.4
- name: Authenticate with Google Cloud
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }}
- name: Extract SSH Host IP and Set as Env Variable
run: |
python3 scripts/init.py && terraform init
terraform output -raw ${{ inputs.ssh_host_name }}
echo "SSH_HOST_IP=$(terraform-bin output -raw ${{ inputs.ssh_host_name }} 2>/dev/null)" >> $GITHUB_ENV
shell: bash
working-directory: iac_modules/terraform/gcp/vhost/
- name: Update playbook hosts
run: bash ansible_playbook_hosts_setup.sh
working-directory: playbook/
- name: Deploy Gitlab
run: |
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -i hosts/inventory init_gitlab -e "cluster_name=${{inputs.ssh_host_name}}" -e "domain=${{inputs.domain}}" -D
working-directory: playbook/
- name: Deploy Harbor
run: |
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -i hosts/inventory init_harbor -e "cluster_name=${{inputs.ssh_host_name}}" -e "domain=${{inputs.domain}}" -D
working-directory: playbook/
- name: Deploy Chartmuseum
run: |
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -i hosts/inventory init_chartmuseum -e "cluster_name=${{inputs.ssh_host_name}}" -e "domain=${{inputs.domain}}" -D
working-directory: playbook/