Bootstrapping tumpukan Windows AWS CloudFormation - AWS CloudFormation

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

Bootstrapping tumpukan Windows AWS CloudFormation

Topik ini menjelaskan cara melakukan bootstrap tumpukan Windows dan memecahkan masalah pembuatan tumpukan. Jika Anda akan membuat gambar Windows Anda sendiri untuk digunakan CloudFormation, lihat informasi di Mengonfigurasi instans Windows menggunakan EC2 ConfigService di Panduan Microsoft Windows Amazon EC2 untuk petunjuk. Anda harus mengatur instance Windows dengan EC2 ConfigService agar dapat bekerja dengan alat AWS CloudFormation bootstrap.

Contoh bootstraping dari tumpukan Windows

Untuk keperluan ilustrasi, kita akan memeriksa template SharePoint server AWS CloudFormation single instance.

Templat dapat dilihat secara keseluruhan pada URL berikut:

Contoh ini menunjukkan bagaimana untuk:

  • Buat IAM User dan grup keamanan untuk akses ke instance.

  • Konfigurasikan file inisialisasi:cfn-credentials,cfn-hup.conf, dancfn-auto-reloader.conf.

  • Unduh dan instal paket seperti SharePoint Foundation 2010 pada instance server.

  • Gunakan a WaitCondition untuk memastikan sumber daya siap.

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

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

AWS::CloudFormation::InitBagian ini bernama "SharePointFoundation“, dan dimulai dengan deklarasi standar:

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

Setelah ini, bagian file 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:

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

  • cfn-auto-reloader.conf, file konfigurasi untuk kait yang digunakan oleh cfn-hup untuk memulai pembaruan (memanggil cfn-init) ketika metadata di AWS::CloudFormation::Init berubah.

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

penting

Karena jalur pada 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 Windows di template. AWS CloudFormation

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

"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 bagian Properti:

"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>" ]]}} }

Dalam bagian ini, properti UserData berisi properti skrip cmd.exe yang akan dijalankan oleh cfn-init, dikelilingi oleh tanda <script>. Anda dapat menggunakan skrip Windows Powershell di sini alih-alih mengelilingi skrip Anda dengan tanda <powershell>. Untuk tumpukan Windows, Anda harus mengodekan base64 lagi untuk menangani URL kondisi tunggu.

SharePointFoundationWaitHandle direferensikan di sini dan dijalankan dengancfn-signal. Yang WaitConditionHandledan WaitConditionterkait dinyatakan 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. AWS CloudFormation Namun, sebelum Anda dapat mengakses instance, Anda perlu mengambil kata sandi Administrator sementara yang dihasilkan untuk instance tersebut. Untuk informasi selengkapnya, lihat Menyambungkan ke instans Windows menggunakan RDP di Panduan Pengguna Amazon EC2.

Cara mengelola layanan Windows

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

"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 layanan Windows lainnya dengan cara yang sama dengan menggunakan nama — bukan nama tampilan — untuk referensi layanan.

Cara memecahkan masalah pembuatan tumpukan

Jika tumpukan Anda mengalami kegagalan selama pembuatan, perilaku default adalah untuk melakukan Rollback pada 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, pilih Tampilkan Opsi Lanjutan saat membuat tumpukan Anda dengan AWS CloudFormation konsol, dan pilih Tidak ada pemilih di samping Rollback on failure. Ini akan memungkinkan Anda untuk masuk ke instans Anda dan melihat file log untuk menunjukkan dengan tepat masalah yang dihadapi saat menjalankan skrip startup Anda.

Log penting yang perlu dilihat adalah:

  • Log konfigurasi EC2 pada C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt

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

Lihat panduan EC2 ini untuk lebih banyak log: