-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate_server_with_dynamic_zones.sh
52 lines (44 loc) · 1.62 KB
/
create_server_with_dynamic_zones.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
# export TF_VAR_machine_type="g2-standard-4"
# export TF_VAR_gpu_type="nvidia-l4"
# export TF_VAR_gpu_count=1
export TF_VAR_machine_type="n1-standard-8"
export TF_VAR_gpu_type="nvidia-tesla-t4"
export TF_VAR_gpu_count=1
# comm 명령어의 결과를 배열에 저장
zones=()
while read -r zone; do
zones+=("$zone")
done < <(comm -12 <(gcloud compute machine-types list --filter="name=$TF_VAR_machine_type" | awk '{print $2}' | sort | uniq) <(gcloud compute accelerator-types list --filter="name=$TF_VAR_gpu_type" | awk '{print $2}' | sort | uniq))
# 배열 출력 (디버깅용)
echo "사용 가능한 존 목록:"
for zone in "${zones[@]}"; do
echo "$zone"
done
# 각 존(zone)에 대해 반복 작업 수행
for zone in "${zones[@]}"; do
# 존(zone)에서 맨 뒤 두 글자를 제거하여 지역(region) 생성
region=${zone::-2}
if [[ -z "$zone" || "$zone" == "ZONE" ]]; then
continue
fi
echo "존(zone): $zone, 지역(region): $region 에서 make 명령어를 실행합니다..."
# 환경 변수 설정
export TF_VAR_region=$region
export TF_VAR_zone=$zone
# make 명령어 실행
make
# make 명령어의 종료 상태 확인
if [ $? -ne 0 ]; then
echo "존 $zone 에서 make 명령어가 실패했습니다. 100초 후에 make clean을 실행합니다..."
sleep 100
make clean
else
echo "존 $zone 에서 make 명령어가 성공적으로 완료되었습니다."
# make 명령어가 성공하면 스크립트 종료
exit 0
fi
done
# 모든 존(zone)에서 make 명령어가 실패한 경우
echo "모든 존에서 make 명령어가 실패했습니다."
exit 1