Yeoman kullanarak Azure'da Terraform temel şablonu oluşturma

Terraform , bulut altyapısının tanımlanmasını, önizlemesini ve dağıtımını sağlar. Terraform kullanarak HCL söz dizimlerini kullanarak yapılandırma dosyaları oluşturursunuz. HCL söz dizimi, Azure gibi bulut sağlayıcısını ve bulut altyapınızı oluşturan öğeleri belirtmenize olanak tanır. Yapılandırma dosyalarınızı oluşturduktan sonra, altyapı değişikliklerinizin dağıtılmadan önce önizlemesini görüntülemenizi sağlayan bir yürütme planı oluşturursunuz. Değişiklikleri doğruladıktan sonra, altyapıyı dağıtmak için yürütme planını uygularsınız.

Bu makalede Terraform ve Yeoman birleşimini kullanmayı öğreneceksiniz. Terraform, Azure'da altyapı oluşturmaya yönelik bir araçtır. Yeoman, Terraform modülleri oluşturmayı kolaylaştırır.

Bu makalede, aşağıdaki görevlerin nasıl yapılacağını öğreneceksiniz:

  • Yeoman modül oluşturucuyu kullanarak temel bir Terraform şablonu oluşturun.
  • Terraform şablonunu iki farklı yöntem kullanarak test edin.
  • Terraform modülünü bir Docker dosyası kullanarak çalıştırın.
  • Terraform modülünü Azure Cloud Shell'de yerel olarak çalıştırın.

1. Ortamınızı yapılandırma

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

2. Yeoman tarafından oluşturulan modül için dizin oluşturma

Yeoman şablonu geçerli dizinde dosyaları oluşturur. Bu nedenle, bir dizin oluşturmanız gerekir.

Bu boş dizinin $GOPATH/src altına yerleştirilmesi gerekir. Bu yol hakkında daha fazla bilgi için GOPATH'i Ayarlama makalesine bakın.

  1. Yeni dizinin oluşturulacağı üst dizine gidin.

  2. Yer tutucuyu değiştirerek aşağıdaki komutu çalıştırın. Bu örnek için bir dizin adı GeneratorDocSample kullanılır.

    mkdir <new-directory-name>
    

    mkdir

  3. Yeni dizine gidin:

    cd <new-directory-name>
    

    Navigate to your new directory

3. Temel modül şablonu oluşturma

  1. Şu komutu çalıştırın:

    yo az-terra-module
    
  2. Ekrandaki yönergeleri izleyerek aşağıdaki bilgileri sağlayın:

    • Terraform modülü proje adı - Örneği için değeri doc-sample-module kullanılır.

      Project name

    • Docker görüntü dosyasını eklemek ister misiniz? - girin y. girerseniz n, oluşturulan modül kodu yalnızca yerel modda çalıştırmayı destekler.

      Include Docker image file?

  3. Oluşturulan sonuçta elde edilen dosyaları görüntülemek için dizin içeriğini listeleyin:

    ls
    

    List created files

4. Oluşturulan modül kodunu gözden geçirin

  1. Visual Studio Code'u başlatma

  2. Menü çubuğundan Dosya > Klasör Aç'ı seçin ve oluşturduğunuz klasörü seçin.

    Visual Studio Code

Yeoman modül oluşturucu tarafından aşağıdaki dosyalar oluşturulmuştur:

  • main.tf - adlı random-shufflebir modül tanımlar. Giriş bir string_list'dir. Çıktı, permütasyon sayısıdır.
  • variables.tf - Modül tarafından kullanılan giriş ve çıkış değişkenlerini tanımlar.
  • outputs.tf - Modülün çıkışlarını tanımlar. Burada, yerleşik bir Terraform modülü olan tarafından random_shuffledöndürülen değerdir.
  • Rakefile - Derleme adımlarını tanımlar. Bu adımlar şunlardır:
    • build - main.tf dosyasının biçimlendirmesini doğrular.
    • unit - Oluşturulan modül iskeleti birim testi için kod içermez. Bir birim testi senaryosu belirtmek isterseniz, o kodu burada eklersiniz.
    • e2e - Modülün uçtan uca testini çalıştırır.
  • test
    • Test çalışmaları Go dilinde yazılır.
    • Testteki tüm kodlar uçtan uca testlerdir.
    • Uçtan uca testler altında fixturetanımlanan tüm öğeleri sağlamayı dener. Dosyadaki template_output.go sonuçlar önceden tanımlanmış beklenen değerlerle karşılaştırılır.
    • Gopkg.lock ve Gopkg.toml: Bağımlılıkları tanımlar.

Azure https://github.com/Azure/generator-az-terra-moduleiçin Yeoman oluşturucu hakkında daha fazla bilgi için Terratest belgelerine bakın.

5. Docker dosyası kullanarak Terraform modülünü test edin

Bu bölümde, Docker dosyası kullanarak Terraform modülünün nasıl test olduğu gösterilmektedir.

Dekont

Bu örnek modülü yerel olarak çalıştırır; Azure'da değil.

Docker’ın yüklü ve çalışır durumda olduğunu onaylayın

Bir komut isteminden docker version komutunu girin.

Docker version

Elde edilen çıktı, Docker'ın yüklü olduğunu onaylar.

Docker’ın gerçekten çalışır durumda olduğunu onaylamak için docker info girin.

Docker info

Docker kapsayıcısı ayarlama

  1. Bir komut isteminden şu komutu girin:

    docker build --build-arg BUILD_ARM_SUBSCRIPTION_ID= --build-arg BUILD_ARM_CLIENT_ID= --build-arg BUILD_ARM_CLIENT_SECRET= --build-arg BUILD_ARM_TENANT_ID= -t terra-mod-example ..

    Başarıyla derlendi iletisi gösterilir.

    Message indicating a successful build

  2. Oluşturduğunuz modülün terra-mod-example listelendiğini görmek için komut isteminden girindocker image ls.

    List containing the new module

  3. docker run -it terra-mod-example /bin/sh girin. Komutu çalıştırdıktan docker run sonra Docker ortamındasınız. Bu noktada, komutunu kullanarak ls dosyayı bulabilirsiniz.

    File list in Docker

Modülü oluşturma

  1. Şu komutu çalıştırın:

    bundle install
    
  2. Şu komutu çalıştırın:

    rake build
    

    Rake build

Uçtan uca testi çalıştırma

  1. Şu komutu çalıştırın:

    rake e2e
    
  2. Birkaç dakika sonra BAŞARILI iletisi görünür.

    PASS

  3. Testi tamamlamak ve Docker ortamından çıkmak için girin exit .

6. Modül oluşturmak ve test etmek için Yeoman oluşturucu kullanın

Bu bölümde, Cloud Shell'de bir modül oluşturmak ve test etmek için Yeoman oluşturucu kullanılır. Docker dosyası kullanmak yerine Cloud Shell kullanmak işlemi büyük ölçüde basitleştirir. Cloud Shell'i kullanarak aşağıdaki ürünlerin tümü önceden yüklenmiş durumdadır:

  • Node.js
  • Yeoman
  • Terraform

Cloud Shell oturumu başlatma

  1. Azure portalı, shell.azure.com veya Azure mobil uygulaması aracılığıyla Bir Azure Cloud Shell oturumu başlatın.

  2. Azure Cloud Shell'e Hoş Geldiniz sayfası açılır. Bash (Linux) öğesini seçin.

    Welcome to Azure Cloud Shell

  3. Azure depolama hesabı oluşturmadıysanız aşağıdaki ekran açılır. Depolama oluştur'u seçin.

    You have no storage mounted

  4. Azure Cloud Shell, seçtiğiniz kabukta başlatılır ve sizin adınıza oluşturulan bulut sunucusuna ait bilgiler gösterilir.

    Your cloud drive has been created

Terraform modülünüzü tutmak için bir dizin hazırlama

  1. Bu noktada, Cloud Shell sizin için ortam değişkenlerinizde GOPATH'i zaten yapılandırmış olacaktır. Yolu görmek için girin go env.

  2. Henüz yoksa $GOPATH dizini oluşturun: girin mkdir ~/go.

  3. $GOPATH dizini içinde bir dizin oluşturun. Bu dizin, bu örnekte oluşturulan farklı proje dizinlerini tutmak için kullanılır.

    mkdir ~/go/src
    
  4. Yer tutucunun yerine Terraform modülünüzü tutmak için bir dizin oluşturun. Bu örnek için bir dizin adı my-module-name kullanılır.

    mkdir ~/go/src/<your-module-name>
    
  5. Modül dizininize gidin:

    cd ~/go/src/<your-module-name>
    

Terraform modülünüzü oluşturma ve test edin

  1. Aşağıdaki komutu çalıştırın ve yönergeleri izleyin. Docker dosyalarını oluşturmak isteyip istemediğiniz sorulduğunda girin N.

    yo az-terra-module
    
  2. Bağımlılıkları yüklemek için aşağıdaki komutu çalıştırın:

    bundle install
    
  3. Modülü derlemek için aşağıdaki komutu çalıştırın:

    rake build
    

    Rake build

  4. Testi çalıştırmak için aşağıdaki komutu çalıştırın:

    rake e2e
    

    Test-pass results

Azure'da Terraform sorunlarını giderme

Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme

Sonraki adımlar