본문 바로가기
9. 실습 Hands-on Lab

스크립트로 실행 자원 자동 멈춤 - Auto Stop

by MY잭슨 2023. 9. 18.

사전 준비

2023.08.11 - [7. 실습 Hands-on Lab] - OCI Super Delete 스크립트로 Compartment와 자원 삭제

 

인증 방식으로 Instance Principals 을 사용하기 때문에 Dynamic Group과 Policy 생성

 

디렉토리 생성, 압축해제 후 업로드

mkdir -p /home/opc/ocicli/autostopping/

mkdir -p /home/opc/ocicli/autostopping/log/

cd /home/opc/ocicli/autostopping/

 

https://github.com/sinanpetrustoma/autostopping/blob/master/autostopping_all_using_instance_principals.zip

[opc@admin-oci-autostop-main autostopping]$ ls -ltr
total 20
drwxrwxr-x. 2 opc opc    6 Sep 18 08:31 log
-rw-rw-r--. 1 opc opc 2696 Sep 18 09:03 stop_dbsystem_nodes.sh
-rw-rw-r--. 1 opc opc 2026 Sep 18 09:03 stop_oac.sh
-rw-rw-r--. 1 opc opc    0 Sep 18 09:03 whitelist.txt
-rw-rw-r--. 1 opc opc 2890 Sep 18 09:03 read_me.txt
-rw-rw-r--. 1 opc opc 2241 Sep 18 09:03 stop_adbs.sh
-rw-rw-r--. 1 opc opc 2443 Sep 18 09:03 stop_computes.sh
[opc@admin-oci-autostop-main autostopping]$
[opc@admin-oci-autostop-main autostopping]$ chmod +x /home/opc/ocicli/autostopping/*.sh
[opc@admin-oci-autostop-main autostopping]$
[opc@admin-oci-autostop-main autostopping]$ ls -ltr
total 20
drwxrwxr-x. 2 opc opc    6 Sep 18 08:31 log
-rwxrwxr-x. 1 opc opc 2696 Sep 18 09:03 stop_dbsystem_nodes.sh
-rwxrwxr-x. 1 opc opc 2026 Sep 18 09:03 stop_oac.sh
-rw-rw-r--. 1 opc opc    0 Sep 18 09:03 whitelist.txt
-rw-rw-r--. 1 opc opc 2890 Sep 18 09:03 read_me.txt
-rwxrwxr-x. 1 opc opc 2241 Sep 18 09:03 stop_adbs.sh
-rwxrwxr-x. 1 opc opc 2443 Sep 18 09:03 stop_computes.sh
[opc@admin-oci-autostop-main autostopping]$

 

실행파일 내 설정 변경

Instance Principals 인증 방식을 사용하므로 별도 config 파일은 없고 모든 sh 파일 내에 tenancy ocid를 변경

태그 내용 중에 AutoStopping NO 라고 되어 있는 것은 처리되지 않음

[opc@admin-oci-autostop-main autostopping]$ vi stop_dbsystem_nodes.sh

export OCI_CLI_AUTH=instance_principal
TENANCY_OCID=ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

WHITELIST_FILE="/home/opc/ocicli/autostopping/whitelist_stop.txt"

OCI=$(which oci | cut -d ":" -f2)
ALL_REGIONS=$($OCI iam region list | grep -i name | cut -d ":" -f2 | cut -d "\"" -f2)

# 1. for each COMPARTMENT
ALL_COMPARTMENT_OCIDS=$($OCI iam compartment list --all --compartment-id-in-subtree true --compartment-id $TENANCY_OCID | grep -v "compartment-id" | grep "ocid1.compartment.oc1" | cut -d ":" -f2 | cut -d "\"" -f2)
for COMPARTMENT_OCID in $ALL_COMPARTMENT_OCIDS
do
        echo "COMPARTMENT_OCID = $COMPARTMENT_OCID"
        COMP_IN_WHITELIS=$(cat $WHITELIST_FILE | grep $COMPARTMENT_OCID | wc -l)
        NO_AUTO_STOPPING_COMP=$($OCI iam compartment get --compartment-id $COMPARTMENT_OCID | grep -i AutoStopping | grep -i NO | wc -l)
        .
        .
        .

 

Crontab 등록

[opc@admin-oci-autostop-main log]$ crontab -e
crontab: installing new crontab
[opc@admin-oci-autostop-main log]$
[opc@admin-oci-autostop-main log]$ crontab -l
###############################################################################
# Auto Stop EveryDay 22:00
###############################################################################
00 22 * * * /home/opc/ocicli/autostopping/stop_adbs.sh > /home/opc/ocicli/autostopping/log/stop_adbs_date_$(date +\%Y-\%m-\%d_\%H\%M\%S).log 2>&1
00 22 * * * /home/opc/ocicli/autostopping/stop_dbsystem_nodes.sh > /home/opc/ocicli/autostopping/log/stop_dbsystem_nodes_date_$(date +\%Y-\%m-\%d_\%H\%M\%S).log 2>&1
00 22 * * * /home/opc/ocicli/autostopping/stop_computes.sh > /home/opc/ocicli/autostopping/log/stop_computes_date_$(date +\%Y-\%m-\%d_\%H\%M\%S).log 2>&1
00 22 * * * /home/opc/ocicli/autostopping/stop_oac.sh > /home/opc/ocicli/autostopping/log/stop_oac_date_$(date +\%Y-\%m-\%d_\%H\%M\%S).log 2>&1

 

현재 4가지 자원 종류 Auto Stop : 자율주행데이터베이스, 오라클 데이터베이스, 컴퓨트 인스턴스, 오라클 분석 서비스

 

 

 

참고

https://github.com/sinanpetrustoma/autostopping

https://github.com/AnykeyNL/OCI-AutoScale

댓글