You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.6 KiB
60 lines
1.6 KiB
2 months ago
|
#!/bin/bash
|
||
|
|
||
|
set -e
|
||
|
|
||
|
# Remove backend.tf temporarily to avoid remote backend init
|
||
|
if [ -f backend.tf ]; then
|
||
|
echo "Temporarily renaming backend.tf to backend.tf.bak..."
|
||
|
mv backend.tf backend.tf.bak
|
||
|
fi
|
||
|
|
||
|
echo "[1/7] Initializing Terraform locally..."
|
||
|
terraform init
|
||
|
|
||
|
echo "[2/7] Applying infrastructure with local state..."
|
||
|
terraform apply -auto-approve
|
||
|
|
||
|
# Now the infra should be created, including storage account + blob container
|
||
|
|
||
|
# Write backend.tf after apply
|
||
|
echo "[3/7] Writing backend.tf for remote state..."
|
||
|
cat > backend.tf <<EOF
|
||
|
terraform {
|
||
|
backend "azurerm" {
|
||
|
resource_group_name = "muscogee-rg"
|
||
|
storage_account_name = "povertypoint"
|
||
|
container_name = "tfstate"
|
||
|
key = "terraform.tfstate"
|
||
|
}
|
||
|
}
|
||
|
EOF
|
||
|
|
||
|
echo "[4/7] Re-initializing Terraform with remote backend..."
|
||
|
terraform init -force-copy
|
||
|
|
||
|
# Now that state is copied, we can safely remove local state files
|
||
|
rm -rf .terraform terraform.tfstate*
|
||
|
# Optional: Remove backup if it existed
|
||
|
if [ -f backend.tf.bak ]; then
|
||
|
rm backend.tf.bak
|
||
|
fi
|
||
|
|
||
|
echo "[5/7] Fetching public IPs for Ansible inventory..."
|
||
|
IPS=$(az vm list-ip-addresses --resource-group muscogee-rg --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" -o tsv)
|
||
|
|
||
|
echo "[6/7] Creating Ansible inventory..."
|
||
|
mkdir -p ansible
|
||
|
> ansible/inventory.ini
|
||
|
echo "[all]" >> ansible/inventory.ini
|
||
|
i=1
|
||
|
for ip in $IPS; do
|
||
|
echo "vm$i ansible_host=$ip ansible_user=lenape" >> ansible/inventory.ini
|
||
|
((i++))
|
||
|
done
|
||
|
|
||
|
echo "[7/7] Running Ansible playbook to install NGINX..."
|
||
|
ANSIBLE_CONFIG=ansible/ansible.cfg ansible-playbook ansible/playbook.yml
|
||
|
|
||
|
echo "[✓]Teleflex Azure Infrastructure Fully Deployed!"
|
||
|
|