7.8. Cloud-Init을 사용하여 가상 머신 설정 자동화

Cloud-Init은 호스트 이름, 네트워크 인터페이스, 그리고 인증키를 설정하는 것과 같은 가상 머신 초기 설정을 자동화하는 도구입니다. 이 도구를 사용하면 템플릿을 바탕으로 배포된 가상 머신에 대한 프로비저닝을 할 때 네트워크 충돌을 방지할 수 있습니다.
이 도구를 사용하려면 우선 cloud-init 패키지가 가상 머신에 설치되어 있어야 합니다. 설치 후 부팅 시 Cloud-Init 서비스가 시작되어서 설정 대상에 대한 지시사항을 찾게 됩니다. 한 번 실행 창에 있는 옵션을 사용하여 이러한 지시사항을 한 번만 주도록 설정할 수도 있고, 혹은 새 가상 머신 창, 가상 머신 편집 창 그리고 템플릿 수정 창에 있는 옵션을 사용하여 가상 머신이 시작할 때마다 이러한 지시사항을 주도록 설정할 수도 있습니다.

7.8.1. Cloud-Init 사용 예

Cloud-Init을 사용하여 다양한 상황에서 가상 머신 설정을 자동화할 수 있습니다. 몇 가지 일반적인 예는 다음과 같습니다:
템플릿을 기반으로 생성된 가상 머신
한 번 실행 창의 초기 실행 부분에 있는 Cloud-Init 옵션을 사용하여 템플릿을 바탕으로 생성된 가상 머신을 초기화할 수 있습니다. 이를 통해 가상 머신을 처음 시작했을 때 그 가상 머신을 사용자 정의할 수 있습니다.
가상 머신 템플릿
새 템플릿템플릿 수정 창의 Cloud-Init/Sysprep 사용 옵션을 사용해서 그 템플릿을 바탕으로 생성된 가상 머신을 사용자 정의하기 위한 옵션을 지정할 수 있습니다.
가상 머신 풀
새 풀 창의 초기 실행 부분에 있는 Cloud-Init/Sysprep 사용 옵션을 사용해서 그 가상 머신 풀에서 가져온 가상 머신을 사용자 정의하기 위한 옵션을 지정할 수 있습니다. 이를 통해 그 가상 머신 풀에서 가상 머신을 가져올 때마다 적용되는 일반적인 설정의 모음을 지정할 수 있습니다. 가상 머신의 기반이 되는 템플릿에 지정된 옵션을 상속하거나 덮어쓰기할 수도 있고, 가상 머신 풀 자체에 대한 옵션을 지정할 수도 있습니다.

7.8.2. Cloud-Init 설치

다음 부분에서는 가상 머신에 Cloud-Init 설치방법이 설명되어 있습니다. Cloud-Init 설치 후 그 가상 머신을 바탕으로 템플릿을 생성할 수 있습니다. 이 템플릿을 바탕으로 생성된 가상 머신은 부팅 시 호스트 이름, 시간대, root 암호, 인증키, 네트워크 인터페이스, DNS 서비스 등을 설정하는 것과 같은 Cloud-Init 기능을 활용할 수 있습니다.

절차 7.12. Cloud-Init 설치

  1. 가상 머신에 로그인합니다.
  2. 필요한 리포지터리를 활성화합니다:
    • Red Hat Enterprise Linux 6:
      # subscription-manager repos --enable=rhel-6-server-rpms
      # subscription-manager repos --enable=rhel-6-server-rh-common-rpms
    • Red Hat Enterprise Linux 7:
      # subscription-manager repos --enable=rhel-7-server-rpms
      # subscription-manager repos --enable=rhel-7-server-rh-common-rpms
  3. cloud-init 패키지 및 관련 패키지를 설치합니다:
    # yum install cloud-init

7.8.3. Cloud-Init을 사용하여 템플릿 준비

cloud-init 패키지가 Linux 가상 머신에 설치되어 있는 한 그 가상 머신을 사용해서 cloud-init 사용이 가능한 템플릿을 만들 수 있습니다. 템플릿에 일반 설정의 모음을 지정하기 위해 다음의 절차를 따르거나, 또는 다른 방법으로 Cloud-Init 설정 단계를 건너뛰고 이 템플릿을 바탕으로 가상 머신을 생성할 때 설정을 합니다.

참고

다음의 절차에서 템플릿 준비 시 Cloud-Init를 사용하는 방법이 설명되어 있는데 이와 동일한 설정은 새 가상 머신, 템플릿 편집, 그리고 한 번 실행 창에서도 볼 수 있습니다.

절차 7.13. Cloud-Init을 사용하여 템플릿 준비

  1. 가상 머신 탭을 클릭하고 가상 머신을 선택합니다.
  2. 편집을 클릭합니다.
  3. 초기 실행 탭을 클릭하고 Cloud-Init/Sysprep 사용 체크 상자를 선택합니다.
  4. 가상 머신의 호스트 이름 텍스트 필드에 호스트 이름을 입력합니다.
  5. 시간대 설정 체크 상자를 선택하고 시간대 드롭 다운 목록에서 시간대를 선택합니다.
  6. 인증 항목을 확장하고 이미 설정된 암호를 사용 체크 상자를 선택해서 기존 인증정보를 사용하거나, 또는 이 체크 상자를 선택 해제하고 암호암호 확인 텍스트 필드에 root 암호를 입력해서 새로운 root 암호를 지정합니다.
  7. 해당사항이 있는 경우, 가상 머신의 인증된 호스트 파일에 추가할 SSH 키를 SSH 인증키 텍스트 상자에 입력합니다.
  8. SSH 키 재생성 체크 상자를 선택하여 가상 머신의 SSH 키를 다시 생성합니다.
  9. 네트워크 항목을 확장하고 모든 DNS 서버를 DNS 서버 텍스트 필드에 입력합니다.
  10. 모든 DNS 검색 도메인을 DNS 검색 도메인 텍스트 필드에 입력합니다.
  11. 네트워크 체크 상자를 선택하고 +- 버튼을 사용하여 가상 머신에 네트워크 인터페이스를 추가/제거합니다.
  12. 사용자 지정 스크립트 항목을 확장하고 모든 사용자 정의 스크립트를 사용자 지정 스크립트 텍스트 필드에 입력합니다.
  13. OK를 클릭합니다.
  14. 템플릿 생성을 클릭하고 필요한 항목을 입력합니다.
  15. OK를 클릭합니다.
이제 이 템플릿을 사용하여 새로운 가상 머신을 구축할 수 있습니다.

7.8.4. Cloud-Init을 사용하여 가상 머신 초기화하기

Cloud-Init을 사용하여 Linux 가상 머신의 초기 설정을 자동화할 수 있습니다. Cloud-Init 필드를 사용해서 가상 머신의 호스트 이름, 시간대, root 암호, 인증키, 네트워크 인터페이스, 그리고 DNS 서비스를 설정할 수 있습니다. 사용자 정의 스크립트인 YAML 포맷의 스크립트가 부팅 시 실행되도록 지정할 수도 있습니다. 사용자 정의 스크립트를 사용하면 Cloud-Init 지원은 되지만 Cloud-Init 필드에서는 사용 가능하지 않은 추가적인 Cloud-Init 설정을 할 수 있습니다. 사용자 정의 스크립트의 예는 Cloud config examples에서 참조하시기 바랍니다.

절차 7.14. Cloud-Init을 사용하여 가상 머신 초기화하기

다음 절차에서는 일련의 Cloud-Init 설정을 사용하여 가상 머신을 시작합니다. 가상 머신이 바탕으로 하는 템플릿에 관련 설정이 포함되어 있는 경우, 설정을 확인하고 필요 시 설정을 변경한 후 OK를 클릭하여 가상 머신을 시작합니다.
  1. 가상 머신 탭을 클릭하고 가상 머신을 선택합니다.
  2. 한번 실행을 클릭합니다.
  3. 초기 실행 항목을 확장하고 Cloud-Init 체크 상자를 선택합니다.
  4. 가상 머신의 호스트 이름 텍스트 필드에 호스트 이름을 입력합니다.
  5. 시간대 설정 체크 상자를 선택하고 시간대 드롭 다운 메뉴에서 시간대를 선택합니다.
  6. 이미 설정된 암호를 사용 체크 상자를 선택해서 기존 인증정보를 사용하거나, 또는 이 체크 상자를 선택 해제하고 암호암호 확인 텍스트 필드에 root 암호를 입력해서 새로운 root 암호를 지정합니다.
  7. 해당사항이 있는 경우, 가상 머신의 인증된 호스트 파일에 추가할 SSH 키를 SSH 인증키 텍스트 상자에 입력합니다.
  8. SSH 키 재생성 체크 상자를 선택하여 가상 머신의 SSH 키를 다시 생성합니다.
  9. 모든 DNS 서버를 DNS 서버 텍스트 필드에 입력합니다.
  10. 모든 DNS 검색 도메인을 DNS 검색 도메인 텍스트 필드에 입력합니다.
  11. 네트워크 체크 상자를 선택하고 +- 버튼을 사용하여 가상 머신에 네트워크 인터페이스를 추가/제거합니다.
  12. 사용자 지정 스크립트 텍스트 필드에 사용자 정의 스크립트를 입력합니다. 스크립트에 지정한 값이 올바른지 확인합니다. 그렇지 않은 경우 이 작업이 실패하게 됩니다.
  13. OK를 클릭합니다.

참고

가상 머신에 Cloud-Init이 설치되어 있는지 확인하려면 가상 머신을 선택하고 애플리케이션 하위 탭을 클릭합니다. 게스트 에이전트가 설치된 경우에만 표시됩니다.