2017-10-02 7 views
0

2つのインスタンスを起動する自動拡張環境で2 ebsのボリュームを作成しようとしています。AutoscalingのEBSボリュームが添付されない

現在、このユーザーデータpsスクリプトは、「利用可能」のボリュームがない場合、チェックしてelseループに入ることができます。ただし、4つではなく2つのボリュームを作成しています(インスタンスごとに2つ)。私は睡眠状態を入れる必要がありますか?オートスケーリングによって起動された2つの別々のインスタンスに2 ebsのボリュームがどのように接続されますか?

$instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id;       

    $available = Get-EC2Volume -Filter @{ Name="status"; Values="available" } 

    if($available) { 
     Get-EC2Volume -Filter @{ Name="status"; Values="available" } >> c:\cfn\scripts\volumeinfo.txt;   
     $vid = Get-Content "c:\cfn\scripts\volumeinfo.txt" | select-string volumeId | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } 
     Add-Content -Path c:\cfn\scripts\info.txt -Value $vid 
     [Byte] $c = [Char] 'd'; 
     foreach ($volumeid in $vid) {             
        Add-Content -Path c:\cfn\scripts\info.txt -Value $volumeid              
        $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id 
        Add-EC2Volume -InstanceId $instanceId -VolumeId $volumeid -Device "/dev/sd$([Char] $c++)" } 
     Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False    

    } else { 
     echo "Else Loop" >> c:\cfn\scripts\info.txt; 
     $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id 
     $rgn = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/placement/availability-zone 
     $v = New-EC2Volume -AvailabilityZone $rgn -Size 50 -VolumeType gp2     
     Add-EC2Volume -Device /dev/sdb -InstanceId $instanceId -VolumeId $v.VolumeId 
     Add-Content -Path c:\cfn\scripts\info.txt -Value $v.VolumeId 

     $v = New-EC2Volume -AvailabilityZone $rgn -Size 50 -VolumeType gp2     
     Add-EC2Volume -Device /dev/sdc -InstanceId $instanceId -VolumeId $v.VolumeId 
     Add-Content -Path c:\cfn\scripts\info.txt -Value $v.VolumeId   
     Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False   

答えて

0

Get-EC2Volumeを追加し、ステータスがavailableになった後、EC2インスタンスにアタッチするのを待つことができます。 http://docs.aws.amazon.com/powershell/latest/reference/Index.html

+0

最初のインスタンスのユーザーデータが終了したときに置くことができる条件があります。実行する必要がある2番目のインスタンスのみです。起動設定により、両方のインスタンスが同時に実行されている問題を引き起こした?どんな助言も問題ではないはずの – gary

+0

に役立ちます。 – Asdfg

+0

私は最初のインスタンスが最初のループに入り、2番目のインスタンスがelseループに入っていることをテストしました。私がこれを修正する方法を考える:(私が今追加した睡眠条件を取り除く必要があるかもしれません...)responeをありがとう – gary

関連する問題