Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <powershell>
- echo "Initializing user data."
- echo "Setting Variables "
- $INSTANCE_ID=(Invoke-WebRequest http://169.254.169.254/latest/meta-data/instance-id | findstr "i-").substring(20)
- $REGION=(Invoke-WebRequest http://169.254.169.254/latest/meta-data/placement/availability-zone/ | findstr "Content" | select -First 1).substring(20) -replace ".$"
- $TOPOLOGY_ID=1203
- $STACK_TYPE=elastic_jobs
- $MINION="$TOPOLOGY_ID-$STACK_TYPE-$INSTANCE_ID"
- $CUSTOMER_ID=4
- $MASTER="[52.67.15.7]"
- $SALT_VERSION="2015.8.5"
- $SALT_CALL_PATH = "c:\salt\salt-call"
- $SALT_CONF_FILE = "c:\salt\conf\minion"
- $TIMEZONE="E. South America Standard Time"
- $LOG_DIR = "c:\"
- $LOG_FILE = "userdata-intera.log"
- $LOG_SIGNAL = "userdata_signal.log"
- $DATE_LOG = Get-Date -format yyyy-%M-%d:%H:%m:%s
- $SOURCE_SALT = "https://repo.saltstack.com/windows/Salt-Minion-$SALT_VERSION-AMD64-Setup.exe"
- $DESTINATION_SALT = "c:\users\administrator\downloads\Salt-Minion-$SALT_VERSION-AMD64-Setup.exe"
- $arguments = "/S /master=$MASTER /minion-name=$MINION /start-service=0"
- $ADMIN_USER_NAME="Administrator"
- $ADMIN_USER_PASS="pW82w59mMaRA=6TC"
- $CLOUD_ADM_USER_NAME="CloudAdm"
- $CLOUD_ADM_USER_PASS="Intera@birl"
- $SENSU_DIRECTORIES='\"C:\Totvs\AppServer\",\"C:\Totvs\Files\",\"C:\Totvs\Portal\",\"C:\Totvs\License\",\"C:\Totvs\Scripts\"'
- $DB_USER="APRADT0041203CC8BCE9D"
- $DB_PASSWORD="6N6nX1iawjC2N8s"
- $Env:Path += ";C:\Program Files (x86)\Amazon\cfn-bootstrap;C:\Program Files\Amazon\cfn-bootstrap"
- # Signal aws cloud formation
- function send_signal {
- param ( [int]$1 )
- echo "SENDING $1"
- cfn-signal -e $1 --stack topology-1203 --resource CoreRmInstance --region sa-east-1
- }
- echo "$DATE_LOG - Create LOG Files"
- New-Item $LOG_DIR\$LOG_FILE -type file
- New-Item $LOG_DIR\$LOG_SIGNAL -type file
- echo "$DATE_LOG - INFO: Starting Userdata" >> $LOG_DIR\$LOG_FILE
- echo "2" > $LOG_DIR\$LOG_SIGNAL
- echo "$DATE_LOG - Set Hostname" >> $LOG_DIR\$LOG_FILE
- $computerName = Get-WmiObject Win32_ComputerSystem
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- $computerName.Rename($MINION)
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- echo "$DATE_LOG - Download CFN" >> $LOG_DIR\$LOG_FILE
- (New-Object System.Net.WebClient).DownloadFile($SOURCE_CFN, $DESTINATION_CFN)
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- echo "$DATE_LOG - Install AWS-CFN-Bootstrap " >> $LOG_DIR\$LOG_FILE
- Start-Process -file "c:\users\administrator\downloads\aws-cfn-bootstrap-latest.msi" /quiet -wait
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- echo "$DATE_LOG - Download Salt Minion" >> $LOG_DIR\$LOG_FILE
- (New-Object System.Net.WebClient).DownloadFile($SOURCE_SALT, $DESTINATION_SALT)
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- echo "$DATE_LOG - Install Salt Minion " >> $LOG_DIR\$LOG_FILE
- Start-Process -file "c:\users\administrator\downloads\Salt-Minion-$SALT_VERSION-AMD64-Setup.exe" $arguments -wait
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- echo "$DATE_LOG - Defining HA parameters on Minion" >> $LOG_DIR\$LOG_FILE
- Add-content $SALT_CONF_FILE "`r`nMASTER_alive_interval: 30`r`nauth_timeout: 10`r`nauth_tries: 2`r`nrandom_reauth_delay: 60`r`nrecon_default: 1000`r`nrecon_max: 5000`r`nrecon_randomize: True"
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- echo "$DATE_LOG - Start Salt Minion" >> $LOG_DIR\$LOG_FILE
- start-service salt-minion
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- sleep 30
- echo "$DATE_LOG - Running salt-call saltutil.sync_modules" >> $LOG_DIR\$LOG_FILE
- Start-Process -file $SALT_CALL_PATH "saltutil.sync_modules"
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- sleep 30
- echo "$DATE_LOG - Running salt-call state.sls grains" >> $LOG_DIR\$LOG_FILE
- $saltParams = "state.sls grains"
- Start-Process -file $SALT_CALL_PATH $saltParams
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- sleep 30
- echo "$DATE_LOG - Running salt-call state.sls timezone" >> $LOG_DIR\$LOG_FILE
- $saltParams = "state.sls so_timezone_configure pillar=`"{`'timezone`': `'$TIMEZONE`'}`""
- Start-Process -file $SALT_CALL_PATH $saltParams
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- sleep 30
- echo "$DATE_LOG - Running salt-call state.sls product_os_user_configure - User Admin" >> $LOG_DIR\$LOG_FILE
- $saltParams = "state.sls product_os_user_configure pillar=`"{`'$MINION`': {`'user_states`': [{`'user_password`': [{`'name`': `'$ADMIN_USER_NAME`',`'password`': `'$ADMIN_USER_PASS`'}]}]}}`""
- Start-Process -file $SALT_CALL_PATH $saltParams
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- sleep 30
- echo "$DATE_LOG - Running salt-call state.sls product_os_user_configure - User Cloud Admin" >> $LOG_DIR\$LOG_FILE
- $saltParams = "state.sls product_os_user_configure pillar=`"{`'$MINION`': {`'user_states`': [{`'user_password`': [{`'name`': `'$CLOUD_ADM_USER_NAME`',`'password`': `'$CLOUD_ADM_USER_PASS`'}]}]}}`""
- Start-Process -file $SALT_CALL_PATH $saltParams
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- sleep 30
- echo "$DATE_LOG - Running salt state install.sls" >> $LOG_DIR\$LOG_FILE
- $saltParams = "state.sls install pillar=`"{`'admin_user_name`': `'$ADMIN_USER_NAME`', `'admin_user_pass`': `'$ADMIN_USER_PASS`', `'application_directories`': [`'$SENSU_DIRECTORIES`'], `'db_user`': `'$DB_USER`', `'db_password`': `'$DB_PASSWORD`' }`" concurrent=True"
- Start-Process -file $SALT_CALL_PATH $saltParams
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- sleep 30
- echo "$DATE_LOG - Create TAG AWS" >> $LOG_DIR\$LOG_FILE
- aws ec2 create-tags --resources $INSTANCE_ID --tags Key=topology_id,Value=$TOPOLOGY_ID Key=Name,Value=$MINION Key=hostname,Value=$MINION Key=elastic,Value=true Key=service_name,Value=rm Key=instance_type,Value=elastic_rm Key=customer_id,Value=$CUSTOMER_ID Key=product_name,Value=rm --region $REGION
- If ($? -ne $True) { echo "1" > $LOG_DIR\$LOG_SIGNAL; send_signal 1; exit 1 }
- echo "$DATE_LOG - SUCCESS" >> $LOG_DIR\$LOG_FILE
- echo "0" > $LOG_DIR\$LOG_SIGNAL
- send_signal 0
- </powershell>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement