가상 머신을 설정해 본 적이 있다면 가상 머신이 어떻게 작동하는지 잘 알고 있을 것입니다. 여기저기 클릭하고, 원하는 방식으로 몇 번 더 클릭하면 결국 시스템이 설정됩니다. 하지만 여전히 소프트웨어를 설치하고 원하는 대로 가상 머신을 구성해야 합니다.

이제 수백 개의 VM을 설정하고 싶다고 가정해 보겠습니다. 일일이 클릭해서 설치하는 방식은 그다지 효과적이지 않습니다. 대신 가능한 한 프로세스를 자동화해야 하며, 이것이 바로 클라우드 초기화가 필요한 이유입니다.

Microsoft Azure에서 cloud-init을 사용하여 OS 설치 및 가상 머신 구성을 자동화하는 방법을 살펴보세요.

cloud-init을 사용하여 VM 생성을 자동화하는 이유는 무엇인가요?

cloud-init은 우분투의 개발사인 Canonical에서 개발한 강력한 배포 자동화 도구입니다.

cloud-init을 사용하면 Linux 운영 체제를 설치 및 배포하고 VM의 다른 측면을 구성할 수 있습니다. 예를 들어 클라우드 초기화를 사용하여 사용자 계정을 설정하고, 소프트웨어를 설치 및 구성하고, SSH 키를 추가하는 등의 작업을 수행할 수 있습니다.

현재 Azure, Linode, AWS(Amazon Web Services)와 같은 대부분의 클라우드 서비스 제공업체가 cloud-init을 지원합니다.

클라우드 초기화는 우분투에서 시작되었지만, 현재는 오픈수세, 데비안, 레드햇 엔터프라이즈 리눅스(RHEL) 등과 같은 모든 주요 리눅스 배포판을 지원합니다.

클라우드에 소프트웨어를 배포하는 것 외에도 클라우드 초기화를 사용하여 온프레미스 서버 또는 VirtualBox, KVM, VMware와 같은 가상 환경에 소프트웨어를 구성하고 설치할 수도 있습니다.

Microsoft Azure 클라우드 플랫폼을 사용하여 cloud-init을 사용하여 우분투 서버의 배포를 자동화합니다.

1단계: 클라우드 초기화 스크립트 만들기

클라우드 초기화 스크립트는 시스템의 다양한 측면을 구성하기 위해 모듈을 사용합니다. 예를 들어, 사용자 모듈을 사용하여 사용자 정보 및 계정을 구성하고 와이어가드 모듈을 사용하여 와이어가드 등을 구성할 수 있습니다. 그 외에도 바로 사용할 수 있는 수많은 모듈이 있습니다.

새 가상 머신을 설정할 때 구성하는 대부분의 작업을 자동화하는 클라우드 초기화 스크립트를 만들어 보겠습니다.

“mwiza”라는 사용자를 만들고 비밀번호를 할당하겠습니다. 간단하게 하기 위해 일반 텍스트 비밀번호를 사용하겠지만 원하는 경우 암호화할 수 있습니다. 또한 인증된 키에 사용자의 SSH 키를 추가합니다. 이렇게 하면 나중에 보안을 강화하기 위해 SSH 비밀번호 로그인을 비활성화할 수 있습니다.

이 글도 확인해 보세요:  크롬북에서 이모티콘을 사용하는 방법

새 사용자를 만드는 것 외에도 스크립트는 다음을 수행해야 합니다:

⭐ 파일 작성: 간단한 파일을 만들고 write_files 모듈을 사용하여 이 파일에 콘텐츠를 씁니다. 파일은 홈 디렉터리에 배치됩니다. 나중에 더 복잡한 파일을 만들 때도 동일한 개념을 사용할 수 있습니다.

⭐ 명령 실행: UFW 방화벽 구성을 위한 간단한 명령을 실행할 것이지만, 다른 Linux 명령도 가능합니다. Bash 스크립트를 실행하여 Linux 명령을 실행하는 것과 유사하게, 원하는 명령을 실행하기 위해 runcmd 모듈을 활용하세요.

⭐ 로캘 구성하기: 키보드 레이아웃, 기본 언어, 표준 시간대 등 선호하는 로캘을 설정합니다.

⭐ 패키지 설치: 선호하는 패키지 관리자를 사용하여 시스템에 패키지를 설치합니다. 예를 들어, 데비안 기반 시스템에서는 APT를 사용할 수 있습니다.

클라우드 초기화에서 사용할 수 있는 모듈 중 일부에 불과하며, 모든 종류의 작업을 자동화하는 다른 여러 모듈이 있습니다.

다음은 새 사용자 계정을 구성하는 전체 클라우드 초기화 스크립트입니다. SSH 키를 올바른 키로 교체하는 것을 잊지 마세요. 또한 사용자 이름과 기타 세부 정보도 자유롭게 변경하세요.

 vim: syntax=yaml

# Add system users here
users:
  - name: mwiza
  groups: users, sudo
  shell: /bin/bash
  gecos: mwiza
  plain_text_passwd: Live-laugh-love12345G123
  lock_passwd: false
  ssh_authorized_keys:
    - ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB:PWELJWEEWeKBrkXWbLJBs;ldfkagfafk===C6li71Ra6i+NKkajdfi [email protected]

# Install, update, and upgrade packages
package_upgrade: true
package_update: true
package_reboot_if_require: true

packages:
  - traceroute
  - net-tools
  - fail2ban

# Set locales
locale: en_UK
timezone: Etc/UTC
keyboard:
  layout: nb

write_files:
- path: /etc/salt/minion.d/master_ip_port.conf
content: |
master: salt
master_port: 4506
publish_port: 4505
- path: /home/mwiza/cloud-init.txt
content: |
created by cloud-init in azure

# Running Bash commands to configure software and services
runcmd:
  - ufw enable
  - ufw allow ssh
  - ufw allow 80
  - systemctl enable ufw

# Power off the VM after initialization is finalized
shutdown: poweroff

cloud-init 스크립트는 YAML을 사용하므로 들여쓰기가 올바른지 확인하세요. 그렇지 않으면 예상대로 작동하지 않습니다.

이 글도 확인해 보세요:  Iotas: 넥스트클라우드 노트와 동기화되는 마크다운 기반 노트 필기 Linux 앱

2단계: 가상 머신 리소스 만들기

다음 단계는 가상 머신에 필요한 리소스를 Azure에서 생성하는 것입니다. 이미 계정이 있는 경우 Azure에 로그인하거나, 그렇지 않은 경우 azure.microsoft.com 으로 이동하여 무료 평가판 계정을 만듭니다.

Azure 포털 홈 페이지에서 리소스 만들기 버튼을 클릭합니다. 가장 인기 있는 Azure 서비스 목록에서 가상 머신을 선택합니다.

다음 페이지에서 하드 디스크, 네트워킹 등과 같은 VM 리소스를 만들기 위한 정보를 제공합니다.

VM에 의미 있는 이름을 지정하고 배포 지역을 선택합니다. 또한 VM에 대한 리소스 그룹을 생성하거나 기존 그룹을 사용합니다.

인증 유형에서 비밀번호 옵션을 선택하고 사용자 이름과 강력한 비밀번호를 입력합니다.

이 페이지의 모든 필드를 입력한 후 세부 정보는 다음과 유사해야 합니다.

3단계: 클라우드 초기화 스크립트 추가

다음으로 고급 탭을 클릭하여 클라우드 초기화 스크립트를 추가합니다. 첫 번째 단계의 cloud-init 스크립트를 복사하여 사용자 지정 데이터 필드에 붙여넣습니다.

마지막으로 검토 + 생성 버튼을 클릭합니다. 모든 것이 정상이면 테스트가 통과됩니다. 그렇지 않은 경우 Azure VM 생성자가 수정해야 할 사항을 안내합니다.

4단계: 가상 머신에 로그인

VM 개요 정보를 사용하여 가상 머신의 공용 IP 주소를 가져온 후 SSH를 통해 로그인합니다. 올바른 SSH 키를 사용한 경우 시스템에서 사용자 암호를 입력하라는 메시지가 표시되지 않습니다.

로그인하면 스크립트를 통해 생성하려는 파일이 있는지 확인할 수 있습니다. 또한 sudo ufw status 명령을 사용하여 APT와 함께 설치된 패키지를 찾고 방화벽이 올바르게 구성되었는지 확인합니다.

cloud-init은 또한 /var/log/cloud-init.log 파일에 중요한 정보를 기록합니다. 이 파일에는 cloud-init 초기화 중에 발생한 모든 이벤트에 대한 자세한 메시지가 포함되어 있습니다. 다음과 같이 cat 명령을 사용하여 이 파일을 확인할 수 있습니다:

 cat /var/log/cloud-init.log 

cloud-init으로 가상 머신 생성 자동화

cloud-init은 Linux 설치 및 설정을 자동화하는 데 도움이 되는 강력한 도구입니다. 클라우드와 온프레미스 서버에서 사용할 수 있습니다. 가상 머신 배포를 자동화하고 싶거나 대규모로 Linux 서버를 배포해야 하는 경우 cloud-init은 훌륭한 선택입니다.

이 글도 확인해 보세요:  개발자를 위한 최고의 Linux 배포판 10가지

이와 관련하여 보안 침해를 방지하기 위해 클라우드 기반 가상 머신에 대한 SSH 로그인을 항상 보호하세요.

By 최은지

윈도우(Windows)와 웹 서비스에 대한 전문 지식을 갖춘 노련한 UX 디자이너인 최은지님은 효율적이고 매력적인 디지털 경험을 개발하는 데 탁월한 능력을 발휘합니다. 사용자의 입장에서 생각하며 누구나 쉽게 접근하고 즐길 수 있는 콘텐츠를 개발하는 데 주력하고 있습니다. 사용자 경험을 향상시키기 위해 연구를 거듭하는 은지님은 All Things N 팀의 핵심 구성원으로 활약하고 있습니다.