From 53997ba47d4a4b3df5889d1b6ce8fa3d8187ec95 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Thu, 21 Dec 2023 17:38:55 +0800 Subject: [PATCH] add use-setup: devops, observability server/agent --- .github/workflows/iac-pipeline-create.yml | 15 ++++ .github/workflows/use-setup-devops-server.yml | 86 +++++++++++++++++++ .../use-setup-observability-agent.yml | 75 ++++++++++++++++ .../use-setup-observability-server.yml | 75 ++++++++++++++++ 4 files changed, 251 insertions(+) create mode 100644 .github/workflows/use-setup-devops-server.yml create mode 100644 .github/workflows/use-setup-observability-agent.yml create mode 100644 .github/workflows/use-setup-observability-server.yml diff --git a/.github/workflows/iac-pipeline-create.yml b/.github/workflows/iac-pipeline-create.yml index d7100599..98d3c2fd 100644 --- a/.github/workflows/iac-pipeline-create.yml +++ b/.github/workflows/iac-pipeline-create.yml @@ -39,6 +39,21 @@ jobs: needs: - apply-cluster-resources + setup-observability-server: + uses: open-source-solution-design/Modern-Container-Application-Reference-Architecture/.github/workflows/use-setup-observability-server.yml@main + with: + domain: 'svc.plus' + cluster_name: 'monitor' + ssh_host_name: 'monitor' + secrets: + GCP_CREDENTIALS_JSON: ${{ secrets.GCP_CREDENTIALS_JSON }} + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + DNS_AK: ${{ secrets.DNS_AK }} + DNS_SK: ${{ secrets.DNS_SK }} + SSH_USER: ${{ secrets.HOST_USER }} + needs: + - setup-monitor-cluster + setup-devops-cluster: uses: open-source-solution-design/Modern-Container-Application-Reference-Architecture/.github/workflows/use-setup-k3s-cluster.yml@main with: diff --git a/.github/workflows/use-setup-devops-server.yml b/.github/workflows/use-setup-devops-server.yml new file mode 100644 index 00000000..f9e8f2c2 --- /dev/null +++ b/.github/workflows/use-setup-devops-server.yml @@ -0,0 +1,86 @@ +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: + 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 observability-platform-pre_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/ diff --git a/.github/workflows/use-setup-observability-agent.yml b/.github/workflows/use-setup-observability-agent.yml new file mode 100644 index 00000000..bf0a313b --- /dev/null +++ b/.github/workflows/use-setup-observability-agent.yml @@ -0,0 +1,75 @@ +name: Workflow Call Setup Observability Agent +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: + 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 observability-platform-pre_setup.sh + working-directory: playbook/ + + - name: Setup Observability Agent + shell: bash + run: | + export ANSIBLE_HOST_KEY_CHECKING=False + ansible-playbook -i hosts/inventory init_observability-agent -e "cluster_name=${{inputs.ssh_host_name}}" -e "domain=${{inputs.domain}}" -D + working-directory: playbook/ diff --git a/.github/workflows/use-setup-observability-server.yml b/.github/workflows/use-setup-observability-server.yml new file mode 100644 index 00000000..64f36c17 --- /dev/null +++ b/.github/workflows/use-setup-observability-server.yml @@ -0,0 +1,75 @@ +name: Workflow Call Setup Observability 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: + 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 observability-platform-pre_setup.sh + working-directory: playbook/ + + - name: Setup Observability Server + shell: bash + run: | + export ANSIBLE_HOST_KEY_CHECKING=False + ansible-playbook -i hosts/inventory init_observability-server -e "cluster_name=${{inputs.ssh_host_name}}" -e "domain=${{inputs.domain}}" -D + working-directory: playbook/