2024-07-30 17:02:53 +03:00

47 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
YC_TOKEN=$(yc iam create-token)
export YC_TOKEN
# Файл инвентаря Ansible
inventory_file="inventory.ini"
# Группа в файле инвентаря
group_name="yandex_cloud"
# Читаем username из meta.yaml
username=$(grep -oP '(?<=name: )\S+' meta.yml)
# Проверяем существует ли inventory file и удаляем старый
if [ -f "$inventory_file" ]; then
rm "$inventory_file"
echo "Old inventory file $inventory_file removed."
fi
# Запускаем terraform apply и проверяем exit code
if ! terraform apply -auto-approve; then
echo "Terraform apply failed. Script execution stopped."
exit 1
fi
# Запускаем terraform output и сохраняем внешние IP в массив
mapfile -t ip_addresses < <(terraform output -json | jq -r '.external_ip_addresses.value[]')
# Добавляем группу в файл инвентаря, если она еще не существует
if ! grep -qF "[$group_name]" "$inventory_file"; then
echo -e "\n[$group_name]" >> "$inventory_file"
fi
base_hostname="host"
index=1
# Добавляем IP-адреса в файл инвентаря Ansible в указанную группу
for ip_address in "${ip_addresses[@]}"; do
hostname="${base_hostname}${index}"
# Проверяем, не содержится ли уже IP-адрес в файле
if ! grep -qF "$ip_address" "$inventory_file"; then
# Добавляем IP-адрес в файл и группу
echo "$hostname ansible_host=$ip_address ansible_connection=ssh ansible_user=$username" >> "$inventory_file"
fi
((index++))
done