bash + Azure CLI 조합

 

csv와 bash의 while문을 활용하여, 여러대의 vm을 배포하는 스크립트이다.

 

 

 

* Azure Compute Gallery의 이미지를 사용한다고 가정

* Vnet은 배포되어있다고 가정

 

vm_ResourceGroup vm_type vm_name vm_subnet vm_sku
test-rg VirtualMachine test-01 test-subnet Standard_B1S
test-rg VirtualMachine test-02 test-subnet Standard_B1S
test-rg VirtualMachine test-03 test-subnet Standard_B1S
test-rg VirtualMachine test-04 test-subnet Standard_B1S
test-rg VirtualMachine test-05 test-subnet Standard_B1S
test-rg VirtualMachine test-06 test-subnet Standard_B1S
test-rg VirtualMachine test-07 test-subnet Standard_B1S
test-rg VirtualMachine test-08 test-subnet Standard_B1S
test-rg VirtualMachine test-09 test-subnet Standard_B1S
#!/bin/bash

subscription = 'koo-prod'
subnet_prefix = '/subscriptions/54e0cba4-d24d-4eb3-86d9-ea8cf67e4693/resourceGroups/prd-seas-gasp-common-rg/providers/Microsoft.Network/virtualNetworks/prd-seas-gasp-vnet/subnets/'

declare -i count
count=1
filename="vm.csv"
{ 
read
while IFS=, read -r vm_ResourceGroup vm_name vm_subnet vm_sku vm_image null;
do

    echo "I got:$vm_ResourceGroup | $vm_name | $vm_subnet | $vm_sku | $vm_image"

    az account set -s $subscription

    ###네트워크 인터페이스의 파라미터 값으로 해당 값을 넣어 nic 생성
    accnet=$(az vm list-skus --location koreacentral --all true --resource-type virtualMachines --size ${vm_sku} --query '[].{acceleratedNetworkingEnabled: capabilities[?name==`AcceleratedNetworkingEnabled`].value | [0]}' -o tsv)
    accnet="$(tr [A-Z] [a-z] <<< "$accnet")"


    #동적 IP 할당
    az network nic create --name ${vm_name}"-VMNic" \
                          --resource-group $vm_ResourceGroup \
                          --subnet ${subnet_prefix}"VM-subnet"
                          #--accelerated-networking ${accnet}
                          #--output none
    


    if [ "$accnet" == "true" ];
    then
    echo "${vm_sku}임으로, nic의 가속화된 네트워킹이 enabled 되었습니다"
    else
    echo "${vm_sku}이므로, nic의 가속화된 네트워킹이 disabled 입니다."
    fi

    privateip=`az network nic ip-config list --resource-group $vm_ResourceGroup --nic-name ${vm_name}"-VMNic" | grep "privateIpAddress" | grep -v Version | cut -d '"' -f 4`
    echo "$privateip 로 nic가 생성되었습니다."
    #필요한 IP만 뽑기위해 grep, cut	

    ###3번 static IP로 설정             
    #정적 IP 설정
    az network nic ip-config update \
                            --name ipconfig1 \
                            --resource-group $vm_ResourceGroup \
                            --nic-name ${vm_name}"-VMNic" \
                            --private-ip-address ${privateip}
	
    echo "$privateip 가 static으로 변경되었습니다."

    az vm create --name $vm_name \
                 --resource-group $vm_ResourceGroup \
                 --image /subscriptions/54e0cba4-d24d-4eb3-86d9-ea8cf67e4693/resourceGroups/test-rg/providers/Microsoft.Compute/galleries/gallerykoo/images/web-test/versions/0.1.3 \
                 --generate-ssh-keys \
                 --nics ${vm_name}"-VMNic" \
                 --os-disk-name ${vm_name}"-OSdisk" \
                 --size $vm_sku \
                 --zone 1 \
                 --no-wait

    echo " $count VMs created, this time $vm_name is deployed, ip is $privateip"
    count+=1
done
} < $filename

'Azure > Azure CLI' 카테고리의 다른 글

[Azure CLI] 2.사용하지 않는 리소스 중단  (1) 2022.12.02

안녕하세요 보나에요!

 

오늘은 최근에 취득한 자격증인 CKA 자격증 후기를 남겨볼려고 합니다

 

CKA자격증은 Certified Kubernetes Administrator의 약자로, 

쿠버네티스를 하는 사람이라면 한번쯤 시도해볼만한(?) 자격증이라고 생각해요.

저는 100점만점에 82점을 받았는데요! 어떻게하면 시험에 붙을 수 있을지, 자세한 후기 남겨보려고해요.

 

1. 시험 유형

시험 유형은 홈페이지(www.cncf.io/certification/cka/)에서 확인 가능하듯이, 다음과 같아요

각 유형별로 어느정도의 비중이 잡혀있는지 확인할 수 있어요

 

 

2. 시험 공부 방법 

시험 공부 방법은, 우선 kubectl 명령어에 익숙하셔야 되요. 

CKA 시험은 100% Hands-On 시험이기때문에, Linux shell 명령어라든지, K8s 명령어인 kubectl이라든지.. 

명령어 사용이 잦기때문에 익숙해지는게 필수라고 생각합니다. 명령어에 익숙해지면서,

k8s공부도 하실거면 저는 udemy 강의를 완전 추천해요!

 

 

이 강의가 CKA공부를 위해서는 독보적인 강의라고 할 수 있어요..

단점이라면 한글자막이 없다는점, 영어자막 또한 수많은 오타가 있다는점..

하지만 장점이라면! 역시! mock exam이라는 모의 CKA 시험이 존재하구요,

챕터마다 practice test 환경을 제공해 주어서 직접 hands-on 으로 연습할 수 있어요!

 

다시말해, 연습,연습,연습을 통하여 kubernetes 명령어들에 익숙해지고, 왜 이게 개발되었나 생각하다보면

깨닫는게 하나 둘 씩 생길거에요... 저도 아직 다 깨닫진 못했지만 말이에요..(우리 모두 화이팅해봐요)

 

3. kubectl config use-context [cluster명]에 익숙해지자

CKA시험은 하나의 cluster에서 시험이 치뤄지는것이 아니에요. 다음과같이 6개의 cluster가 존재해요

docs.linuxfoundation.org/tc-docs/certification/tips-cka-and-ckad 해당 url에 접속하셔서 보시면 알 수 있듯이,

시험자는 매 문제에 해당하는 cluster에서 시험문제를 풀어야해요. 이게 쉬울수도 있을 것이라 생각하는데....

1번문제 풀고 2번문제 풀고.. 마지막문제까지 다풀었다! 라고 생각하면 쉬울거에요.

그런데 1번 막히고, 2번 풀고, 3번막히고.. 다시 1번으로 돌아오고..

 

이런 과정을 거치다 보면, 내가 context를 이상한데서 풀어버리면..... 그냥 그 시험은 끝이라고 생각이 됩니다....

 

그러기 때문에!! context를 어디서 작업했나! sudo -i 로 root권한으로 작성했었나! 이런거는 문제를 풀때마다 

다시 base node로 가는 것이 중요하다는 점!!! 꼭꼭!! 명심하셔야합니다!!!!

 

4. kubenetes documentation 활용하기

CKA 시험은 다행히, 오픈북 형식이라 1개의 참고문서를 활용할 수 있어요.

99.9%의 후기를 보면, kubernetes.io/docs/home/

 

Kubernetes Documentation

Kubernetes is an open source container orchestration engine for automating deployment, scaling, and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation.

kubernetes.io

다음 홈페이지를 참고하라고하는데요.. 저도 마찬가지로 해당 홈페이지에서 검색해가며 문제를 풀었습니다..

yaml 파일을 처음부터 만드는 바보는 없으시리라 생각해요.. 

 

yaml파일을 kubectl run nginx --image=nignx --dry-run-client -o yaml > q1.yaml 처럼 yaml로 빼신 후 사용하시거나,

docs에서 관련된 유형을 찾으셔서 복사해서 붙여넣어 yaml파일을 완성하세요.. 

 

5. kubectl explain [object명] --recursive 활용하자..

해당 명령어로 저는 두세문제는 맞추었다고 생각해요..

yaml 파일은 hierarchy가 탭으로 구분이되요..

예를 들자면, 

apiVersion: batch/v1
kind: Job
metadata:
  name: hello
spec:
  template:
    # This is the pod template
    spec:
      containers:
      - name: hello
        image: busybox
        command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']
      restartPolicy: OnFailure
    # The pod template ends here

다음과 같은 yaml 파일을 보시면, 계층구조가 확실히 보이죠?

그런데 문제는,, spec 밑에 containers 밑에 command를 넣어야하나?(물론 이건 당연한 경우지만)

라는 의문점이 들면서, 계층구조가 헷갈릴 경우가 무조건!! 생겨요.. 

이게 어떤걸 써야하는지, path인지 paths인지, hostpath인지 hostPath인지 소문자 대문자에 따라서도

오류가 날 수 있꾸요.. 그럴경우에 요긴하게 사용할 수 있는 명령어니까!!

사용해보세요!!

 

kubectl explain development --recursive 예시

이상으로 후기에 대해 적어보았습니다.. 마지막으로는 자격증을 보여드리며 마치고싶네요!!

나 CKA 자격증 땄다!!!! ㅎㅎㅎ

 

 

안녕하세요~ 보나에요!

 

오늘은 centos7 에 파이썬 가상환경을 설치 해볼 거에요!!

 

가상환경을 설치하면.. 다양한 이점들이 있어요

 

1. python 버전

2. library 버전

등..

 

버전차이로 인해 발생하는 우리들..

A라는 모듈을 사용하기 위해서 X_1.0, Y_2.0 버전이 필요하다고 생각해볼께요!

만약,

B라는 모듈을 사용하고 싶어졌어요! 근데 이 모듈은 X_1.1, Y_2.1버전이여야지 돌아간대요..

그러면 X_1.0,Y_2.0 을 uninstall 하고 새로운 버전으로 깔아야해요..

 

이렇게 자주 그러다보면 사람이 미치고 팔짝뛰는거죠잉..

 

그래서 가상환경을 깔아서! 필요한 모듈들만 싹싹! 가져오면!!

효율적으로 관리할 수 있을것 같아요!!

 

그럼 이제 한번 깔아 봅시다!!

 

sudo pip install virtualenv

 

 

 

pip 명령어를 통해 virtualenv(가상환경)을 설치해줍니다!! 저는 이미 깔려져 있어서.. ㅎㅎ

 

그럼 이제! 가상환경으로 만들어줄 폴더를 하나 만들어 봅시다!

 

저는 제 디렉토리 아래에 하나 만들어보려고해요

 

mkdir env2

 

 

env2 라는 파란 글씨를 보실 수 있어요! (파랑글씨는 디렉토리, 검정글씨는 파일을 의미해요! 참고!!)

그럼 이제 env2라는 폴더를 가상환경 폴더로 지정해줄 수 있어요!

virtualenv env2
cd env2
ls -l

env2 폴더 디렉토리 를 보시면

 

 

다음과 같이 생성되었음을 확인할 수 있어요!!

 

그리고 여기서 가상환경을 실행해 볼게요!

source ./bin/activate

 

 

 

저는 지금 env2 디렉토리가 지금 제 현재 디렉토리이기 때문에 ./bin/activate 만으로 가능했지만, 

제일 안전한 방법은 절대경로를 모두 입력해 주는것이 좋아요!!

 

Anyway,,,

그럼 이제 env2 가상환경 속으로 들어온거에요 !! 예~~~~

 

여기서 한번 확인을 해볼게요. pip list (pip로 install 한 library 목록 리턴)

python 쳐서 어떤 파이썬이 설치되어있는지

 

 

 

 

pip 라이브러리도 깨끗하고, python은 3.5.6버전이 깔려있는걸 확인할 수 있었습니다~~짝짝짝~~~

다시 나가는 방법은

deactivate

이라고 작성하시면 가상환경에서 빠져나옵니다!

큰일났어요

 

 

이것저것 만지다 보니 다양한 파이썬들이 깔렸는데... 이걸 어떻게 처리해야할 지 모르겠어요..

 

다양한 작업을 하다보니... 휴... 언젠가 다 알아내서 다 정리해 내고 말거에요.. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

일단 여기까지는 가상환경 설치해 보기였습니다~

'OS > Linux' 카테고리의 다른 글

transfer files from window to linux  (0) 2020.08.13
linux(centos7) 명령어 모음  (0) 2020.04.30
centos7에서 python2, python3 모두 사용하기  (0) 2020.02.09
2020_0123  (0) 2020.01.23

+ Recent posts