Tumpukan berbasis bootstrap Windows CloudFormation - AWS CloudFormation

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

Tumpukan berbasis bootstrap Windows CloudFormation

Topik ini menjelaskan cara mem-bootstrap Windows tumpukan dan memecahkan masalah pembuatan tumpukan.

Data pengguna dalam EC2 contoh

Data pengguna adalah EC2 fitur Amazon yang memungkinkan Anda meneruskan skrip atau informasi konfigurasi ke EC2 instance saat diluncurkan.

Untuk Windows EC2 contoh:

  • Data pengguna dijalankan sebagai skrip batch.

  • Anda dapat menggunakan perintah batch (menggunakan <script> tag) atau PowerShell skrip (menggunakan <powershell> tag).

  • Eksekusi skrip ditangani olehEC2Launch.

penting

Jika Anda membuat Windows AMI sendiri untuk digunakan CloudFormation, pastikan EC2Launch v2 dikonfigurasi dengan benar. EC2Launchv2 diperlukan untuk alat CloudFormation bootstrap untuk menginisialisasi dan mengonfigurasi Windows instance dengan benar selama pembuatan tumpukan. Untuk informasi selengkapnya, lihat Menggunakan agen EC2Launch v2 untuk melakukan tugas selama peluncuran instans EC2 Windows di Panduan EC2 Pengguna Amazon.

Untuk selengkapnya AWS Windows AMIs, lihat Referensi AWSWindows AMI.

CloudFormation skrip pembantu

Skrip pembantu adalah utilitas untuk mengkonfigurasi instance selama proses bootstrap. Digunakan dengan data EC2 pengguna Amazon, mereka menyediakan opsi konfigurasi yang kuat.

CloudFormation menyediakan skrip pembantu Python berikut yang dapat Anda gunakan untuk menginstal perangkat lunak dan memulai layanan pada EC2 instance Amazon yang Anda buat sebagai bagian dari tumpukan Anda:

  • cfn-init— Gunakan untuk mengambil dan menafsirkan metadata sumber daya, menginstal paket, membuat file, dan memulai layanan.

  • cfn-signal— Gunakan untuk memberi sinyal dengan CreationPolicy atauWaitCondition, sehingga Anda dapat menyinkronkan sumber daya lain di tumpukan ketika sumber daya atau aplikasi prasyarat siap.

  • cfn-get-metadata— Gunakan untuk mengambil metadata untuk sumber daya atau jalur ke kunci tertentu.

  • cfn-hup— Gunakan untuk memeriksa pembaruan metadata dan menjalankan kait khusus saat perubahan terdeteksi.

Anda memanggil skrip langsung dari templat Anda. Skrip bekerja bersama dengan metadata sumber daya yang didefinisikan dalam templat yang sama. Skrip berjalan di EC2 instance Amazon selama proses pembuatan tumpukan.

Untuk informasi selengkapnya, lihat referensi skrip CloudFormation pembantu di Panduan Referensi AWS CloudFormation Template.

Contoh bootstrap tumpukan Windows

Mari kita periksa contoh cuplikan dari template SharePoint server yang melakukan tindakan berikut:

  • Mengkonfigurasi file inisialisasi:cfn-credentials,cfn-hup.conf, dan. cfn-auto-reloader.conf

  • Mengunduh dan menginstal paket seperti SharePoint Foundation pada instance server.

  • Menggunakan a WaitCondition untuk memastikan sumber daya siap.

  • Membuat pengguna IAM dan grup keamanan untuk akses ke instance.

  • Mengambil IP untuk instance dengan Amazon Elastic IP (EIP).

Skrip cfn-init pembantu digunakan untuk melakukan setiap tindakan ini, berdasarkan informasi dalam AWS::CloudFormation::Init sumber daya dalam template.

AWS::CloudFormation::InitBagian ini diberi nama SharePointFoundation dan dimulai dengan deklarasi standar:

"SharePointFoundation": { "Type" : "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : {

Setelah ini, files bagian dari AWS::CloudFormation::Init dinyatakan:

"files" : { "c:\\cfn\\cfn-hup.conf" : { "content" : { "Fn::Join" : ["", [ "[main]\n", "stack=", { "Ref" : "AWS::StackName" }, "\n", "region=", { "Ref" : "AWS::Region" }, "\n" ]]} }, "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf" : { "content": { "Fn::Join" : ["", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.SharePointFoundation.Metadata.AWS::CloudFormation::Init\n", "action=cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]} }, "C:\\SharePoint\\SharePointFoundation2010.exe" : { "source" : "http://d3adzpja92utk0.cloudfront.net/SharePointFoundation.exe" } },

Tiga file dibuat di sini dan ditempatkan di direktori C:\cfn pada instans server. Mereka adalah:

  • cfn-hup.conf, file konfigurasi untukcfn-hup.

  • cfn-auto-reloader.conf, file konfigurasi untuk hook yang digunakan oleh cfn-hup untuk memulai pembaruan (panggilancfn-init) saat metadata berubah. AWS::CloudFormation::Init

Ada juga file yang diunduh ke server:SharePointFoundation.exe. File ini digunakan untuk menginstal SharePoint pada instance server.

penting

Karena jalur Windows menggunakan karakter garis miring terbalik ('\'), Anda harus selalu ingat untuk menghindari semua garis miring terbalik dengan benar dengan mendahului garis miring terbalik lainnya setiap kali Anda merujuk ke jalur di template. Windows CloudFormation

Berikutnya adalah commands bagian, yang merupakan cmd.exe perintah.

"commands" : { "1-extract" : { "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log" }, "2-prereq" : { "command" : "C:\\SharePoint\\SPF2010\\PrerequisiteInstaller.exe /unattended" }, "3-install" : { "command" : "C:\\SharePoint\\SPF2010\\setup.exe /config C:\\SharePoint\\SPF2010\\Files\\SetupSilent\\config.xml" }

Karena perintah dalam instans diproses dalam urutan abjad berdasarkan nama, setiap perintah telah ditambahkan dengan nomor yang menunjukkan urutan eksekusi yang diinginkan. Dengan demikian, kita dapat memastikan bahwa paket instalasi pertama diekstraksi, semua prasyarat kemudian diinstal, dan akhirnya, instalasi dimulai. SharePoint

Berikutnya adalah Properties bagian:

"Properties": { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [ {"Ref" : "SharePointFoundationSecurityGroup"} ], "KeyName" : { "Ref" : "KeyPairName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "<script>\n", "cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n", "cfn-signal.exe -e %ERRORLEVEL% ", { "Fn::Base64" : { "Ref" : "SharePointFoundationWaitHandle" }}, "\n", "</script>" ]]}} }

Di bagian ini, UserData properti berisi cmd.exe skrip yang akan dieksekusi olehcfn-init, dikelilingi oleh <script> tag. Anda dapat menggunakan Windows PowerShell skrip di sini sebagai gantinya dengan mengelilingi skrip Anda dengan <powershell> tag. Untuk Windows tumpukan, Anda harus base64 menyandikan URL penanganan kondisi tunggu lagi.

SharePointFoundationWaitHandledireferensikan di sini dan dijalankan dengancfn-signal. Yang WaitConditionHandle dan terkait WaitCondition dideklarasikan berikutnya dalam template:

"SharePointFoundationWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, "SharePointFoundationWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "SharePointFoundation", "Properties" : { "Handle" : {"Ref" : "SharePointFoundationWaitHandle"}, "Timeout" : "3600" } }

Karena menjalankan semua langkah dan menginstal SharePoint mungkin memakan waktu cukup lama, tetapi tidak satu jam penuh, WaitCondition menunggu satu jam (3600 detik) sebelum waktu habis.

Jika semuanya berjalan dengan baik, IP Elastis digunakan untuk menyediakan akses ke SharePoint instance:

"Outputs" : { "SharePointFoundationURL" : { "Value" : { "Fn::Join" : ["", ["http://", { "Ref" : "SharePointFoundationEIP" } ]] }, "Description" : "SharePoint Team Site URL. Please retrieve Administrator password of the instance and use it to access the URL" }

Setelah pembuatan tumpukan selesai, alamat IP yang disediakan oleh EIP akan ditampilkan di tab Output konsol. CloudFormation Namun, sebelum Anda dapat mengakses instance, Anda perlu mengambil kata sandi administrator sementara yang dihasilkan untuk instance tersebut. Untuk informasi selengkapnya, lihat Connect ke Windows instans menggunakan RDP di EC2 Panduan Pengguna Amazon.

Kelola Windows layanan

Anda mengelola Windows layanan dengan cara yang sama seperti layanan Linux, kecuali bahwa Anda menggunakan windows kunci, bukansysvinit. Contoh berikut memulai cfn-hup layanan, menyetelnya ke Otomatis, dan memulai ulang layanan jika cfn-init memodifikasi c:\cfn\cfn-hup.conf atau file c:\cfn\hooks.d\cfn-auto-reloader.conf konfigurasi.

"services" : { "windows" : { "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", "files" : ["c:\\cfn\\cfn-hup.conf", "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf"] } } }

Anda dapat mengelola Windows layanan lain dengan cara yang sama dengan menggunakan nama—bukan nama tampilan—untuk mereferensikan layanan.

Memecahkan masalah pembuatan tumpukan

Jika tumpukan Anda gagal selama pembuatan, perilaku defaultnya adalah mengembalikan kegagalan. Meskipun ini biasanya merupakan default yang baik karena menghindari biaya yang tidak perlu, ini menyulitkan untuk men-debug mengapa pembuatan tumpukan Anda gagal.

Untuk menonaktifkan perilaku ini saat membuat atau memperbarui tumpukan Anda dengan CloudFormation konsol, pilih opsi Pertahankan sumber daya yang berhasil disediakan di bawah opsi Kegagalan tumpukan. Untuk informasi selengkapnya, lihat Pilih cara menangani kegagalan saat menyediakan sumber daya. Ini memungkinkan Anda untuk masuk ke instance Anda dan melihat file log untuk menentukan masalah yang dihadapi saat menjalankan skrip startup Anda.

Log penting yang perlu dilihat adalah:

  • Log EC2 konfigurasi di %ProgramData%\Amazon\EC2Launch\log\agent.log

  • Log cfn-init pada C:\cfn\log\cfn-init.log

Untuk log lainnya, lihat topik berikut di Panduan EC2 Pengguna Amazon: