Terraform planı kullanarak Bir Google Cloud Platform Windows örneği dağıtma ve Azure Arc'a bağlama

Bu makalede, sağlanan Terraform planını kullanarak bir Windows Server Google Cloud Platform (GCP) örneği dağıtmak ve bunu Azure Arc özellikli bir sunucu kaynağı olarak bağlamak için yönergeler sağlanır.

Önkoşullar

  1. Azure Arc Jumpstart deposunu kopyalayın.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Azure CLI'yi 2.7 ve üzeri bir sürüme yükleyin veya güncelleştirin. Geçerli yüklü sürümünüzü denetlemek için aşağıdaki komutu kullanın.

    az --version
    
  3. Terraform >'u yükleme = 0,12

  4. Faturalama etkinleştirilmiş Google Cloud Platform hesabı:Ücretsiz deneme hesabı oluşturun. Windows Server sanal makineleri oluşturmak için hesabınızı faturalamayı etkinleştirmek üzere yükseltmeniz gerekir. Menüden Faturalama'ya tıklayın ve ardından sağ alttan Yükselt'e tıklayın.

    First screenshot showing how to enable billing on a GCP account.

    Second screenshot showing how to enable billing on a GCP account.

    Third screenshot showing how to enable billing on a GCP account.

    Yasal Uyarı: Beklenmeyen ücretleri önlemek için bu makalenin sonundaki "dağıtımı silme" bölümünü izleyin.

  5. Azure hizmet sorumlusu oluşturma.

    GCP sanal makinesini Azure Arc'a bağlamak için Katkıda Bulunan rolüyle atanmış bir Azure hizmet sorumlusu gereklidir. Oluşturmak için Azure hesabınızda oturum açın ve aşağıdaki komutu çalıştırın. Bu komutu Azure Cloud Shell'de de çalıştırabilirsiniz.

    az login
    az account set -s <Your Subscription ID>
    az ad sp create-for-rbac -n "<Unique SP Name>" --role contributor --scopes "/subscriptions/<Your Subscription ID>"
    

    Örneğin:

    az ad sp create-for-rbac -n "http://AzureArcGCP" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
    

    Çıkış şu şekilde görünmelidir:

    {
      "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "http://AzureArcGCP",
      "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
    

    Dekont

    Hizmet sorumlusunu belirli bir Azure aboneliği ve kaynak grubuyla kapsamanızı kesinlikle öneririz.

Yeni gcp projesi oluşturma

  1. Google API konsoluna gidin ve Google hesabınızla oturum açın. Oturum açtıktan sonra adlı Azure Arc demoyeni bir proje oluşturun. Oluşturduktan sonra, genellikle proje adından farklı olduğundan proje kimliğini kopyaladığınızdan emin olun.

    First screenshot of the New Project page in the GCP console.

    Second screenshot of the New Project page in the GCP console.

  2. Yeni proje oluşturulduktan ve sayfanın en üstündeki açılan listeden seçildikten sonra, proje için işlem altyapısı API erişimini etkinleştirmeniz gerekir. + API'leri ve Hizmetleri Etkinleştir'e tıklayın ve işlem altyapısını arayın. Ardından, API erişimini etkinleştirmek için Etkinleştir'i seçin.

    First screenshot of Compute Engine API in the GCP console.

    Second screenshot of Compute Engine API in the GCP console.

  3. Ardından Terraform'un GCP projenizde kaynak oluşturmak ve yönetmek için kullanacağı bir hizmet hesabı anahtarı ayarlayın. Hizmet hesabı anahtarı oluşturma sayfasına gidin. Açılan listeden Yeni Hizmet Hesabı'nı seçin, bir ad verin, proje sahibini rol olarak, JSON'u anahtar türü olarak seçin ve Oluştur'u seçin. Bu, Terraform'un kaynakları yönetmesi için gereken tüm kimlik bilgilerini içeren bir JSON dosyasını indirir. İndirilen JSON dosyasını dizine azure_arc_servers_jumpstart/gcp/windows/terraform kopyalayın.

    A screenshot of how to create a service account in the GCP console.

Dağıtım

Terraform planını yürütmeden önce, plan tarafından kullanılacak ortam değişkenlerini ayarlayıp dışarı aktarmanız gerekir. Bu değişkenler yeni oluşturduğunuz Azure hizmet sorumlusuna, Azure aboneliğinize ve kiracınıza ve GCP proje adına dayanır.

  1. komutunu kullanarak az account list Azure abonelik kimliğinizi ve kiracı kimliğinizi alın.

  2. Terraform planı hem Microsoft Azure hem de Google Cloud Platform'da kaynaklar oluşturur. Ardından Azure Arc aracısını ve tüm gerekli yapıtları yüklemek için GCP sanal makinesinde bir betik yürütür. Bu betik, GCP ve Azure ortamlarınız hakkında belirli bilgiler gerektirir. Değişkenlerin her birini uygun değerlerle düzenleyin scripts/vars.sh ve güncelleştirin.

    • TF_VAR_subscription_id = Azure abonelik kimliğiniz
    • TF_VAR_client_id = Azure hizmet sorumlusu uygulama kimliğiniz
    • TF_VAR_client_secret = Azure hizmet sorumlusu parolanız
    • TF_VAR_tenant_id = Azure kiracı kimliğiniz
    • TF_VAR_gcp_project_id = GCP proje kimliği
    • TF_VAR_gcp_credentials_filename = GCP kimlik bilgileri JSON dosya adı
  3. CLI'dan kopyalanan deponun dizinine gidin azure_arc_servers_jumpstart/gcp/windows/terraform .

  4. Aşağıda gösterildiği gibi kaynak komutuyla çalıştırarak scripts/vars.sh düzenlediğiniz ortam değişkenlerini dışarı aktarın. Terraform, planın düzgün yürütülmesi için bunların ayarlanmasını gerektirir.

    source ./scripts/vars.sh
    
  5. terraform init Terraform AzureRM sağlayıcısını indirecek komutu çalıştırın.

    A screenshot of the terraform init command.

  6. Ardından komutunu çalıştırın terraform apply --auto-approve ve planın tamamlanmasını bekleyin. Terraform betiğini tamamladığınızda bir GCP Windows Server 2019 VM'sini dağıtmış ve Azure Arc aracısını VM'ye indirmek ve VM'yi yeni bir Azure kaynak grubu içinde yeni bir Azure Arc özellikli sunucu olarak bağlamak için bir betik başlatmış olacaksınız. Temsilcinin sağlamayı tamamlaması birkaç dakika sürer, bu nedenle bir fincan kahve alın.

    A screenshot of the terraform apply command.

  7. Birkaç dakika sonra Azure portalını açıp kaynak grubuna arc-gcp-demo gidebilirsiniz. GCP'de oluşturulan Windows Server sanal makinesi kaynak olarak görünür.

    A screenshot of an Azure Arc-enabled server in the Azure portal.

Yarı otomatik dağıtım (isteğe bağlı)

Terraform planı, Azure Arc aracısını otomatik olarak yükler ve VM ilk kez önyüklendiğinde bir PowerShell betiği yürüterek yönetilen kaynak olarak VM'yi Azure'a bağlar.

A screenshot of the azcmagent connect command.

Gerçek kayıt işleminin tanıtımını yapmak/denetlemek istiyorsanız aşağıdakileri yapın:

  1. Komutu çalıştırmadan terraform apply önce satırı açıp main.tf açıklama satırına windows-startup-script-ps1 = local-file.install_arc_agent-ps1.content açıklama ekleyin ve dosyayı kaydedin.

    A screenshot showing main.tf being commented out to disable automatic onboarding of an Azure Arc agent.

  2. Yukarıda açıklandığı gibi çalıştırın terraform apply --auto-approve .

  3. GCP konsolunu açın, işlem örneği sayfasına gidin ve ardından oluşturulan VM'yi seçin.

    A screenshot of a server in the GCP console.

    A screenshot showing how to reset a password for a Windows Server in the GCP console.

  4. Parola Ayarla'yı seçip bir kullanıcı adı belirterek VM için bir kullanıcı ve parola oluşturun.

    A screenshot showing how to set a username and password for a Windows Server in the GCP console.

  5. GCP konsolundaki VM sayfasından RDP düğmesini seçip yeni oluşturduğunuz kullanıcı adı ve parolayla oturum açarak VM'ye RDP ekleyin.

    A screenshot showing how to RDP into a GCP instance.

  6. Oturum açtıktan sonra PowerShell ISE'yi Yönetici istrator olarak açın. x86 sürümünü değil, PowerShell ISE'nin x64 sürümünü çalıştırdığınızdan emin olun. Açıldıktan sonra, boş .ps1 bir dosya oluşturmak için Dosya > Yeni'yi seçin. Ardından içeriğinin ./scripts/install_arc_agent.ps1tamamını yapıştırın. Betiği yürütmek için yürüt düğmesine tıklayın. Tamamlandığında, makinenin başarıyla eklenme işlemini gösteren çıktıyı görmeniz gerekir.

    Screenshot showing the Windows PowerShell integrated scripting environment with an Azure Arc agent connection script.

Dağıtımı silme

Bu tanıtım kapsamında oluşturduğunuz tüm kaynakları silmek için aşağıda gösterildiği gibi komutunu kullanın terraform destroy --auto-approve .

A screenshot of the terraform destroy command.

Alternatif olarak, GCP VM'sini doğrudan GCP konsolundan silebilirsiniz.

A screenshot showing how to delete a virtual machine from the GCP console.