11장. 사용자 지정 인스턴스 생성
클라우드 사용자는 인스턴스가 부팅 시 실행되는 쉘 스크립트와 같이 인스턴스를 시작할 때 사용할 추가 데이터를 지정할 수 있습니다. 클라우드 사용자는 다음 방법을 사용하여 인스턴스에 데이터를 전달할 수 있습니다.
- 사용자 데이터
-
를 사용하여 실행할
cloud-init에 대한 인스턴스 시작 명령에 지침을 포함합니다. - 인스턴스 메타데이터
- 인스턴스를 만들거나 업데이트할 때 지정할 수 있는 키-값 쌍 목록입니다.
구성 드라이브 또는 메타데이터 서비스를 사용하여 인스턴스에 전달된 추가 데이터에 액세스할 수 있습니다.
- 설정 드라이브
-
부팅 시 구성 드라이브를 인스턴스에 연결할 수 있습니다. 구성 드라이브는 인스턴스에 읽기 전용 드라이브로 표시됩니다. 인스턴스에서 이 드라이브를 마운트하고 해당 드라이브에서 파일을 읽을 수 있습니다. 구성 드라이브를
cloud-init정보의 소스로 사용할 수 있습니다. 구성 드라이브는 서버 부트스트랩을 위해cloud-init와 결합하고 대규모 파일을 인스턴스에 전달하려는 경우 유용합니다. 예를 들어 구성 드라이브를 자동으로 마운트하고 초기 인스턴스 부팅 중에 설정 스크립트를 실행하도록cloud-init를 구성할 수 있습니다. 구성 드라이브는config-2의 볼륨 레이블을 사용하여 생성되며 부팅 시 인스턴스에 연결됩니다. 구성 드라이브에 전달된 추가 파일의 내용은 구성 드라이브의openstack/{version}/디렉터리에 있는user_data파일에 추가됩니다.cloud-init는 이 파일에서 사용자 데이터를 검색합니다. - 메타데이터 서비스
-
인스턴스와 관련된 데이터를 검색하기 위해 REST API를 제공합니다. 인스턴스는
169.254.169.254또는fe80::a9fe:a9fe에서 이 서비스에 액세스합니다.
cloud-init 는 구성 드라이브와 메타데이터 서비스를 둘 다 사용하여 인스턴스를 사용자 지정하는 데 추가 데이터를 사용할 수 있습니다. cloud-init 패키지는 여러 데이터 입력 형식을 지원합니다. 쉘 스크립트 및 cloud-config 형식은 가장 일반적인 입력 형식입니다.
-
쉘 스크립트: 데이터 선언은
#!또는Content-Type: text/x-shellscript로 시작됩니다. 쉘 스크립트는 부팅 프로세스 마지막에 호출됩니다. -
cloud-config형식: 데이터 선언은#cloud-config또는Content-Type: text/cloud-config로 시작됩니다.cloud-config파일은cloud-init에서 구문 분석하고 실행할 수 있는 유효한 YAML이어야 합니다.
cloud-init 는 인스턴스에 전달되는 데이터에 대해 최대 사용자 데이터 크기가 16384바이트입니다. 크기 제한을 변경할 수 없으므로 크기 제한을 초과해야 하는 경우 gzip 압축을 사용합니다.
벤더별 데이터
RHOSP 관리자는 데이터를 생성할 때 인스턴스에 데이터를 전달할 수도 있습니다. 이 데이터는 클라우드 사용자(예: Active Directory에 인스턴스를 등록하는 암호화 토큰)로 표시되지 않을 수 있습니다.
RHOSP 관리자는 vendordata 기능을 사용하여 데이터를 인스턴스에 전달합니다. Vendordata 구성은 읽기 전용이며 다음 파일 중 하나에 있습니다.
-
/openstack/{version}/vendor_data.json -
/openstack/{version}/vendor_data2.json
메타데이터 서비스 또는 인스턴스의 구성 드라이브에서 이러한 파일을 볼 수 있습니다. 메타데이터 서비스를 사용하여 파일에 액세스하려면 http://169.254.169.254/openstack/{version}/vendor_data.json 또는
http://169.254.169.254/openstack/{version}/vendor_data2.json 에 GET 요청을 만드십시오.
11.1. 사용자 데이터를 사용하여 인스턴스 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
사용자 데이터를 사용하여 인스턴스 시작 명령에 명령을 포함할 수 있습니다. cloud-init 는 이러한 명령을 실행하여 부팅 프로세스의 마지막 단계로 인스턴스를 사용자 지정합니다.
절차
cloud-init에 대한 지침으로 파일을 만듭니다. 예를 들어 인스턴스에서 웹 서버를 설치하고 활성화하는 bash 스크립트를 생성합니다.vim /home/scripts/install_httpd #!/bin/bash yum -y install httpd python-psycopg2 systemctl enable httpd --now
$ vim /home/scripts/install_httpd #!/bin/bash yum -y install httpd python-psycopg2 systemctl enable httpd --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow bash 스크립트를 전달하려면
user-data옵션으로 인스턴스를 시작합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인스턴스 상태가 활성이면 유동 IP 주소를 연결합니다.
openstack floating ip create web-server-network openstack server add floating ip web-server-instance 172.25.250.123
$ openstack floating ip create web-server-network $ openstack server add floating ip web-server-instance 172.25.250.123Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH를 사용하여 인스턴스에 로그인합니다.
ssh -i ~/.ssh/web-server-keypair cloud-user@172.25.250.123
$ ssh -i ~/.ssh/web-server-keypair cloud-user@172.25.250.123Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 지정이 성공적으로 수행되었는지 확인합니다. 예를 들어 웹 서버가 설치되고 활성화되어 있는지 확인하려면 다음 명령을 입력합니다.
curl http://localhost | grep Test <title>Test Page for the Apache HTTP Server on Red Hat Enterprise Linux</title> <h1>Red Hat Enterprise Linux <strong>Test Page</strong></h1>
$ curl http://localhost | grep Test <title>Test Page for the Apache HTTP Server on Red Hat Enterprise Linux</title> <h1>Red Hat Enterprise Linux <strong>Test Page</strong></h1>Copy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-init가 실행되었는지 여부와 같은 관련 메시지의 /var/log/cloud파일을 검토합니다.-init.logsudo less /var/log/cloud-init.log ...output omitted... ...util.py[DEBUG]: Cloud-init v. 0.7.9 finished at Sat, 23 Jun 2018 02:26:02 +0000. Datasource DataSourceOpenStack [net,ver=2]. Up 21.25 seconds
$ sudo less /var/log/cloud-init.log ...output omitted... ...util.py[DEBUG]: Cloud-init v. 0.7.9 finished at Sat, 23 Jun 2018 02:26:02 +0000. Datasource DataSourceOpenStack [net,ver=2]. Up 21.25 secondsCopy to Clipboard Copied! Toggle word wrap Toggle overflow