AWS/User data

From Ever changing code
< AWS
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

User_data scripts have many derivatives depends on operating system, and following do parse the script:

  • Linux - uses cloud_init
  • Windows 2012 - ec2config
  • Windows 2016< - ec2launch

Retrieve use_data script

  1. PS1 C:> Invoke-RestMethod -uri http://169.254.169.254/latest/user-data ; never worked
  2. in a console, select instance, Instance Settings > View/Change User Data

EC2Launch

EC2Launch is a set of Windows PowerShell scripts that replaces the EC2Config service on Windows Server 2016 and later AMIs.


Configuration file

C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json


Log files are in C:\ProgramData\Amazon\EC2-Windows\Launch\Log

*Ec2Launch.txt - the app itself logs
*UserDataExecution.txt - contains parsing details and the script output
*WallpaperSetup.txt -


Script parsing sections:

<script>cmd://batch commands</script>  #always is parsed 1st
<powershell></powershell>              #2nd
<persist>true</persist>               #by default is false, true will run on each reboot
<runAsLocalSystem></runAsLocalSystem>
<powershellArguments></powershellArguments>


Example user_data.tpl script that will initialise 1st attached volume

<powershell>
$file = @"
select disk 1
attributes disk clear readonly
online disk
convert mbr
create partition primary
format quick fs=ntfs label="log"
assign letter="d"
"@
Set-Content -Path ${env:TEMP}\diskpart -Value $file
diskpart.exe /s ${env:TEMP}\diskpart
</powershell>


Initialise disks using EC2Launch script, it will set a new attached disk with Active flag

<powershell>
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
</powershell>

Logs and important files

#User script content on Windows
Get-Content -path C:\Windows\TEMP\UserScript.ps1

Get-Content -path C:\programdata\Amazon\EC2-Windows\Launch\Log\UserData.log -Wait  #custom file log
Get-Content -path C:\programdata\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log -Wait
Get-Content -path C:\programdata\Amazon\EC2-Windows\Launch\Scripts\TentacleRegisterScheduleTask.log -Wait #custom file log
Get-Content -path C:\Program Files\SplunkUniversalForwarder\var\log\splunk\splunkd.log -wait

Get-Content -path C:\ProgramData\chocolatey\logs\choco.summary.log | more
Get-Content C:\ProgramData\chocolatey\logs\chocolatey.log |more

Resources