Стоит прочитать документацию ec2config-service , так как там есть ссылка на нужный параметр.
Требуется настройка Ec2HandleUserData
, настроенная в Config.xml
.
Powershell может легко обновить этот параметр:
$path = 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml'
$xml = [xml](Get-Content $path)
$state = $xml.Ec2ConfigurationSettings.Plugins.Plugin | where {$_.Name -eq 'Ec2HandleUserData'}
$state.State = 'Disabled'
$xml.Save($path)
Я использую этот код при создании пользовательских AMI для повторной активации обработки пользовательских данных ($state.State = 'Enabled'
).
РЕДАКТИРОВАТЬ: выше для ec2config
, а не ec2launch
, который используется ОП. Первоначально я пропустил это.
В этом случае я думаю, что вам нужно изменить способ работы скрипта, а не использовать <persist>
, а затем попытаться отключить его функциональность, я бы удалил тег persist и вызвал InitializeInstance.ps1 –Schedule
( ссылка на документацию ) в вашем if
для условий, которые вы хотите, чтобы пользовательские данные перезапускались:
if ($hostname -ne $instanceName) {
& C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
Rename-Computer -NewName $instanceName -Restart -Force
}
elseif ($domain -ne 'my.domain.local') {
& C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
Add-Computer -DomainName aws.macmillan.local -OUPath "OU=Windows,OU=QAServers,OU=Servers,DC=my,DC=domain,DC=local" -Credential $cred -Force -Restart -ErrorAction 'stop'
}