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 Gunakan EC2Config layanan untuk melakukan tugas selama peluncuran instans sistem operasi Windows EC2 lama di Panduan EC2 Pengguna Amazon untuk petunjuk. Anda harus mengatur instance Windows dengan EC2Config layanan 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.

Template dapat dilihat secara keseluruhan sebagai berikut: URL

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.

  • Ambil IP untuk instance 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 diberi namaSharePointFoundation, 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 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 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 skrip Windows Powershell di sini sebagai gantinya dengan mengelilingi skrip Anda dengan <powershell> tag. Untuk tumpukan Windows, Anda harus base64 menyandikan pegangan kondisi tunggu lagi. URL

SharePointFoundationWaitHandle direferensikan 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 AWS CloudFormation konsol. Namun, sebelum Anda dapat mengakses instance, Anda perlu mengambil kata sandi Administrator sementara yang dihasilkan untuk instance tersebut. Untuk informasi selengkapnya, lihat Connect ke instans Windows Anda menggunakan RDP di Panduan EC2 Pengguna Amazon.

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 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 layanan Windows lainnya dengan cara yang sama dengan menggunakan nama — bukan nama tampilan — untuk mereferensikan 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 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 C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt

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

Lihat EC2 panduan ini untuk lebih banyak log: