Menyediakan produk Terraform AWS Service Catalog dengan menggunakan repositori kode - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyediakan produk Terraform AWS Service Catalog dengan menggunakan repositori kode

Dr. Rahul Sharad Gaikwad dan Tamilselvan P, Amazon Web Services

Ringkasan

AWS Service Catalog mendukung penyediaan layanan mandiri dengan tata kelola untuk konfigurasi Terraform Anda. HashiCorp Jika Anda menggunakan Terraform, Anda dapat menggunakan Service Catalog sebagai alat tunggal untuk mengatur, mengatur, dan mendistribusikan konfigurasi Terraform Anda dalam skala besar. AWS Anda dapat mengakses fitur utama Service Catalog, termasuk membuat katalog templat infrastruktur standar dan pra-persetujuan sebagai kode (IAc), kontrol akses, penyediaan sumber daya cloud dengan akses hak istimewa paling sedikit, pembuatan versi, berbagi hingga ribuan, dan penandaan. Akun AWS Pengguna akhir, seperti insinyur, administrator database, dan ilmuwan data, melihat daftar produk dan versi yang dapat mereka akses, dan mereka dapat menerapkannya melalui satu tindakan.

Pola ini membantu Anda menerapkan AWS sumber daya dengan menggunakan kode Terraform. Kode Terraform di GitHub repositori diakses melalui Service Catalog. Dengan menggunakan pendekatan ini, Anda mengintegrasikan produk dengan alur kerja Terraform yang ada. Administrator dapat membuat portofolio Service Catalog dan menambahkan AWS Launch Wizard produk ke dalamnya dengan menggunakan Terraform.

Berikut ini adalah manfaat dari solusi ini:

  • Karena fitur rollback di Service Catalog, jika terjadi masalah selama penerapan, Anda dapat mengembalikan produk ke versi sebelumnya.

  • Anda dapat dengan mudah mengidentifikasi perbedaan antara versi produk. Ini membantu Anda menyelesaikan masalah selama penerapan.

  • Anda dapat mengonfigurasi koneksi repositori di Service Catalog, seperti ke GitHub atau. GitLab Anda dapat membuat perubahan produk secara langsung melalui repositori.

Untuk informasi tentang manfaat keseluruhan AWS Service Catalog, lihat Apa itu Service Catalog.

Prasyarat dan batasan

Prasyarat

Arsitektur

Diagram arsitektur penyediaan produk Terraform di Service Catalog dari repo kode

Diagram menunjukkan alur kerja berikut:

  1. Saat konfigurasi Terraform siap, pengembang membuat file.zip yang berisi semua kode Terraform. Pengembang mengunggah file.zip ke dalam repositori kode yang terhubung ke Service Catalog.

  2. Administrator mengaitkan produk Terraform ke portofolio di Service Catalog. Administrator juga membuat batasan peluncuran yang memungkinkan pengguna akhir untuk menyediakan produk.

  3. Di Service Catalog, pengguna akhir meluncurkan AWS resource dengan menggunakan konfigurasi Terraform. Mereka dapat memilih versi produk mana yang akan digunakan.

Alat

Layanan AWS

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • AWS Service Catalogmembantu Anda mengelola katalog layanan TI secara terpusat yang disetujui. AWS Pengguna akhir dapat dengan cepat men-deploy hanya layanan IT yang disetujui yang mereka butuhkan, mengikuti batasan yang ditetapkan oleh organisasi Anda.

Layanan lainnya

  • Go adalah bahasa pemrograman open source yang didukung Google.

  • Python adalah bahasa pemrograman komputer tujuan umum.

Repositori kode

Jika Anda memerlukan contoh konfigurasi Terraform yang dapat Anda terapkan melalui Service Catalog, Anda dapat menggunakan konfigurasi di Amazon Macie Organization Setup Using Terraform GitHub repositori. Penggunaan sampel kode dalam repositori ini tidak diperlukan.

Praktik terbaik

  • Alih-alih memberikan nilai untuk variabel dalam file konfigurasi Terraform (terraform.tfvars), konfigurasikan nilai variabel saat meluncurkan produk melalui Service Catalog.

  • Berikan akses ke portofolio hanya untuk pengguna atau administrator tertentu.

  • Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Memberikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi AWS Identity and Access Management (IAM).

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

(Opsional) Instal Docker.

Jika Anda ingin menjalankan AWS Lambda fungsi di lingkungan pengembangan Anda, instal Docker. Untuk petunjuk, lihat Menginstal Docker Engine di dokumentasi Docker.

DevOps insinyur

Instal AWS Service Catalog Mesin untuk Terraform.

  1. Masukkan perintah berikut untuk mengkloning repositori AWS Service Catalog Engine for Terraform.

    git clone https://github.com/aws-samples/service-catalog-engine-for-terraform-os.git
  2. Arahkan ke direktori root dari repositori kloning.

  3. Masukkan perintah berikut. Ini menginstal mesin.

    run ./bin/bash/deploy-tre.sh -r

    Wilayah AWS Set di profil default Anda tidak digunakan selama instalasi otomatis. Sebagai gantinya, Anda memberikan Region saat Anda menjalankan perintah ini.

DevOps insinyur, administrator AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Buat koneksi ke GitHub repositori.

  1. Masuk ke AWS Management Console, lalu buka konsol Alat Pengembang. Anda dapat mengakses konsol Alat Pengembang dengan memilih layanan seperti AWS CodePipeline atau AWS CodeDeploy.

  2. Di panel navigasi kiri, pilih Pengaturan, lalu pilih Koneksi.

  3. Pilih Buat koneksi.

  4. Pilih repositori tempat Anda memelihara kode sumber Terraform. Misalnya, Anda dapat memilih Bitbucket, GitHub, atau GitHub Enterprise Server.

  5. Masukkan nama untuk koneksi, lalu pilih Connect.

  6. Ketika Anda diminta, otentikasi repositori.

    Setelah otentikasi selesai, koneksi dibuat dan status berubah menjadi aktif.

Administrator AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Buat produk Service Catalog.

  1. Buka konsol AWS Service Catalog.

  2. Arahkan ke bagian Administrasi, lalu pilih Daftar produk.

  3. Pilih Buat produk.

  4. Pada halaman Buat produk di bagian Detail produk, pilih Jenis produk eksternal. Service Catalog menggunakan jenis produk ini untuk mendukung produk Terraform Community Edition.

  5. Masukkan nama dan pemilik untuk produk Service Catalog.

  6. Pilih Tentukan repositori kode Anda menggunakan penyedia. CodeStar

  7. Masukkan informasi berikut untuk repositori Anda:

    • Connect ke provider Anda menggunakan AWS CodeConnections — Pilih koneksi yang Anda buat sebelumnya.

    • Repositori — Pilih repositori.

    • Cabang — Pilih cabang.

    • Jalur file template - Pilih jalur tempat file template kode disimpan. Nama file harus diakhiri dengantar.gz.

  8. Di bawah Nama dan deskripsi Versi, berikan informasi tentang versi produk.

  9. Pilih Buat produk.

Administrator AWS

Buat portofolio.

  1. Buka konsol AWS Service Catalog.

  2. Arahkan ke bagian Administrasi, lalu pilih, pilih Portofolio.

  3. Pilih Buat portofolio.

  4. Masukkan nilai berikut:

    • Nama portofolioSample terraform

    • Deskripsi portofolio - Sample portfolio for Terraform configurations

    • Pemilik — Informasi kontak Anda, seperti alamat email

  5. Pilih Buat.

Administrator AWS

Tambahkan produk Terraform ke portofolio.

  1. Buka konsol AWS Service Catalog.

  2. Arahkan ke bagian Administrasi, lalu pilih Daftar produk.

  3. Pilih produk Terraform yang Anda buat sebelumnya.

  4. Pilih Tindakan, lalu pilih Tambahkan produk ke portofolio.

  5. Pilih Sample terraform portofolio.

  6. Pilih Tambahkan produk ke portofolio.

Administrator AWS

Buat kebijakan akses.

  1. Buka konsol AWS Identity and Access Management (IAM).

  2. Di panel navigasi, pilih Kebijakan.

  3. Di panel konten, pilih Buat kebijakan.

  4. Pilih opsi JSON.

  5. Masukkan contoh kebijakan JSON di Kebijakan akses di bagian Informasi tambahan dari pola ini.

  6. Pilih Berikutnya.

  7. Pada halaman Tinjau dan buat, di kotak Nama kebijakan, masukkanTerraformResourceCreationAndArtifactAccessPolicy.

  8. Pilih Buat kebijakan.

Administrator AWS

Buat kebijakan kepercayaan khusus.

  1. Buka konsol IAM.

  2. Di panel navigasi, pilih Peran.

  3. Pilih Buat peran.

  4. Di bawah Jenis entitas tepercaya, pilih Kebijakan kepercayaan khusus.

  5. Di editor kebijakan JSON, masukkan contoh kebijakan JSON di Kebijakan kepercayaan di bagian Informasi tambahan dari pola ini.

  6. Pilih Berikutnya.

  7. Di bawah Kebijakan Izin, pilih TerraformResourceCreationAndArtifactAccessPolicy yang telah Anda buat sebelumnya.

  8. Pilih Berikutnya.

  9. Di bawah Rincian peran, di kotak Nama peran, masukkanSCLaunch-product

    penting

     Nama peran harus dimulai denganSCLaunch.

  10. Pilih Buat peran.

Administrator AWS

Tambahkan batasan peluncuran ke produk Service Catalog.

  1. Masuk ke AWS Management Console sebagai pengguna dengan izin administratif.

  2. Buka konsol AWS Service Catalog.

  3. Di panel navigasi, pilih Portofolio.

  4. Pilih portofolio yang Anda buat sebelumnya.

  5. Pada halaman Detail portofolio, pilih tab Constraints, lalu pilih Create constraint.

  6. Untuk Produk, pilih produk Terraform yang Anda buat sebelumnya.

  7. Di bawah Batasan peluncuran, untuk Metode, pilih Masukkan nama peran.

  8. Di kotak Nama peran, masukkanSCLaunch-product.

  9. Pilih Buat.

Administrator AWS

Berikan akses ke produk.

  1. Buka konsol AWS Service Catalog.

  2. Di panel navigasi, pilih Portofolio.

  3. Pilih portofolio yang Anda buat sebelumnya.

  4. Pilih tab Access, lalu pilih Grant access.

  5. Pilih tab Peran, lalu pilih peran yang seharusnya memiliki akses untuk menyebarkan produk ini.

  6. Pilih Akses Hibah.

Administrator AWS

Luncurkan produk.

  1. Masuk ke pengguna AWS Management Console sebagai pengguna dengan izin untuk menyebarkan produk Service Catalog.

  2. Buka konsol AWS Service Catalog.

  3. Di panel navigasi, pilih Produk.

  4. Pilih produk yang Anda buat sebelumnya, lalu pilih Luncurkan produk.

  5. Masukkan nama produk dan tentukan parameter yang diperlukan.

  6. Pilih Luncurkan produk.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Validasi penerapan.

Ada dua mesin AWS Step Functions status untuk alur kerja penyediaan Service Catalog:

  • ManageProvisionedProductStateMachine— Service Catalog memanggil mesin status ini saat menyediakan produk Terraform baru dan saat memperbarui produk yang disediakan Terraform yang ada.

  • TerminateProvisionedProductStateMachine— Service Catalog memanggil mesin status ini saat menghentikan produk yang disediakan Terraform yang ada.

Anda memeriksa log untuk mesin ManageProvisionedProductStateMachine status untuk mengonfirmasi bahwa produk telah disediakan.

  1. Masuk ke AWS Management Console, lalu buka AWS Step Functions konsol.

  2. Di panel navigasi kiri, pilih mesin Negara.

  3. PilihManageProvisionedProductStateMachine.

  4. Dalam daftar Eksekusi, masukkan ID produk yang disediakan untuk menemukan eksekusi.

    catatan

    Nama bucket backend file status dimulai dengan. sc-terraform-engine-state-

  5. Validasi bahwa semua sumber daya yang diperlukan telah dibuat di akun.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus produk yang disediakan.

  1. Masuk ke pengguna AWS Management Console sebagai pengguna dengan izin untuk menyebarkan produk Service Catalog.

  2. Buka konsol AWS Service Catalog.

  3. Di navigasi kiri, pilih Produk yang disediakan.

  4. Pilih produk yang Anda buat.

  5. Dalam daftar Tindakan, pilih Hentikan.

  6. Di kotak teks konfirmasi, masukkanterminate, lalu pilih Hentikan produk yang disediakan.

  7. Ulangi langkah-langkah ini untuk menghentikan semua produk yang disediakan.

DevOps insinyur

Lepaskan AWS Service Catalog Mesin untuk Terraform.

  1. Masuk ke AWS Management Console sebagai pengguna dengan izin administratif.

  2. Buka konsol Amazon Simple Storage Service (Amazon S3).

  3. Di panel navigasi, pilih Bucket.

  4. Pilih sc-terraform-engine-logging-XXXX ember.

  5. Pilih Kosong.

  6. Ulangi langkah 4—5 untuk ember berikut:

    • sc-terraform-engine-state-XXXX

    • terraform-engine-bootstrap-XXXX

  7. Buka AWS CloudFormation konsol, lalu validasi Anda berada di tempat yang benar Wilayah AWS.

  8. Di navigasi kiri, pilih Stacks.

  9. PilihSAM-TRE, lalu pilih Hapus. Tunggu sampai tumpukan telah dihapus.

  10. PilihBootstrap-TRE, lalu pilih Hapus. Tunggu sampai tumpukan telah dihapus.

Administrator AWS

Sumber daya terkait

AWS dokumentasi

Dokumentasi Terraform

Informasi tambahan

Kebijakan akses

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/servicecatalog:provisioning": "true" } } }, { "Action": [ "s3:CreateBucket*", "s3:DeleteBucket*", "s3:Get*", "s3:List*", "s3:PutBucketTagging" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources", "resource-groups:DeleteGroup", "resource-groups:Tag" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" } ] }

Kebijakan kepercayaan

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GivePermissionsToServiceCatalog", "Effect": "Allow", "Principal": { "Service": "servicecatalog.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id:root" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*" ] } } } ] }