Recipe Use Examples
The set of examples aimed to illustrate the recipe utilization.
Recipe 1
Runs on VSs for Apache server installation and default web page configuration.
Can be used for the following events:
- VS provisioning (starts Apache server during the VS creation)
- Network rebuild
- Network interface added
Consists of 5 steps. Each step depends on the previous step result.
Step 1
#if echo $OPERATING_SYSTEM_DISTRO |grep rhel ; then
if rpm -qa |grep httpd |grep -v grep ; then
yum -y update httpd
else
yum -y install httpd
fi
#else
# exit 1
#fi
Result source: Exit code
Pass values: 0
On success: Proceed
Fail values: Fail anything else
On failure: Fail
Step 2
echo "<p><a href=http://$CP_ADDRESS>OnApp Cloud</a></p>" > /var/www/html/index.html
Result source: Exit code
Pass values: 0
On success: Go to step 5
Fail values: Fail anything else
On failure: Go to step 4
Step 3
service httpd restart
Result source: Exit code
Pass values: 0
On success: Stop
Fail values: Fail anything else
On failure: Fail
Step 4
echo "Can not write to file" > /var/log/recipes.log
Result source: Exit code
Pass values: 0
On success: Stop
Fail values: Fail anything else
On failure: Fail
Step 5
echo "<p><a href=http://$IP_ADDRESS>$HOSTNAME</a></p>" >> /var/www/html/index.html
Result source: Exit code
Pass values: 0
On success: Go to step 3
Fail values: Fail anything else
On failure: Go to step 4
Recipe 2
Runs on compute resources to check the virtualization type.
Can be used for the following events:
- When Xen/KVM compute resource goes online
Step 1
if rpm -qa |grep -q $qayd ; then
ps aux |grep -q xend || exit 1
else
ps aux |grep libvirtd || exit 1
fi
Result source: Exit code
Pass values: 0
On success: Proceed
Fail values: Fail anything else
On failure: Fail
Recipe 3
Runs on compute resources to check the snmpd and snmpd trap services and restarts them.
Can be used for compute resource and control panel server events.
Step 1
service snmpd restart && service snmptrapd restart
Result source: Exit code
Pass values: 0
On success: Proceed
Fail values: Fail anything else
On failure: Fail
Recipe 4
Runs on Windows virtual servers to check if the Apache folder is present and deletes it, otherwise installs Apache.
Can be used for Windows virtual server events.
Step 1
$files = dir 'C:\Program Files (x86)\Apache*'
$process = "ApacheMonitor*"
if ($files -ne $null)
{
"there's installed apache. Removing apache ..."
$installer = dir 'c:\apache.msi'
Stop-Process -Name $process
Start-Sleep -Second 5
Remove-Item $files -Force -Recurse
Remove-Item $installer -Force -Recurse
$files = dir 'C:\Program Files (x86)\Apache*'
if ($files -ne $null)
{
"Failed to remove apache"
return 1
}
else
{
"apache has been removed"
return 0
}
}
else
{
"Apache has not been installed."
"Downloading installer.."
$client=New-Object System.Net.WebClient
$client.DownloadFile("http://mirrors.besplatnyeprogrammy.ru/apache//httpd/binaries/win32/httpd-2.0.64-win32-x86-no_ssl.msi", "c:\apache.msi")
"silence apache installation.."
c:\apache.msi /quiet
return 0
}
Result source: Exit code
Pass values: 0
On success: Proceed
Fail values: Fail anything else
On failure: Fail
Recipe 5
Runs on Windows virtual servers to install Firefox web browser.
Virtual Server variable "VM_IDENTIFIER" is used in this example.
Step 1
# Silent Install Firefox
# Download URL: https://www.mozilla.org/en-US/firefox/all/
# Path for the workdir
$workdir = "c:\installer-$env:VM_IDENTIFIER\"
# Check if work directory exists if not create it
If (Test-Path -Path $workdir -PathType Container)
{ Write-Host "$workdir already exists" -ForegroundColor Red}
ELSE
{ New-Item -Path $workdir -ItemType directory }
# Download the installer
if ( $env:PROCESSOR_ARCHITECTURE -eq 'x86') {
echo "Running 32-bit PowerShell"
$source = "https://download.mozilla.org/?product=firefox-latest&os=win&lang=en-US"
}
else {
echo "Running 64-bit PowerShell"
$source = "https://download.mozilla.org/?product=firefox-latest&os=win64&lang=en-US"
}
$destination = "$workdir\firefox.exe"
# Check if Invoke-Webrequest exists otherwise execute WebClient
if (Get-Command 'Invoke-Webrequest')
{
Invoke-WebRequest $source -OutFile $destination
}
else
{
$WebClient = New-Object System.Net.WebClient
$webclient.DownloadFile($source, $destination)
}
# Start the installation
Start-Process -FilePath "$workdir\firefox.exe" -ArgumentList "/S"
# Wait XX Seconds for the installation to finish
Start-Sleep -s 60
# Remove the installer
rm -Force $workdir\firefox*
Result source: Exit code
Pass values: 0
On success: Proceed
Fail values: Fail anything else
On failure: Fail
See also: