feat: run kubeadm reconcile after terraform apply on master
All checks were successful
Terraform Plan / Terraform Plan (push) Successful in 18s
All checks were successful
Terraform Plan / Terraform Plan (push) Successful in 18s
This commit is contained in:
@@ -71,3 +71,71 @@ jobs:
|
||||
- name: Terraform Apply
|
||||
working-directory: terraform
|
||||
run: terraform apply -auto-approve tfplan
|
||||
|
||||
- name: Create SSH key
|
||||
run: |
|
||||
install -m 0700 -d ~/.ssh
|
||||
KEY_CONTENT="$(printf '%s' "${{ secrets.KUBEADM_SSH_PRIVATE_KEY }}")"
|
||||
if [ -z "$KEY_CONTENT" ]; then
|
||||
KEY_CONTENT="$(printf '%s' "${{ secrets.SSH_KEY_PRIVATE }}")"
|
||||
fi
|
||||
|
||||
if [ -z "$KEY_CONTENT" ]; then
|
||||
echo "Missing SSH private key secret. Set KUBEADM_SSH_PRIVATE_KEY or SSH_KEY_PRIVATE."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf '%s\n' "$KEY_CONTENT" > ~/.ssh/id_ed25519
|
||||
chmod 0600 ~/.ssh/id_ed25519
|
||||
|
||||
- name: Create kubeadm inventory from Terraform outputs
|
||||
run: |
|
||||
TF_OUTPUT_JSON="$(terraform -chdir=terraform output -json)"
|
||||
|
||||
CP_1="$(python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d["control_plane_vm_ipv4"]["value"]["cp-1"])' <<< "$TF_OUTPUT_JSON")"
|
||||
CP_2="$(python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d["control_plane_vm_ipv4"]["value"]["cp-2"])' <<< "$TF_OUTPUT_JSON")"
|
||||
CP_3="$(python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d["control_plane_vm_ipv4"]["value"]["cp-3"])' <<< "$TF_OUTPUT_JSON")"
|
||||
WK_1="$(python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d["worker_vm_ipv4"]["value"]["wk-1"])' <<< "$TF_OUTPUT_JSON")"
|
||||
WK_2="$(python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d["worker_vm_ipv4"]["value"]["wk-2"])' <<< "$TF_OUTPUT_JSON")"
|
||||
WK_3="$(python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d["worker_vm_ipv4"]["value"]["wk-3"])' <<< "$TF_OUTPUT_JSON")"
|
||||
|
||||
SSH_USER="$(printf '%s' "${{ secrets.KUBEADM_SSH_USER }}")"
|
||||
if [ -z "$SSH_USER" ]; then
|
||||
SSH_USER="micqdf"
|
||||
fi
|
||||
|
||||
cat > nixos/kubeadm/scripts/inventory.env << EOF
|
||||
SSH_USER=$SSH_USER
|
||||
CP_1=$CP_1
|
||||
CP_2=$CP_2
|
||||
CP_3=$CP_3
|
||||
WK_1=$WK_1
|
||||
WK_2=$WK_2
|
||||
WK_3=$WK_3
|
||||
EOF
|
||||
|
||||
- name: Ensure nix and nixos-rebuild
|
||||
env:
|
||||
NIX_CONFIG: experimental-features = nix-command flakes
|
||||
run: |
|
||||
if [ ! -x /nix/var/nix/profiles/default/bin/nix ] && ! command -v nix >/dev/null 2>&1; then
|
||||
sh <(curl -L https://nixos.org/nix/install) --no-daemon
|
||||
fi
|
||||
|
||||
if [ -f "$HOME/.nix-profile/etc/profile.d/nix.sh" ]; then
|
||||
. "$HOME/.nix-profile/etc/profile.d/nix.sh"
|
||||
fi
|
||||
|
||||
nix --version
|
||||
nix profile install nixpkgs#nixos-rebuild
|
||||
|
||||
- name: Rebuild and bootstrap/reconcile kubeadm cluster
|
||||
env:
|
||||
NIX_CONFIG: experimental-features = nix-command flakes
|
||||
PATH: $HOME/.nix-profile/bin:/nix/var/nix/profiles/default/bin:${{ env.PATH }}
|
||||
run: |
|
||||
if [ -f "$HOME/.nix-profile/etc/profile.d/nix.sh" ]; then
|
||||
. "$HOME/.nix-profile/etc/profile.d/nix.sh"
|
||||
fi
|
||||
|
||||
./nixos/kubeadm/scripts/rebuild-and-bootstrap.sh
|
||||
|
||||
Reference in New Issue
Block a user