4.7. 기본 GCP 인스턴스 생성 및 구성

GCP 운영 및 보안 요구 사항을 준수하는 GCP 인스턴스를 생성하고 구성하려면 다음 단계를 완료합니다.

절차

  1. 버킷의 압축된 파일에서 이미지를 만듭니다.

    $ gcloud compute images create BaseImageName --source-uri gs://BucketName/BaseImageName.tar.gz

    예제:

    [admin@localhost ~] $ gcloud compute images create rhel-76-server --source-uri gs://user-rhelha/rhel-server-76.tar.gz
    Created [https://www.googleapis.com/compute/v1/projects/MyProject/global/images/rhel-server-76].
    NAME            PROJECT                 FAMILY  DEPRECATED  STATUS
    rhel-76-server  rhel-ha-testing-on-gcp                      READY
  2. 이미지에서 템플릿 인스턴스를 생성합니다. 기본 RHEL 인스턴스에 필요한 최소 크기는 n1-standard-2입니다. 추가 구성 옵션은 gcloud compute 인스턴스 생성을 참조하십시오.

    $ gcloud compute instances create BaseInstanceName --can-ip-forward --machine-type n1-standard-2 --image BaseImageName --service-account ServiceAccountEmail

    예제:

    [admin@localhost ~] $ gcloud compute instances create rhel-76-server-base-instance --can-ip-forward --machine-type n1-standard-2 --image rhel-76-server --service-account account@project-name-on-gcp.iam.gserviceaccount.com
    Created [https://www.googleapis.com/compute/v1/projects/rhel-ha-testing-on-gcp/zones/us-east1-b/instances/rhel-76-server-base-instance].
    NAME   ZONE   MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
    rhel-76-server-base-instance  us-east1-bn1-standard-2          10.10.10.3   192.227.54.211  RUNNING
  3. SSH 터미널 세션을 사용하여 인스턴스에 연결합니다.

    $ ssh root@PublicIPaddress
  4. RHEL 소프트웨어를 업데이트합니다.

    1. Red Hat Subscription Manager (RHSM)에 등록합니다.
    2. 서브스크립션 풀 ID를 활성화하거나 --auto-attach 명령을 사용합니다.
    3. 모든 리포지토리를 비활성화합니다.

      # subscription-manager repos --disable=*
    4. 다음 리포지토리를 활성화합니다.

      # subscription-manager repos --enable=rhel-9-server-rpms
    5. dnf update 명령을 실행합니다.

      # dnf update -y
  5. 실행 중인 인스턴스에 GCP Linux 게스트 환경을 설치합니다(장기 설치).

    자세한 내용은 guest environment in-place 를 참조하십시오.

  6. CentOS/RHEL 옵션을 선택합니다.
  7. 스크립트를 복사하여 명령 프롬프트에 붙여넣어 스크립트를 즉시 실행합니다.
  8. 인스턴스를 다음과 같이 변경합니다. 이러한 변경 사항은 사용자 정의 이미지에 대한 GCP 권장 사항을 기반으로 합니다. 자세한 내용은 gcloudcompute 이미지 목록을 참조하십시오.

    1. /etc/chrony.conf 파일을 편집하고 모든 NTP 서버를 제거합니다.
    2. 다음 NTP 서버를 추가합니다.

      metadata.google.internal iburst Google NTP server
    3. 영구 네트워크 장치 규칙을 제거합니다.

      # rm -f /etc/udev/rules.d/70-persistent-net.rules
      
      # rm -f /etc/udev/rules.d/75-persistent-net-generator.rules
    4. 자동으로 시작되도록 network 서비스를 설정합니다.

      # chkconfig network on
    5. 자동으로 시작되도록 sshd 서비스를 설정합니다.

      # systemctl enable sshd
      # systemctl is-enabled sshd
    6. 시간대를 UTC로 설정합니다.

      # ln -sf /usr/share/zoneinfo/UTC /etc/localtime
    7. (선택 사항) /etc/ssh/ssh_config 파일을 편집하고 다음 행을 파일 끝에 추가합니다. 이렇게 하면 비활성 기간 동안 SSH 세션이 활성 상태로 유지됩니다.

      # Server times out connections after several minutes of inactivity.
      # Keep alive ssh connections by sending a packet every 7 minutes.
      ServerAliveInterval 420
    8. /etc/ssh/sshd_config 파일을 편집하고 필요한 경우 다음과 같이 변경합니다. ClientAliveInterval 420 설정은 선택 사항이며, 이렇게 하면 비활성 기간 동안 SSH 세션을 활성 상태로 유지합니다.

      PermitRootLogin no
      PasswordAuthentication no
      AllowTcpForwarding yes
      X11Forwarding no
      PermitTunnel no
      # Compute times out connections after 10 minutes of inactivity.
      # Keep ssh connections alive by sending a packet every 7 minutes.
      ClientAliveInterval 420
  9. 암호 액세스를 비활성화합니다.

    ssh_pwauth from 1 to 0.
    ssh_pwauth: 0
    중요

    이전에는 SSH 세션 액세스를 허용하여 인스턴스를 구성하기 위해 암호 액세스를 활성화했습니다. 암호 액세스를 비활성화해야 합니다. 모든 SSH 세션 액세스는 암호가 없어야 합니다.

  10. 서브스크립션 관리자에서 인스턴스를 등록 취소합니다.

    # subscription-manager unregister
  11. 쉘 기록을 정리합니다. 다음 절차를 위해 인스턴스를 계속 실행하십시오.

    # export HISTSIZE=0