티스토리 뷰
728x90
반응형
반응형
✅ 1. Azure Cloud Shell이란?
- Azure 리소스를 명령줄로 관리할 수 있는 웹 브라우저로 액세스 가능한 웹기반 명령줄 환경.
- Microsoft에서 Cloud Shell을 관리하므로 어떤 브라우저에서든 최신 버전의 Azure CLI 및 PowerShell 모듈에 항상 액세스할 수 있다. (항상 모듈을 최신 상태로 유지)
- Bash, PowerShell 작업 방식에 가장 적합한 셸 환경을 유연하게 선택할 수 있다.
- 명령줄을 통해 VM, 스토리지, 네트워킹을 포함한 Azure 리소스와 상호 작용 & 관리하려면 필요한 구성 요소를 로컬 컴퓨터(PC, Mac, Linux)에 설치해야 한다.
- 로컬에 아무것도 설치하지 않아도 Azure 리소스를 쉽게 관리할 수 있고, 로컬 컴퓨터의 일부가 아닌 대화형 셸이 생긴다.
- SSH 키, 스크립트 등과 같은 파일을 보관 및 유지할 수 있는 클라우드 스토리지(클라우드 저장소)를 제공하는데, 이 기능을 사용하면 세션 간 및 다른 컴퓨터를 사용하여 중요한 파일에 액세스할 수 있다.
- Cloud Shell 편집기를 사용하여 Cloud Shell 인터페이스에서 직접 이 클라우드 스토리지에 저장된 파일(예: 스크립트)을 변경할 수 있다.
- 세션 간에 파일을 유지하는 메커니즘을 제공하고, 더 복잡한 작업을 위해 Visual Studio Code 편집기의 간소화된 버전을 제공합니다.
⚠️ 사용하면 안 되는 경우
상황이유
장시간 실행되는 작업 | 20분 이상 비활성 시 세션이 자동으로 종료되어 진행 중인 작업이 사라질 수 있습니다. |
sudo 같은 관리자 권한 필요 | Cloud Shell은 관리자 권한(sudo)을 지원하지 않기 때문에 제한적인 작업만 가능합니다. |
지원되지 않는 도구 설치 필요 | Cloud Shell은 제한된 환경으로 일부 도구 설치가 불가능하며, 대신 사용자 지정 VM이 필요할 수 있습니다. |
여러 지역의 저장소 필요 | Cloud Shell 저장소는 한 지역에만 할당되므로, 자동 동기화나 백업이 필요할 수 있습니다. |
동시 여러 세션 필요 | Cloud Shell은 한 번에 하나의 세션만 열 수 있어, 다중 구독이나 테넌트 작업에 적합하지 않습니다. |
✅ 2. Bash 명령 및 연산자
- Bash = "Bourne Again Shell"의 약어
- 셸은 운영 체제에 작업을 수행하도록 명령하는 프로그램입니다.
- Bash 명령의 전체 구문 : command [options] [arguments]
- csh 및 zsh를 비롯한 다른 Linux 셸도 있지만 Bash는 사실상 Linux 표준이 되었습니다. Bash가 Unix의 최초 중요 셸인 Bourne 셸(sh라고도 함)과 호환되기 때문입니다.
- Bash가 성공을 거둔 한 가지 이유는 간편성입니다. Linux의 나머지 기능과 마찬가지로 Bash는 Unix 디자인 철학을 기준으로 합니다. Peter Salus가 저서 A Quarter Century of Unix에서 요약한 것처럼 Unix에 포함된 “중대 아이디어” 중 세 가지는 다음과 같습니다.
철학설명
1. 하나의 프로그램은 한 가지 일을 잘 해야 한다 | 예: ls는 파일 목록만 보여줌 |
2. 프로그램은 함께 잘 작동해야 한다 | 예: ls | grep 파일명 처럼 여러 명령을 연결해서 사용 가능 |
3. 텍스트 스트림을 인터페이스로 사용한다 | 모든 입력과 출력을 텍스트로 다루기 때문에 사람이 읽고 조작하기 쉬움 |
- 마지막 부분이 Bash의 작동 방식을 이해하는 데에 핵심이 됩니다. Unix 및 Linux에서 가장 중요한 것은 파일입니다. Linux/Unix에서는 거의 모든 입력과 출력이 파일처럼 취급됨 -> 키보드 입력, 저장된 파일, 네트워크 연결, 명령 연결 등 전부 "텍스트 데이터"로 주고받을 수 있어서 동일한 명령을 다양한 입력/출력에 사용할 수 있음!
- 명령 관련 옵션에 대한 자세한 내용을 보려면 man(“manual”) 명령을 사용(공식 설명서(매뉴얼 페이지)) : man mkdir
- 대부분 Bash 및 Linux 명령은 --help 옵션을 지원합니다. 명령의 구문 및 옵션에 대한 설명표시(간단한 요약 도움말 보기) : mkdir --help
2-1. ls 명령 & 와일드카드 사용
- ls는 현재 디렉터리 또는 명령의 인수에 지정된 디렉터리의 내용을 나열합니다.
- 이름이 마침표로 시작하는 파일 및 디렉터리는 기본적으로 숨겨져 있습니다. 해당 항목을 포함하려면 -a 플래그를 사용합니다.
- 디렉터리의 자세한 내용을 보려면 -l 플래그를 사용합니다.
- 와일드카드는 하나 이상의 문자를 나타내는 기호입니다. 가장 자주 사용되는 와일드카드는 별표입니다.
- 와일드카드(*)는 0개 이상의 일치하는 문자를 찾지만, 와일드카드 (?) 는 단일 문자를 나타냅니다.
- 문자 그룹을 나타내는 대괄호를 사용하는 와일드카드 명령 []는 해당위치에 문자가 포함되는 파일을 나타냅니다.
- 대괄호 안의 식은 문자 범위를 나타낼 수 있습니다.
- 와일드카드 문자 중 하나를 일반 문자로 사용해야 하는 경우 리터럴로 만들거나 앞에 백슬래시를 붙여 “이스케이프”합니다.
ls | 현재 디렉터리의 파일과 폴더를 나열 | file.txt, folder/, image.jpg |
ls -a | 숨김 파일(이름이 .으로 시작되는 파일 포함)을 표시 | .bashrc, .git, file.txt |
ls -l | 파일 권한, 소유자, 크기, 날짜 등 자세한 정보 포함 | -rw-r--r-- 1 user user 1234 May 16 12:00 file.txt |
ls *.jpg | .jpg로 끝나는 모든 파일을 나열 | img1.jpg, photo.jpg |
ls 000?.jpg | 000으로 시작하고 한 자리 숫자가 뒤따르는 .jpg 파일 | 0001.jpg, 0002.jpg |
ls .[jp] | .j 또는 .p로 끝나는 숨김 파일 | .j, .p |
ls .[jpJP] | 숨김 파일 중 .j, .J, .p, .P로 끝나는 파일 | .J, .p |
ls [a-z]* | 소문자로 시작하는 파일/폴더 모두 나열 | apple.txt, zebra.doc |
ls [A-Z]* | 대문자로 시작하는 파일/폴더 모두 나열 | Dog.jpg, File.txt |
ls [0-9]* | 숫자로 시작하는 파일을 나열 | 01.log, 2024.csv |
ls *[0-9] | 숫자로 끝나는 파일을 나열 | file1, test9 |
ls \* | 파일 이름에 실제 * (별표)가 포함된 파일 검색 | file*.txt |
2-2. ps 명령
- ps 명령은 현재 실행 중인 모든 프로세스의 스냅샷을 제공합니다. 인수 없이 이 명령만 사용하면 모든 셸 프로세스가 표시됩니다.
- 기본적으로 ps만 입력하면 현재 터미널 세션에서 실행 중인 프로세스만 보여줍니다. 즉, 현재 사용자의 현재 쉘과 관련된 프로세스들만 나옵니다.
ps | 현재 터미널 세션에서 실행 중인 프로세스 목록 | bash, ps |
ps -e | 시스템의 모든 프로세스를 나열 (ps -A와 동일) |
init, systemd, sshd, Xorg 등 백그라운드에서 실행 중인 모든 프로세스를 포함 |
ps -ef | 모든 프로세스를 전체 형식으로 자세히 표시 (UID, PID, PPID 등 포함) |
UID, PID, CPU 시간, 실행 명령 등 |
ps aux | ps -ef와 유사하며 BSD 스타일 출력 형식 사용 | USER, PID, %CPU, %MEM, COMMAND 등 |
2-3. w 명령
- 서버에 있는 사용자를 확인하기 위해 Linux는 w(“who”) 명령을 제공합니다. 현재 컴퓨터 시스템에 있는 사용자 및 해당 사용자의 작업에 대한 정보를 표시합니다. w는 사용자 이름, 해당 IP 주소, 로그인한 시간, 현재 실행 중인 프로세스, 해당 프로세스를 사용하는 기간을 표시합니다.
2-4. Bash I/O 연산자
연산자설명예시< | 키보드 이외의 원본으로 입력 리디렉션 >와 반대로 파일로부터 입력을 받는 리디렉션 |
names.txt에 있는 내용을 정렬해서 출력해라 sort < names.txt |
> | 키화면 이외의 대상으로 출력 리디렉션 | 현재 디렉터리의 모든 항목을 나열하여 listing.txt파일에 저장 ls > listing.txt |
>> | 동일한 작업을 수행하되 덮어쓰지 않고 추가 | listing.txt파일이 이미 있는 경우 덮어쓰는데, 연산자를 >> 사용하는 경우 이어서 작성함. ls >> listing.txt |
| | 한 명령의 출력을 다른 명령의 입력으로 파이핑 | 1. 결과를 more 등의 다른 명령으로 파이핑하여 출력을 더욱 쉽게 관리. 화면이 가득 차면 Enter 키를 선택하여 다음 줄을 표시할 때까지 출력이 일시 중지 ps -ef | more 2. 출력을 head로 파이핑하여 처음 몇 줄만 표시할 수도 있음 ps -ef | head 3. 텍스트필터링도 가능 ps -ef | grep daemon |
2-5. pwd
- 이 명령은 현재 사용자가 있는 디렉터리에 대한 긴 형식의 경로를 출력합니다.
✅ 3. PowerShell이란?
- 명령어 + 스크립트 언어로, 명령어를 입력해서 바로 실행할 수도 있고, 스크립트 파일(.ps1)로 저장해서 자동 실행할 수도 있다. --> 여러 개의 폴더를 만들거나, 파일을 정리하거나, 시스템 점검을 자동화할 수 있죠. (Windows에서 관리 작업을 자동화하기 위한 프레임워크로 시작되었다)
- GUI보다 명령줄(콘솔)이 빠르고 효율적이라 서버 관리, 클라우드 관리 등에서는 특히 중요.
- 한 명령의 출과 결과를 다음 명령으로 넘길 수 있어 명령 일괄 처리를 실행할 수 있으므로 연속 통합 파이프라인에 대한 작업 자동화에 적합합니다.
- 콘솔을 사용하여 클라우드 리소스 및 기타 리소스와 상호 작용할 수 있습니다.
- 명령 및 스크립트를 텍스트 파일에 저장하고 소스 제어 시스템을 사용할 수 있습니다. 명령을 반복할 수 있고 감사할 수 있습니다. 특히 정부 시스템에서는 모든 항목을 추적, 평가 또는 감사해야 합니다. 감사는 데이터베이스 변경에서 스크립트로 수행되는 변경에 이르기까지 모든 것에 적용됩니다.
- 기본 제공 도움말 시스템: 대부분의 셸에는 명령에 대해 자세히 알아볼 수 있는 일종의 도움말 시스템이 있습니다. 예를 들어, 명령이 수행하는 작업 및 지원하는 매개 변수를 알아볼 수 있습니다. PowerShell의 도움말 시스템은 명령에 관한 정보를 제공하고 온라인 도움말 문서와도 통합됩니다. Get-Help 명령을 쓰면 각 명령어에 대한 설명과 예시를 바로 확인할 수 있어요.
- 파이프라인: 기존 셸에서는 파이프라인을 사용하여 여러 명령을 순차적으로 실행하고, 한 명령의 출력은 다음 명령에 대한 입력입니다. PowerShell은 기존 셸과 같이 이러한 개념을 구현하지만, 텍스트가 아닌 '객체'로 동작하여 기존 셸과 다릅니다. (기존쉘은 문자열(텍스트)만 다뤘음. PowerShell은 진짜 "데이터 구조" (객체)로 처리하여 덕분에 출력 내용에서 필요한 부분만 뽑기 쉬움.
- 별칭: 별칭은 명령을 실행하는 데 사용할 수 있는 대체 이름입니다. PowerShell은 cls(clear the screen(화면 지우기)) 및 ls(list the files(파일 나열)) 같은 일반적인 별칭 사용을 지원합니다. 그러므로 새 사용자가 다른 프레임워크에 대한 지식을 사용할 수 있으며, 친숙한 명령에 대한 PowerShell 이름을 반드시 기억할 필요는 없습니다.
PowerShell은 다음과 같은 몇 가지 점에서 기존 명령줄 셸과 다릅니다.
- 텍스트를 통해 개체에서 작동합니다. 명령줄 셸에서는 출력과 입력이 다를 수 있는 스크립트를 실행해야 하므로 출력 서식을 지정하고 필요한 데이터를 추출하는 데 시간이 소요됩니다. 반면 PowerShell에서는 개체를 입력 및 출력으로 사용합니다. 즉, 서식 지정 및 추출에 걸리는 시간을 줄일 수 있습니다.
- cmdlet이 있습니다. PowerShell에서 명령어는 cmdlet이라고 불러요. (발음: 커맨드-렛) cmdlet은 별도의 실행 파일이 아닌 공용 런타임에 빌드됩니다. 이 특성은 매개 변수 구문 분석 및 파이프라인 동작에서 일관된 환경을 제공합니다. cmdlet은 일반적으로 개체 입력을 받아들이고 개체를 반환합니다. PowerShell의 핵심 cmdlet은 .NET Core로 빌드되며 오픈 소스입니다. 커뮤니티 및 기타 소스의 더 많은 cmdlet, 스크립트, 함수를 사용하여 PowerShell을 확장하거나 .NET Core 또는 PowerShell에서 고유한 cmdlet을 빌드할 수 있습니다.
- 다양한 유형의 명령이 있습니다.: PowerShell의 명령은 네이티브 실행 파일, cmdlet, 함수, 스크립트 또는 별칭일 수 있습니다. 실행하는 모든 명령은 이러한 유형 중 하나입니다. cmdlet은 명령의 한 유형이므로, “명령”과 “cmdlet”이라는 단어를 서로 교환하여 사용하는 경우가 많습니다.
3-1. Get-Command 사용하여 명령 찾기
- powerShell에 설치된 모든 명령 목록이 표시됩니다. 수천 개의 명령이 설치되어 있으므로 필요한 명령을 빠르게 찾을 수 있도록 응답을 필터링하는 방법이 필요
- 목록을 필터링하려면 cmdlet에 대한 동사 명사 명명 표준에 유의하세요. 예를 들어 Get-Random 명령에서 Get은 동사이고 Random는 명사입니다. 플래그를 사용하여 원하는 명령에서 동사 또는 명사를 대상으로 지정합니다.
- -명사: 플래그는 -Noun 명사에 관련된 명령 이름의 일부를 대상으로 합니다. 다음은 검색 중인 명사로 별칭을 사용하여 명령 이름을 검색하는 일반적인 방법입니다
: Get-Command -Noun alias*
--> 결과: Get-FileHash, Out-File, Unblock-File... - -동사: 플래그는 -Verb 동사와 관련된 명령 이름의 일부를 대상으로 합니다. -Noun 플래그와 -Verb 플래그를 결합하여 더욱 자세한 검색 쿼리 및 유형을 만들 수 있습니다. 예제는 다음과 같습니다.
: Get-Command -Verb Get -Noun alias*
--> 결과: Get-FileHash
✅ 4. JSON ARM(Azure Resource Manager) 템플릿을 사용하여 Azure 인프라 배포
- 선언적이고 재사용 가능한 방식으로 프로젝트의 인프라를 지정할 수 있습니다. 개발 프로젝트와 동일한 소스 제어에 템플릿을 버전 지정하고 저장할 수 있습니다.
- ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 IaC(Infrastructure as Code = 코드로 인프라를 관리하는 방법)를 구현하는 방법을 알아봅니다.
4-1. IaC(Infrastructure as Code)란?
- IaC(Infrastructure as Code)를 사용하면 코드로 코드로 인프라(서버, 네트워크, 데이터베이스 등)를 애플리케이션에 필요한 인프라를 설정하고 관리할 수 있습니다.
- 애플리케이션 코드뿐 아니라 애플리케이션을 배포하는 데 필요한 모든 항목을 중앙 코드 리포지토리에서 유지 관리할 수 있습니다. IaC(Infrastructure as Code)의 이점은 다음과 같습니다.
- 일관된 구성 : 매번 같은 템플릿을 사용하니까, 누가 배포해도 설정이 똑같음 (실수방지)
- 향상된 확장성 : 1개의 서버가 아니라 10개, 100개도 쉽게 만들어낼 수 있음 (템플릿만 바꾸면 대규모 확장도 간단)
- 더 빠른 배포 : 클릭 클릭 할 필요 없이 명령 한 번이면 바로 배포됨
- 향상된 추적 가능성 : 누가, 언제, 어떤 설정을 변경했는지 기록이 남고 히스토리 확인 가능
4-2. ARM 템플릿이란?
- 배포를 위한 인프라 및 구성을 정의하는 JSON 파일.
- 템플릿은 ‘선언적 구문’을 사용. 선언적 구문은 해당 제어 흐름을 설명하지 않고도 표시되는 리소스를 간략하게 설명하는 구조체와 요소를 빌드하는 방법입니다. 컴퓨터에서 수행할 명령을 사용하는 ‘명령적 구문’과 다릅니다. 명령적 스크립팅은 리소스 배포의 각 단계를 지정하는 데 중점을 둡니다.
- ARM 템플릿을 사용하면 배포할 항목을 만드는 프로그래밍 명령 시퀀스를 작성하지 않고도 해당 항목을 선언할 수 있습니다. ARM 템플릿에서 리소스 및 해당 리소스의 속성을 지정하면 Azure Resource Manager가 해당 정보를 사용하여 조직적이고 일관된 방식으로 리소스를 배포합니다.
- 애플리케이션 코드처럼 소스 리포지토리에 IaC 파일을 저장하고 버전을 지정할 수 있습니다.
- ARM 템플릿은 idempotent입니다. 즉, 동일한 템플릿을 여러 번 배포하고 동일한 상태의 동일한 리소스 종류를 가져올 수 있습니다.
- Resource Manager는 리소스가 올바른 순서로 만들어지도록 리소스 배포를 오케스트레이션합니다. 가능한 경우 ARM 템플릿 배포가 스크립팅된 배포보다 더 빠르게 완료되도록 리소스를 병렬로 만듭니다.
- Resource Manager에는 기본 제공 유효성 검사도 있습니다. 배포가 성공할지 확인하기 위해 배포를 시작하기 전에 템플릿을 확인합니다.
- 배포가 더 복잡해지면 ARM 템플릿을 더 작고 재사용 가능한 구성 요소로 분할하고 이 작은 템플릿들을 배포 시에 함께 접목할 수 있습니다. 템플릿을 다른 템플릿 내에 중첩할 수도 있습니다.
- Azure Portal에서 배포 기록을 검토하고 배포 상태 정보를 가져올 수 있습니다. 포털에 모든 매개 변수 및 출력의 값이 표시됩니다.
- ARM 템플릿을 Azure Pipelines와 같은 CI/CD(연속 통합 및 지속적인 배포) 도구에 통합할 수도 있습니다. 이 도구는 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화할 수 있습니다. Azure DevOps 및 ARM 템플릿 작업을 사용하여 프로젝트를 지속적으로 빌드 및 배포할 수 있습니다.
4-3. ARM 템플릿 파일 구조
요소설명schema | JSON 데이터의 구조를 설명하는 JSON 스키마 파일의 위치를 정의하는 필수 섹션입니다. 사용할 버전 번호는 배포 범위 및 JSON 편집기에 따라 다릅니다. |
콘텐츠 버전 | 템플릿 버전을 정의하는 필수 섹션입니다(예: 1.0.0.0). 이 값을 사용하여 템플릿의 중요한 변경 내용을 문서화하고 올바른 템플릿을 배포하는지 확인할 수 있습니다. |
apiProfile | 리소스 종류의 API 버전 컬렉션을 정의하는 선택적 섹션입니다. 이 값을 사용하면 템플릿에 있는 각 리소스의 API 버전을 지정하지 않을 수 있습니다. |
parameters | 배포 중에 제공되는 값을 정의하는 선택적 섹션입니다. 매개 변수 파일, 명령줄 매개 변수 또는 Azure Portal에서 해당 값을 제공할 수 있습니다. |
variables | 템플릿 언어 식을 간소화하는 데 사용되는 값을 정의할 선택적 섹션입니다. |
functions | 템플릿 내에서 사용할 수 있는 사용자 정의 함수를 정의할 수 있는 선택적 섹션입니다. 템플릿에서 반복적으로 사용되는 복잡한 식이 있는 경우 사용자 정의 함수를 사용하여 템플릿을 간소화할 수 있습니다. |
자원 | 리소스 그룹 또는 구독에서 업데이트하거나 배포하려는 실제 항목을 정의하는 필수 섹션입니다. |
출력 | 배포 종료 시 반환되는 값을 지정할 선택적 섹션입니다. |
4-4. Azure에 ARM 템플릿 배포
- ARM 템플릿을 Azure에 배포하는 방법에는 세 가지가 있습니다.
- 로컬 템플릿 배포
- 연결된 템플릿 배포
- 지속적인 배포 파이프라인에서 배포
### 로컬 템플릿 배포 예시
# 1) 먼저 ARM(Azure Resource Manager) 템플릿을 작성합니다. (Visual Studio Code에서 예시 ARM 템플릿을 받아올 수도 있음)
# 템플릿은 아래와 같은 형태이고, {파일명}.json으로 저장합니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [],
"outputs": {}
}
# 2) 이후 New-AzResourceGroupDeployment 명령은 Azure에 템플릿을 배포합니다. 배포 이름은 날짜가 접미사로 추가된 blanktemplate으로 설정함.
'''
$templateFile="{파일명}.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="blanktemplate-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile
'''
4-5. ARM 템플릿에 리소스 추가
### ARM 템플릿에 Azure 스토리지 계정 리소스를 추가합니다.
# 리소스 블록에 스토리지 를 입력합니다.
{
"resources":[]
}
# Visual Studio에서는 대괄호에 커서를 대면 스토리지 목록이 나오고, arm-storage 클릭 시 리소스가 자동으로 입력됨
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "storageaccount1",
"tags": {
"displayName": "storageaccount1"
},
"location": "[resourceGroup().location]",
"kind": "StorageV2",
"sku": {
"name": "Premium_LRS"
}
}
],
"outputs": {}
}
4-6. 매개 변수 및 출력을 사용하여 Azure Resource Manager 템플릿의 유연성 강화
- 스토리지 계정 이름이 하드 코딩되어 있습니다. 이 템플릿은 매번 동일한 스토리지 계정을 배포하는 데에만 사용할 수 있습니다. 다른 이름으로 스토리지 계정을 배포하려면 새 템플릿을 만들어야 합니다. 이는 배포를 자동화하는 실용적인 방법이 아닙니다. 스토리지 계정 SKU의 매개 변수를 추가하여 템플릿을 다시 사용할 수 있도록 설정할 수 있습니다.
- 리소스를 배포할 때 입력할 수 있는 값을 지정합니다. 템플릿에서 매개 변수는 256개로 제한됩니다. 매개 변수에 사용할 수 있는 속성은 다음과 같습니다.
### 파라미터 섹션
"parameters": {
"<parameter-name>": {
"type": "<type-of-parameter-value>",
"defaultValue": "<default-value-of-parameter>",
"allowedValues": [
"<array-of-allowed-values>"
],
"minValue": <minimum-value-for-int>,
"maxValue": <maximum-value-for-int>,
"minLength": <minimum-length-for-string-or-array>,
"maxLength": <maximum-length-for-string-or-array-parameters>,
"metadata": {
"description": "<description-of-the-parameter>"
}
}
}
### 리소스 섹션
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "[resourceGroup().location]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
### 아웃풋 섹션
"outputs": {
"<output-name>": {
"condition": "<boolean-value-whether-to-output-value>",
"type": "<type-of-output-value>",
"value": "<output-value-expression>",
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-variable>
}
}
}
- 보안상의 이유로 템플릿에서 사용자 이름 및/또는 암호의 기본값을 하드 코딩하거나 제공하지 않습니다. 사용자 이름 및 암호(또는 비밀)에는 항상 매개 변수를 사용합니다. 모든 암호 및 비밀에는 secureString을 사용합니다. JSON 개체에 중요한 데이터를 전달하는 경우 secureObject 유형을 사용합니다. secureString 또는 secureObject 형식을 사용하는 템플릿 매개 변수는 리소스를 배포한 후 읽거나 수집할 수 없습니다.
배포시 아래와 같이 파라미터를 같이 전달하면 됨.
templateFile="azuredeploy.json"
az deployment group create \
--name testdeployment1 \
--template-file $templateFile \
--parameters storageAccountType=Standard_LRS
문제!
문1) kubectl을 통해 Azure Kubernetes 클러스터에서 일상적인 검사를 수행해야 합니다. 다음 중 이 작업을 수행하는 방법은 무엇인가요?
: Azure Cloud Shell을 열고 az aks get-credentials을 사용하여 kube 구성 파일을 Cloud Shell 세션에 다운로드하고 연결을 설정합니다.
문2) Cloud Shell 스토리지에 스크립트를 저장해두었습니다. 리소스 관리를 위해 이 스크립트를 지속적으로 사용하지만 이 스크립트를 약간 변경해야 합니다. 다음 중 이 작업을 처리하는 가장 좋은 방법은 무엇인가요?
: Cloud Shell 편집기를 사용하여 필요한 내용을 변경하고 CloudDrive에 직접 저장합니다.
문3) Bash 명령으로 cd .를 입력한 경우 어떤 디렉터리로 전환하시겠어요?
: 디렉터리를 전환하지 않습니다. .은 현재 디렉터리를 나타냅니다. 현재 디렉터리로 디렉터리를 변경(cd)해도 디렉터리가 전혀 변경되지 않습니다.
문4) 다음 중 foo.txt 및 bar.txt의 내용을 foobar.txt라는 새 파일로 결합하는 명령은 무엇입니까?
: cat foo.txt bar.txt > foobar.txt
문5) 다음 중 Azure Resource Manager 템플릿의 요소가 ‘아닌’ 것은 무엇입니까?
: idempotent
문6) Azure Resource Manager 템플릿은 idempotent입니다. 즉, 변경 내용 없이 템플릿을 두 번째로 실행하면 다음이 수행됩니다.
: Azure Resource Manager는 배포된 리소스를 변경하지 않습니다.
728x90
반응형
'개발환경 > Server' 카테고리의 다른 글
cat 명령어로 실시간 로그 확인하기 (0) | 2025.02.26 |
---|---|
[Ubuntu] 우분투GUI에서 deb파일 설치 및 실행하는 방법 (0) | 2024.06.28 |
curl: 특정 사이트에 header, content 포함하여 POST전송하는 명령어 (0) | 2024.06.25 |
[Ubuntu] 현재 계정 비밀번호를 잃어버린 경우 해결방법 (0) | 2024.06.24 |
[Ubuntu] 크론 실행 및 로그파일 생성, 로그 롤링 방법 (27) | 2024.04.01 |
댓글