클라우드 플랫폼 openstack 에서 클라우드 init 의 조립 및 사용을 어떻게 해결합니까?
클라우드 환경에서 가상 시스템을 초기화하기 위해 특별히 개발된 도구입니다. 다양한 데이터 소스에서 관련 데이터를 읽고 그에 따라 가상 시스템을 구성합니다. 일반적인 데이터 소스에는 클라우드 플랫폼의 메타데이터 서비스, ConfigDrive 등이 포함됩니다. 일반적인 구성에는 가상 시스템의 호스트 이름과 hosts 파일 설정, 사용자 이름과 암호 설정, apt -get 의 로컬 캐시 업데이트, 파일 시스템 크기 조정 등이 포함됩니다 (파티션 크기는 조정하지 않도록 주의).
이 기사는 오픈 스탁에서 테스트되었습니다.
(1) 설치
Centos 6.4 및 Ubuntu server 12.04 의 공식 소스 코드에는 이미 cloudinit 이 포함되어 있으며 yum 또는 apt -get 을 통해 직접 설치할 수 있습니다.
소스 주소: /cloud-init
(2) 구성
구성 파일 /etc/cloud/cloud.cfg
사용자: 루트
Disable_root: 0
Manage_etc_hosts: True
호스트 이름 보존: False
클라우드 초기화 모듈:
-bootcmd
-resizefs
-호스트 이름 설정
-호스트 이름 업데이트
-etc 호스트 업데이트
-인증서
-rsyslog
쉿
클라우드 구성 모듈:
-타요
-ssh-import-id
-로케일
-설정-비밀번호
-grub-dpkg
-경관
-시간대
-꼭두각시
요리사
-염종
-mcollective
-disable-ec2- 메타데이터
-명령을 실행합니다
-바이부
클라우드 _ 최종 _ 모듈:
-rightscale_userdata
-모든 스크립트
-시작할 때마다
—각 인스턴스에 대한 스크립트입니다
-스크립트-사용자
-콘솔 키
-집에 전화해
-최종 소식
구성 파일은 크게 두 부분으로 나뉩니다. 첫 번째 부분은 변수/매개변수 정의이고 두 번째 부분은 실행할 모듈 목록 (cloud_init_modules, cloud_config_modules, cloud _ finance 포함) 입니다
각 모듈이 실행되면 이전에 정의된 변수/매개변수 값에 따라 가상 시스템의 상태를 구성합니다.
다음은 update_etc_hosts 모듈 (소스 파일:/usr/lib/python2.7/dist-packages/cloudinit/cloudcoud) 의 간단한 예입니다
이름에서 알 수 있듯이 이 모듈은 hostname, FQDN, manage_etc_hosts 등의 변수 값을 사용하는 hosts 파일을 설정하는 데 사용됩니다. 모듈은 먼저 cloudinit 구성 파일에서 이러한 변수의 값을 읽으려고 시도하고, 정의되지 않은 경우 다른 데이터 소스에서 변수 값을 가져오려고 시도합니다. 예를 들어 openstac 의 경우 메타데이터 서비스에서 가상 시스템의 호스트 이름 (http://169.254.169.254/latest/meta) 을 얻을 수 있습니다
(3) 운영 절차
클라우드 초기화 (Cloudinit) 는 가상 시스템 부팅 중 4 단계로 실행됩니다 (cloud-init-local, cloud-init, cloud-config, cloud-final). 예를 들어 centos 의 경우:
Cloud-init-local 단계는 주로 일부 로컬 초기화 스크립트 (캐시 스크립트) 를 실행하는 것입니다.
Cloud-init 단계 실행 프로필의 cloud_init_modules 아래에 이름이 지정된 모든 모듈. 모듈 목록이 비어 있으면 아무 것도 실행되지 않습니다. 다른 두 단계도 비슷하니 소개하지 않겠습니다.
단계적 실행의 필요성은 일부 모듈의 실행에는 시스템의 현재 상태 (예: 네트워크 준비, 파일 시스템 마운트 종료) 가 필요하기 때문에 cloudinit 은 4 단계를 추상화하여 자체 초기화 모듈을 작성할 때 상황에 따라 여러 단계로 나눌 수 있습니다.
또한 이 모듈에는 매번, 모든 인스턴스, 항상 등 많은 실행 모드가 있습니다. 각 모드의 모듈에 대해 실행이 완료되면 SEM 이라는 디렉토리에 신호 파일이 생성되어 다음에 시작할 때 모듈이 반복적으로 실행되지 않도록 합니다.