728x90
728x90
Azure를 이용한 리눅스 VM 배포/연결 및 실습
- Microsoft Azure를 이용하여 리눅스 실습을 진행해보자.
리눅스 VM 배포 및 연결
① Azure에서 가상 머신 만들기 및 배포
- Azure 포털에 로그인한 후, 다음과 같이 가상 머신을 만들어준다.
설정 항목 | 리눅스 VM |
리소스 그룹 | RG## |
가상머신 이름 | vmlinux## |
지역 | East US |
이미지 | Ubuntu Server 22.04 LTS |
크기 | Standard_B2s |
사용자 이름 | myuser |
인증 방식 | 암호: He*lo@owold123 |
공용 인바운드 포트 | SSH(22), HTTP(80) |
OS 디스크 유형 | 프리미엄 SSD |
가상 네트워크 | vnet-test |
서브넷 | snet-linux |
부트 진단 | 사용 안 함 |
확장 | N/A |
② SSH를 사용한 연결
- 생성한 @vmlinux##@ 리소스로 이동한다.
- [설정] > [연결] 탭을 클릭한 후, [SSH] 항목에서 4번 항목을 확인한다. (myuser@IP주소)
- 윈도우 혹은 맥의 터미널에서 아래의 명령을 실행하여 생성한 리눅스 서버로 접속한다.
> ssh myUser@**.**.***.***
- Azure에서 VM을 생성할 때 적었던 비밀번호를 입력한다.
myUser@**.**.***.***'s password:
- 성공적으로 접속이 되었는지 확인한다.
리눅스 실습하기
명령행 편집
- 문자 지우기 : @[←]@ 또는 @[Delete]@
- 단어 지우기 : @[Ctrl] + [W]@ (W : Word)
- 행 지우기 : @[Ctrl] + [U]@ (U : Underline)
명령과 옵션
- 명령만 사용한 경우 : @ls@
- 명령과 옵션을 사용한 경우 : @ls -al@
명령과 옵션, 인자
- 명령과 인자를 사용한 경우 : @ls /tmp@
- 명령, 옵션, 인자를 사용한 경우 : @ls -al /tmp@
기초 명령
- @date@ 명령 : 날짜와 시간을 출력한다.
- @clear@ 명령 : 화면을 지운다.
- @man@ 명령 : 명령 사용 방법을 화면에 출력한다.
- @passwd@ 명령 : 사용자 계정의 비밀번호를 변경한다.
셸 지정 및 변경
- 사용자의 기본 셸은 @/etc/passwd@ 파일에 저장된다.
- @chsh@ 명령을 사용하여 기본 셸을 변경할 수 있다.
$ grep Sunny /etc/passwd // 기본 셸 확인하기
Sunny:x:1000:1000:Ubuntu:/home/Sunny:/bin/bash
$ chsh -s /bin/sh Sunny // 기본 셀 변경하기
Password:
$ grep Sunny /etc/passwd // 변경된 셸 확인하기
Sunny:x:1000:1000:Ubuntu:/home/Sunny:/bin/sh
$ chsh -s /bin/bash Sunny // 기본 셸로 되돌리기
출력 명령
- @echo@ 명령 : 화면에 한 줄의 문자열을 출력한다.
- @printf@ 명령 : 자료를 형식화하여 화면에 출력한다.
- 예) @$ printf "linux ubuntu \n"@
셸 변수 정의
- 형식 : @변수명=문자열@
- 예) @SOME=test@
별칭
- @alias@ 명령 : 앨리어스를 생성한다.
- 예) @alias hs = history@
- 주의할 점 : 스크립트를 작성할 때는 앨리어스명을 쓰지 않고 정식 명칭을 사용해야 한다. (실행이 안될 수 있다.)
히스토리
- @history@ 명령 : 히스토리(명령 입력 기록)를 출력한다.
파일과 디렉터리
- @file@ 명령 : 파일의 종류를 알아보는 명령
- 예) @file .profile@
- @ls@ 명령 : 디렉터리의 내용을 출력한다.
- @chmod@ 명령 : 파일이나 디렉터리의 접근 권한을 변경한다.
- @mkdir@ 명령 : 디렉터리를 생성한다.
- @rmdir@ 명령 : 디렉터리를 삭제한다.
- @cp@ 명령 : 파일이나 디렉터리를 복사한다.
- @-r@ 옵션 : 디렉터리를 복사할 때 지정한다.
- @mv@ 명령 : 파일 또는 디렉터리를 이동하거나 이름을 바꾼다.
- @rm@ 명령 : 파일을 삭제한다.
- @-r@ 옵션 : 디렉터리를 삭제할 때 지정한다.
- @-i@ 옵션 : 파일을 정말 삭제할 것인지 확인한다.
- @touch@ 명령 : 빈 파일을 생성한다.
- @-a@ 옵션 : 접근 시간만 변경한다.
- @-m@ 옵션 : 수정 시간만 변경한다.
- @grep@ 명령 : 지정한 패턴이 포함된 행을 찾는다.
- @-i@ 옵션 : 소문자, 대문자를 모두 검색한다.
- @-l@ 옵션 : 지정한 패턴이 포함된 파일명을 출력한다.
- @-n@ 옵션 : 행 번호를 출력한다.
- @find@ 명령 : 지정한 위치에서 검색 조건에 맞는 파일을 찾는다.
- 검색 조건
- @-name filename@ : 파일명으로 검색한다.
- @-type 파일 종류@ : 파일 종류로 검색한다.
- @-user loginID@ : 지정한 사용자가 소유한 모든 파일을 검색한다.
- @-perm 접근 권한@ : 지정한 사용 권한과 일치하는 파일을 검색한다.
- 동작
- @-exec 명령 {} \;@ : 검색된 파일에 명령을 실행한다.
- @-ok 명령 {} \;@ : 사용자의 확인을 받아서 명령을 실행한다.
- @-print@ : 검색된 파일의 절대 경로명을 화면에 출력한다. (기본 동작)
- @-ls@ : 검색 결과를 긴 목록 형식으로 출력한다.
- 검색 조건
입출력
- @>@ : 파일 리다이렉션(덮어쓰기)
- @>>@ : 파일에 내용을 추가
- @2>@ : 표준 오류 메시지를 파일에 저장
프로세스 관리
- @ps@ 명령 : 현재 실행 중인 프로세스에 대한 정보를 출력한다.
- @kill@ 명령 : 지정한 시그널을 프로세스에게 보낸다.
- @2@ : 인터럽트 시그널 (Ctrl + C)
- @9@ : 프로세스를 강제로 종료
- @pkill@ 명령 : 프로세스 명령 이름으로 종료
- @pgrep@ 명령 : 지정한 패턴과 일치하는 프로세스의 정보를 출력한다.
디스크 관리
- @fdisk@ 명령 : 디스크의 파티션 생성, 삭제, 보기 등 파티션을 관리한다.
- @mkfs@ 명령 : 리눅스 파일 시스템을 만든다.
- @mount@ 명령 : 파일 시스템을 마운트한다.
- @umount@ 명령 : 파일 시스템을 언마운트한다.
- @df@ 명령 : 디스크의 남은 공간에 대한 정보를 출력한다.
리눅스 VM에 데이터 디스크 추가하기
① 데이터 디스크 추가
- Azure에서 생성한 가상 머신 리소스의 [디스크] 탭에 들어 간후, 새로운 디스크(@DataDisk_1@)를 생성한다.
- VM에 연결된 디스크 확인하기
# lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
sda 0:0:0:0 30G
├─sda1 29.9G /
├─sda14 4M
└─sda15 106M /boot/efi
sdb 0:0:0:1 4G
└─sdb1 4G /mnt
sdc 1:0:0:0 4G
② 디스크 포맷 및 검증
# sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
# sudo mkfs.xfs /dev/sdc1
# sudo partprobe /dev/sdc1
③ 디스크 마운트
# sudo mkdir /datadrive1
# sudo mount /dev/sdc1 /datadrive1
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 1.6G 28G 6% /
devtmpfs 449M 0 449M 0% /dev
tmpfs 454M 0 454M 0% /dev/shm
tmpfs 91M 964K 90M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 454M 0 454M 0% /sys/fs/cgroup
/dev/loop0 64M 64M 0 100% /snap/core20/1852
/dev/loop2 54M 54M 0 100% /snap/snapd/18933
/dev/loop1 92M 92M 0 100% /snap/lxd/24061
/dev/sda15 105M 6.1M 99M 6% /boot/efi
/dev/sdb1 3.9G 28K 3.7G 1% /mnt
tmpfs 91M 0 91M 0% /run/user/1000
/dev/sdc1 4.0G 61M 4.0G 2% /datadrive1
# cd /datadrive1/
# sudo touch test
# ls
test
④ 부팅 후 디스크 유지를 위해 @/etc/fstab@ 파일에 추가
[1] 새 드라이브의 UUID 확인
# sudo blkid
/dev/sdb1: UUID="6ee7f013-51f1-446d-80b2-bc4392bec460" TYPE="ext4" PARTUUID="92865292-01"
/dev/sda1: LABEL="cloudimg-rootfs" UUID="1937f012-ef27-469a-8f75-8d63a6a39aa0" TYPE="ext4" PARTUUID="73105be2-2d95-40d8-bb8a-5454f56ccc0b"
/dev/sda15: LABEL_FATBOOT="UEFI" LABEL="UEFI" UUID="B06C-6E89" TYPE="vfat" PARTUUID="fdd00ae2-94f3-4b6a-a9b6-6f6612f42a26"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/sda14: PARTUUID="dcc78ecf-19e8-4e28-83d4-53a9a38e3bcb"
/dev/sdc1: UUID="ad19689d-a77c-446e-988e-43f18682f625" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="a17fdda0-4069-46e5-aa6d-38ddb675a4e3"
[2] 텍스트 편집기에서 @/etc/fstab@ 파일 열기
# sudo nano /etc/fstab
[3] @fstab@ 파일 마지막에 추가할 내용 예시
UUID=3333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
vi 편집기
NGINX 설치 및 샘플 페이지 생성하기
NGINX란?
- 가벼우면서도 강력한 프로그램을 목표로 러시아에서 개발되어 현재는 미국에서 운영중인 오픈 소스 웹 서버 프로그램이다.
- '엔진엑스'라고 읽는다.
- HTTP와 리버스 프록시, IMAP/POP3 등의 서버 구동이 가능하다.
- Java 서블릿은 대개 Apache의 Tomcat을 연동해서 구동하고, PHP의 경우 PHP-FPM(FastCGI Process Manager)을 연동해서 구동한다.
패키지 소스 업데이트
$ sudo apt-get -y update
NGINX 설치
$ sudo apt-get -y install nginx
- NGINX를 설치한 후, 제대로 실행되고 있는지 확인하기 위해 다음의 명령을 실행한다.
$ ps -ef
root 2630 1 0 10:20 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process o
www-data 2633 2630 0 10:20 ? 00:00:00 nginx: worker process
- 다음의 명령을 실행하여 nginx가 작동하고 있는지 확인해본다.
$ curl http://localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
- Azure에서 배포한 리눅스 VM의 내부 IP 주소를 본인 PC의 브라우저 검색창에 입력하고 실행한다. 그러면 nginx 초기 화면이 뜨는 것을 확인할 수 있다.
$ ifconfig
@index.html@ 파일 만들기
- 다음의 명령들을 차례로 실행한다.
$ fileName=/var/www/html/index.html
$ sudo sh -c "echo 'Running Sample Web from host $(hostname)'>${fileName}"
- 그리고 개인 PC의 웹 브라우저의 검색창에 리눅스 VM 아이피 주소를 입력하고 실행한다. 수정한 내용이 반영 것을 확인할 수 있다.
- 다음 명령을 입력하면 nginx가 돌아가고 있는 프로세스가 몇 개인지 확인할 수 있다.
$ ps -ef | grep nginx
- 다음 명령을 입력하면 nginx와 관련된 프로세스들 모두 종료시킬 수 있다.
$ sudo pkill nginx
- nginx를 다시 실행하려면 다음과 같이 명령을 입력한다.
$ sudo nginx
VS Code로 원격 리눅스 VM에 SSH 연결 구성하기
① VS Code 설치
② VS Code에서 Remote-SSH 확장 설치하기
③ VS Code에서 원격 리눅스 VM 연결하기
- Remote-SSH 설치 후, @[F1]@ (또는 @[Ctrl]@ + @[Shift]@ + @[P]@)을 누른다. 그리고 @ssh@를 입력한 후, @Remote-SSH: Connect to Host...@를 클릭한다.
- @[Add New SSH Host...]@ 항목을 클릭한다.
- Azure에서 배포한 리눅스 VM의 계정명(@name@)과 @IP주소@를 입력한 후, @[Enter]@ 버튼을 누른다.
- 상단의 @C:\Users\계정명\.ssh\config@ 항목을 클릭해준다. 그러면 @C:\Users\계정명\.ssh@ 디렉터리에 @config@ 파일을 저장하게 된다.
- @config@ 파일에는 원격으로 연결할 서버 정보가 들어가 있다.
- 다시 @[F1]@(또는 @[Ctrl]@ + @[Shift]@ + @[P]@)을 누르고 @ssh@를 입력하여 @Remote-SSH: Connect to Host...@ 항목을 클릭한다.
- 원격 리눅스 VM의 아이피 주소가 적힌 항목을 클릭한다.
- 새로운 VS Code 창이 뜨고, 패스워드를 입력하라는 창이 뜬다. 원격 리눅스 VM의 사용자 계정 비밀번호를 입력한다.
- 터미널을 열면(@[Ctrl]@ + @[Shift]@ + @[`]@) 자동으로 원격 리눅스 VM으로 연결이 되는 것을 확인할 수 있다.
④ 디렉터리 및 파일 생성해보기
- VS Code에서 원격 리눅스 VM에 연결한 상태에서, 터미널을 통해 디렉터리와 파일을 생성해본다.
- 이와 같은 방법으로 VS Code를 사용하여 원격 저장소를 편하게 관리할 수 있다.
Azure CLI / PowerShell on Linux
- 리눅스에서 Azure를 셸(Shell)로 관리하려면 Azure CLI와 Azure PowerShell이 설치되어 있어야 한다.
- 대부분의 고수들은 Azure CLI나 Azure PowerShell을 이용하여 Azure를 다룬다.
① Azure CLI 설치 및 확인하기
- Azure CLI는 Bash 스타일로 Azure를 다룰 수 있다.
- 다음 명령을 입력하여 Azure CLI를 설치한다.
$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
- 설치가 완료되면 다음 명령을 입력해서 Azure CLI가 제대로 설치되어 있는지 확인한다.
$ az --version
azure-cli 2.48.1
core 2.48.1
telemetry 1.0.8
Dependencies:
msal 1.20.0
azure-mgmt-resource 22.0.0
Python location '/opt/az/bin/python3'
Extensions directory '/home/myuser/.azure/cliextensions'
Python (Linux) 3.10.10 (main, Apr 25 2023, 04:23:10) [GCC 11.3.0]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
② Azure PowerShell 설치 및 확인하기
- Azure PowerShell은 PowerShell 문법 스타일로 Azure를 다룰 수 있다.
- 다음 명령을 입력하여 Azure PowerShell을 설치한다.
// # Update the list of packages
$ sudo apt-get update
// Install pre-requisite packages.
$ sudo apt-get install -y wget apt-transport-https software-properties-common
// Download the Microsoft repository GPG keys
$ wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
// # Register the Microsoft repository GPG keys
$ sudo dpkg -i packages-microsoft-prod.deb
// Delete the the Microsoft repository GPG keys file
$ rm packages-microsoft-prod.deb
// Update the list of packages after we added packages.microsoft.com
$ sudo apt-get update
// # Install PowerShell
$ sudo apt-get install -y powershell
// Start PowerShell
$ pwsh
// Install Azure PowerShell Module
$ Install-Module -Name Az -AllowClobber
- @pwsh@ 명령을 입력하면 다음과 같이 Azure PowerShell로 진입하게 된다.
$ pwsh
PowerShell 7.3.4
PS /home/myuser> // PowerShell 진입
- 다음 명령을 입력하여 Azure PowerShell 모듈이 설치되었는지 확인한다.
$ get-module -ListAvailable Az*
Directory: /home/myuser/.local/share/powershell/Modules
ModuleType Version PreRelease Name PSEdition ExportedCommands
---------- ------- ---------- ---- --------- ----------------
Script 9.7.1 Az Core,Desk
Script 2.12.2 Az.Accounts Core,Desk {Disable-AzDataCollection, Disable-AzCon…
Script 2.0.0 Az.Advisor Core,Desk {Disable-AzAdvisorRecommendation, Enable…
Script 5.4.0 Az.Aks Core,Desk {Get-AzAksCluster, New-AzAksCluster, Rem…
Script 1.1.4 Az.AnalysisServices Core,Desk {Resume-AzAnalysisServicesServer, Suspen…
Script 4.0.2 Az.ApiManagement Core,Desk {Add-AzApiManagementApiToGateway, Add-Az…
Script 1.2.0 Az.AppConfiguration Core,Desk {Get-AzAppConfigurationStore, Get-AzAppC…
Script 2.2.2 Az.ApplicationInsights Core,Desk {Get-AzApplicationInsights, Get-AzApplic…
Script 2.0.0 Az.Attestation Core,Desk {Get-AzAttestationPolicy, Set-AzAttestat…
Script 1.0.0 Az.Automanage Core,Desk {Get-AzAutomanageBestPractice, Get-AzAut…
Script 1.9.1 Az.Automation Core,Desk {Set-AzAutomationPython3Package, New-AzA…
Script 3.4.0 Az.Batch Core,Desk {Remove-AzBatchAccount, Get-AzBatchAccou…
Script 2.0.1 Az.Billing Core,Desk {Get-AzBillingInvoice, Get-AzBillingPeri…
Script 2.1.0 Az.Cdn Core,Desk {Clear-AzCdnEndpointContent, Clear-AzFro…
Script 1.2.0 Az.CloudService Core,Desk {Get-AzCloudService, Get-AzCloudServiceI…
Script 1.13.1 Az.CognitiveServices Core,Desk {Get-AzCognitiveServicesAccount, Get-AzC…
Script 5.7.1 Az.Compute Core,Desk {Remove-AzAvailabilitySet, Get-AzAvailab…
Script 1.0.0 Az.ConfidentialLedger Core,Desk {Get-AzConfidentialLedger, New-AzConfide…
Script 3.2.0 Az.ContainerInstance Core,Desk {Add-AzContainerInstanceOutput, Get-AzCo…
Script 3.0.4 Az.ContainerRegistry Core,Desk {New-AzContainerRegistry, Get-AzContaine…
Script 1.10.1 Az.CosmosDB Core,Desk {Get-AzCosmosDBSqlContainer, Get-AzCosmo…
Script 1.1.0 Az.DataBoxEdge Core,Desk {Get-AzDataBoxEdgeJob, Get-AzDataBoxEdge…
Script 1.5.0 Az.Databricks Core,Desk {Get-AzDatabricksAccessConnector, Get-Az…
Script 1.16.13 Az.DataFactory Core,Desk {Set-AzDataFactoryV2, Update-AzDataFacto…
Script 1.0.2 Az.DataLakeAnalytics Core,Desk {Get-AzDataLakeAnalyticsDataSource, New-…
Script 1.3.0 Az.DataLakeStore Core,Desk {Get-AzDataLakeStoreTrustedIdProvider, R…
Script 1.2.0 Az.DataProtection Core,Desk {Backup-AzDataProtectionBackupInstanceAd…
Script 1.0.1 Az.DataShare Core,Desk {New-AzDataShareAccount, Get-AzDataShare…
참고
- 도커(Docker)나 쿠버네티스(Kubernetes) 작업을 할 때, Azure 포털이 아닌 Azure CLI나 Azure PowerShell을 이용하여 작업한다.
728x90
728x90
'DevOps > Azure' 카테고리의 다른 글
[Azure] 비주얼 스튜디오 코드(VS Code)와 애저(Azure) 연동하기 (0) | 2023.05.19 |
---|---|
[Azure] 애저(Azure) 테넌트(Tenant) ID 찾는 방법 (0) | 2023.05.18 |
[Azure] 스토리지 계정(Storage Account) Blob Service/File Service/Queue Service 연동 및 실습 (0) | 2023.05.15 |
[Azure] Microsoft Azure 공부 내용 정리 📝 (0) | 2023.05.09 |
[Azure] 윈도우(Windows) VM 배포/연결 (0) | 2023.05.09 |
[Azure] GPT(Generative Pre-trained Transformer) (0) | 2023.05.05 |
[Azure] Azure Friday (0) | 2023.05.05 |
[Azure] Microsoft Azure Cognitive Services의 Computer Vision을 이용하여 이미지 분석(Image Analysis) 하기 (1) | 2023.04.13 |