gke-chaostoolkit-operator/terraform/deploy-chaostoolkit-operator.tf (95 lines of code) (raw):
#
# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
resource "local_file" "switch_to_standard" {
filename = "${var.folder}/switch-to-standard.sh"
content = <<-EOT
#!/bin/bash
gcloud container clusters get-credentials ${local.cluster_name} --zone=${var.zone} --project=${var.project_id}
EOT
depends_on = [module.gke]
}
resource "local_file" "deploy" {
filename = "${var.folder}/deploy-operator.sh"
content = <<-EOT
#!/bin/bash
while ! [ -f "${var.operator_root}/status" ]; do
echo "Directory does not exist."
sleep 1
done
cd ${var.operator_root}
./kustomize build . | kubectl apply -f -
EOT
depends_on = [module.gke]
}
resource "local_file" "switch_to_autopilot" {
filename = "${var.folder}/switch-to-autopilot.sh"
content = <<-EOT
#!/bin/bash
gcloud container clusters get-credentials ${local.autopilot} --region=${var.region} --project=${var.project_id}
EOT
depends_on = [module.autopilot]
}
resource "local_file" "copy_command" {
filename = "${var.folder}/copy_command.sh"
content = <<-EOT
#!/bin/bash
for i in {0..10}
do
gcloud compute scp --zone "${local.zone}" ${var.folder}/deploy-to-autopilot.sh "${local.name}:~" --tunnel-through-iap --project "${var.project_id}"
if [ $? -eq 0 ]; then
break
fi
sleep 2
done
gcloud compute scp --zone "${local.zone}" ${var.folder}/deploy-operator.sh "${local.name}:~" --tunnel-through-iap --project "${var.project_id}"
gcloud compute scp --zone "${local.zone}" ${var.folder}/switch-to-autopilot.sh "${local.name}:~" --tunnel-through-iap --project "${var.project_id}"
gcloud compute scp --zone "${local.zone}" ${var.folder}/switch-to-standard.sh "${local.name}:~" --tunnel-through-iap --project "${var.project_id}"
gcloud compute scp --zone "${local.zone}" ${var.folder}/kubectl_desc.sh "${local.name}:~" --tunnel-through-iap --project "${var.project_id}"
gcloud compute scp --zone "${local.zone}" ${var.folder}/kubectl_get.sh "${local.name}:~" --tunnel-through-iap --project "${var.project_id}"
gcloud compute scp --zone "${local.zone}" ${var.folder}/kubectl_logs.sh "${local.name}:~" --tunnel-through-iap --project "${var.project_id}"
gcloud compute scp --zone "${local.zone}" ../kustomization/* "${local.name}:${var.operator_root}" --tunnel-through-iap --project "${var.project_id}"
EOT
depends_on = [
local_file.deploy
]
}
resource "local_file" "deploy_to_standard" {
filename = "${var.folder}/deploy-to-standard.sh"
content = <<-EOT
#!/bin/bash
gcloud compute ssh --zone "${local.zone}" "${local.name}" --tunnel-through-iap --project "${var.project_id}" --command "./switch-to-standard.sh; ./deploy-operator.sh; "
EOT
depends_on = [
local_file.switch_to_standard,
local_file.deploy
]
}
resource "local_file" "deploy_to_autopilot" {
filename = "${var.folder}/deploy-to-autopilot.sh"
content = <<-EOT
#!/bin/bash
gcloud compute ssh --zone "${local.zone}" "${local.name}" --tunnel-through-iap --project "${var.project_id}" --command "./switch-to-autopilot.sh; ./deploy-operator.sh; "
EOT
depends_on = [
local_file.switch_to_autopilot,
local_file.deploy
]
}
resource "null_resource" "run_copy_files" {
triggers = {
#always_run = "${timestamp()}"
}
provisioner "local-exec" {
command = local_file.copy_command.filename
}
depends_on = [
module.gke,
module.autopilot,
google_compute_instance.gke-client,
local_file.copy_command,
local_file.get_command,
local_file.desc_command,
local_file.logs_command
]
}
resource "null_resource" "run_deploy" {
triggers = {
#always_run = "${timestamp()}"
}
provisioner "local-exec" {
command = local_file.deploy_to_standard.filename
}
depends_on = [
null_resource.run_copy_files
]
}