Merge "Add Linux Apache and Telnet services"
This commit is contained in:
commit
4c1c44f1b5
@ -0,0 +1,21 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Deploy Apache
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
enablePHP: $enablePHP
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return apacheDeploy('{0}'.format(args.enablePHP)).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
apacheDeploy:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/runApacheDeploy.sh
|
||||||
|
Files:
|
||||||
|
- Linux/installer.sh
|
||||||
|
- Linux/common.sh
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: true
|
@ -0,0 +1,22 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Deploy Telnet
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
appName: $appName
|
||||||
|
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return telnetDeploy(args.appName).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
telnetDeploy:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/runTelnetDeploy.sh
|
||||||
|
Files:
|
||||||
|
- Linux/installer.sh
|
||||||
|
- Linux/common.sh
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: false
|
29
muranorepository/Services/apache-manifest.yaml
Normal file
29
muranorepository/Services/apache-manifest.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
version: 0.1
|
||||||
|
service_display_name: Apache Service
|
||||||
|
|
||||||
|
description: >-
|
||||||
|
<strong> Linux Apache Service </strong>
|
||||||
|
Demonstrates a simple linux agent, which installs Apache Server
|
||||||
|
|
||||||
|
full_service_name: linuxApacheService
|
||||||
|
author: Mirantis Inc.
|
||||||
|
service_version: 1.0
|
||||||
|
enabled: True
|
||||||
|
|
||||||
|
ui:
|
||||||
|
- LinuxApache.yaml
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
- Apache.xml
|
||||||
|
|
||||||
|
heat:
|
||||||
|
- Linux.template
|
||||||
|
- ApacheSecurity.template
|
||||||
|
|
||||||
|
agent:
|
||||||
|
- DeployApache.template
|
||||||
|
|
||||||
|
scripts:
|
||||||
|
- Linux/common.sh
|
||||||
|
- Linux/installer.sh
|
||||||
|
- Linux/runApacheDeploy.sh
|
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"Resources": {
|
||||||
|
"$port-{instanceName}": {
|
||||||
|
"Properties": {
|
||||||
|
"security_groups" : [ {"Ref" : "ApacheSecurityGroup"} ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ApacheSecurityGroup": {
|
||||||
|
"Type": "AWS::EC2::SecurityGroup",
|
||||||
|
"Properties": {
|
||||||
|
"SecurityGroupIngress": [
|
||||||
|
{
|
||||||
|
"ToPort": "80",
|
||||||
|
"IpProtocol": "tcp",
|
||||||
|
"FromPort": "80",
|
||||||
|
"CidrIp": "0.0.0.0/0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ToPort": "433",
|
||||||
|
"IpProtocol": "tcp",
|
||||||
|
"FromPort": "433",
|
||||||
|
"CidrIp": "0.0.0.0/0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"GroupDescription": "Enable access to HTTP and HTTPS protocols"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
204
muranorepository/Services/scripts/Linux/common.sh
Normal file
204
muranorepository/Services/scripts/Linux/common.sh
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
DEBUGLVL=3
|
||||||
|
LOGFILE=/tmp/muranodeployment.log
|
||||||
|
PIPAPPS="pip python-pip pip-python"
|
||||||
|
PIPCMD=""
|
||||||
|
if [ "$DEBUGLVL" -eq 4 ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
function log {
|
||||||
|
if [ "$DEBUGLVL" -gt 0 ]; then
|
||||||
|
chars=$(echo "@$" | wc -c)
|
||||||
|
case $DEBUGLVL in
|
||||||
|
1 )
|
||||||
|
echo -e "LOG:>$@"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo -e "$(date +"%m-%d-%Y %H:%M") LOG:>$@" | tee --append $LOGFILE
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo -e "$(date +"%m-%d-%Y %H:%M") LOG:>$@" >> $LOGFILE
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
echo -e "$(date +"%m-%d-%Y %H:%M") LOG:>$@" | tee --append $LOGFILE
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function lowercase(){
|
||||||
|
echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
|
||||||
|
}
|
||||||
|
function find_pip()
|
||||||
|
{
|
||||||
|
for cmd in $PIPAPPS
|
||||||
|
do
|
||||||
|
_cmd=$(which $cmd 2>/dev/null)
|
||||||
|
if [ $? -eq 0 ];then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -z $_cmd ];then
|
||||||
|
echo "Can't find \"pip\" in system, please install it first, exiting!"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
PIPCMD=$_cmd
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
OPTIND=1 # Reset if getopts used previously
|
||||||
|
function collect_args(){
|
||||||
|
_n=$1
|
||||||
|
shift
|
||||||
|
ARGS=''
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
if [[ "$_n" == -* ]] || [ -z "$_n" ]; then
|
||||||
|
OPTIND=$((OPTIND - 1))
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
#echo "_n=$_n ; $OPTIND"
|
||||||
|
if [ -z "$ARGS" ]; then
|
||||||
|
ARGS=$OPTARG
|
||||||
|
else
|
||||||
|
ARGS="$ARGS $_n"
|
||||||
|
fi
|
||||||
|
eval _n=\$$OPTIND
|
||||||
|
OPTIND=$((OPTIND + 1))
|
||||||
|
#sleep 1
|
||||||
|
done
|
||||||
|
echo $ARGS
|
||||||
|
unset _n
|
||||||
|
unset ARGS
|
||||||
|
}
|
||||||
|
function get_os(){
|
||||||
|
KERNEL=$(uname -r)
|
||||||
|
MACH=$(uname -m)
|
||||||
|
OS=$(uname)
|
||||||
|
if [ "${OS}" = "Linux" ] ; then
|
||||||
|
if [ -f /etc/redhat-release ] ; then
|
||||||
|
DistroBasedOn='RedHat'
|
||||||
|
Packager='yum'
|
||||||
|
DIST=$(cat /etc/redhat-release |sed s/\ release.*//)
|
||||||
|
PSUEDONAME=$(cat /etc/redhat-release | sed s/.*\(// | sed s/\)//)
|
||||||
|
REV=$(cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//)
|
||||||
|
elif [ -f /etc/SuSE-release ] ; then
|
||||||
|
DistroBasedOn='SuSe'
|
||||||
|
Packager='zypper'
|
||||||
|
PSUEDONAME=$(cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//)
|
||||||
|
REV=$(cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //)
|
||||||
|
elif [ -f /etc/mandrake-release ] ; then
|
||||||
|
DistroBasedOn='Mandrake'
|
||||||
|
Packager='urpmi urpme'
|
||||||
|
PSUEDONAME=$(cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//)
|
||||||
|
REV=$(cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//)
|
||||||
|
elif [ -f /etc/debian_version ] ; then
|
||||||
|
DistroBasedOn='Debian'
|
||||||
|
Packager='apt-get'
|
||||||
|
DIST=$(cat /etc/lsb-release | grep '^DISTRIB_ID' | awk -F= '{ print $2 }')
|
||||||
|
PSUEDONAME=$(cat /etc/lsb-release | grep '^DISTRIB_CODENAME' | awk -F= '{ print $2 }')
|
||||||
|
REV=$(cat /etc/lsb-release | grep '^DISTRIB_RELEASE' | awk -F= '{ print $2 }')
|
||||||
|
fi
|
||||||
|
if [ -f /etc/UnitedLinux-release ] ; then
|
||||||
|
DIST="${DIST}[$(cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//)]"
|
||||||
|
fi
|
||||||
|
OS=$(lowercase $OS)
|
||||||
|
DistroBasedOn=$(lowercase $DistroBasedOn)
|
||||||
|
readonly OS
|
||||||
|
readonly DIST
|
||||||
|
readonly DistroBasedOn
|
||||||
|
readonly PSUEDONAME
|
||||||
|
readonly REV
|
||||||
|
readonly KERNEL
|
||||||
|
readonly MACH
|
||||||
|
#readonly Packager
|
||||||
|
else
|
||||||
|
OS=unknown
|
||||||
|
readonly OS
|
||||||
|
log "OS:$OS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function add_fw_rule(){
|
||||||
|
_rule_string=$@
|
||||||
|
_tmp_fw_port=$(echo $_rule_string | grep -o -e "dport [0-9]*\s")
|
||||||
|
_tmp_fw_proto=$(echo $_rule_string | grep -o -e "-p \w*\s")
|
||||||
|
_fw_port=$(echo $_tmp_fw_port | awk '{print $2}')
|
||||||
|
_fw_proto=$(echo $_tmp_fw_proto |awk '{print $2}')
|
||||||
|
_fw_reload=""
|
||||||
|
#find iptables and add rule
|
||||||
|
case $DIST in
|
||||||
|
"Fedora")
|
||||||
|
_fw_cmd=$(which firewall-cmd)
|
||||||
|
_fw_port=$(echo $_rule_string | grep -o -e "dport [0-9]*\s" | awk '{print $2}')
|
||||||
|
_fw_proto=$(echo $_rule_string | grep -o -e "-p \w*\s" | awk '{print $2}')
|
||||||
|
_fw_rule="--permanent --add-port=$_fw_port/$_fw_proto"
|
||||||
|
_fw_enable_rules="$_fw_cmd --reload"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_fw_cmd=$(which iptables)
|
||||||
|
_fw_rule=$_rule_string
|
||||||
|
_fw_enable_rules="service $_fw_cmd save"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
iptcmdsave=$(which iptables-save)
|
||||||
|
if [[ "$_fw_cmd" != '' ]] && [[ "$iptcmdsave" != '' ]]; then
|
||||||
|
eval "$iptcmdsave | grep -e \"$_tmp_fw_port\" | grep -e \"$_tmp_fw_proto\"" > /dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
eval $_fw_cmd $_fw_rule
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Can't set firewall rules, exiting..."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if [ -n "$_fw_enable_rules" ]; then
|
||||||
|
log "Running \"$_fw_enable_rules\""
|
||||||
|
$_fw_enable_rules > /dev/null
|
||||||
|
fi
|
||||||
|
log "$_fw_cmd rule with $_fw_rule set."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "$_fw_cmd rule exists."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "There are no fw found..."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function enable_init(){
|
||||||
|
_initctrl=""
|
||||||
|
_init_suffix=""
|
||||||
|
_service=$1
|
||||||
|
case $DistroBasedOn in
|
||||||
|
"debian")
|
||||||
|
_initctrl="update-rc.d"
|
||||||
|
_init_suffix="defaults"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_initctrl="chkconfig"
|
||||||
|
_init_suffix="on"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
$_initctrl $_service $_init_suffix
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "$_initctrl $_service $_init_suffix - fails!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function restart_service(){
|
||||||
|
_service=$1
|
||||||
|
service $_service restart > /dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Can't start $_service service!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function package_renamer(){
|
||||||
|
_pkg=$1
|
||||||
|
case $DistroBasedOn in
|
||||||
|
"debian")
|
||||||
|
_pkg=$(echo $_pkg | sed 's/-devel$/-dev/')
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_pkg=$(echo $_pkg | sed 's/-dev$/-devel/')
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo $_pkg
|
||||||
|
}
|
142
muranorepository/Services/scripts/Linux/installer.sh
Normal file
142
muranorepository/Services/scripts/Linux/installer.sh
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
INSTALLER_OPTS=""
|
||||||
|
UNINSTALLER_OPTS=""
|
||||||
|
PMGR=""
|
||||||
|
PMGR_LIST_OPTS=""
|
||||||
|
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function set_install_options(){
|
||||||
|
case $1 in
|
||||||
|
apt-get )
|
||||||
|
INSTALLER_OPTS="-y -q install"
|
||||||
|
UNINSTALLER_OPTS="-y -q remove"
|
||||||
|
PMGR="dpkg"
|
||||||
|
PMGR_LIST_OPTS="-s"
|
||||||
|
;;
|
||||||
|
yum )
|
||||||
|
INSTALLER_OPTS="--assumeyes install"
|
||||||
|
UNINSTALLER_OPTS="--assumeyes erase"
|
||||||
|
PMGR="rpm"
|
||||||
|
PMGR_LIST_OPTS="-q"
|
||||||
|
;;
|
||||||
|
urpm* )
|
||||||
|
INSTALLER_OPTS="-y"
|
||||||
|
UNINSTALLER_OPTS=""
|
||||||
|
PMGR="rpm"
|
||||||
|
PMGR_LIST_OPTS="-q"
|
||||||
|
;;
|
||||||
|
zypper )
|
||||||
|
INSTALLER_OPTS="install"
|
||||||
|
UNINSTALLER_OPTS="remove --quiet"
|
||||||
|
PMGR="rpm"
|
||||||
|
PMGR_LIST_OPTS="-q"
|
||||||
|
;;
|
||||||
|
pip )
|
||||||
|
INSTALLER_OPTS="install"
|
||||||
|
UNINSTALLER_OPTS="uninstall --yes"
|
||||||
|
find_pip
|
||||||
|
PACKAGER=$PIPCMD
|
||||||
|
PMGR=$PIPCMD
|
||||||
|
PMGR_LIST_OPTS="freeze | grep"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
PACKAGER=$(which $1)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Can't find \"$1\", exiting!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function package_install(){
|
||||||
|
PKG=$1
|
||||||
|
eval "$PMGR $PMGR_LIST_OPTS $PKG" > /dev/null 2>&1
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
log "\"$PKG\" already installed"
|
||||||
|
else
|
||||||
|
log "Installing \"$PKG\" ..."
|
||||||
|
$PACKAGER $INSTALLER_OPTS $PKG > /dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "\"$PKG\" installation fails, exiting!"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
log "\t\t...success"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function package_uninstall(){
|
||||||
|
PKG=$1
|
||||||
|
eval "$PMGR $PMGR_LIST_OPTS $PKG" > /dev/null 2>&1
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
log "\"$PKG\" not installed"
|
||||||
|
else
|
||||||
|
log "Unnstalling \"$PKG\" ..."
|
||||||
|
$PACKAGER $UNINSTALLER_OPTS $PKG > /dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "\"$PKG\" uninstallation fails, exiting!"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
log "\t\t...success"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function run_install(){
|
||||||
|
for PKG in $@
|
||||||
|
do
|
||||||
|
package_install $PKG
|
||||||
|
done
|
||||||
|
}
|
||||||
|
function run_uninstall(){
|
||||||
|
for PKG in $@
|
||||||
|
do
|
||||||
|
package_uninstall $PKG
|
||||||
|
done
|
||||||
|
}
|
||||||
|
# Main workflow
|
||||||
|
include "common.sh"
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
script=$(basename $0)
|
||||||
|
echo -e "Usage:\n\t* install packages -- ./$script -p package_manager -i package0 [packageN]\n\t* remove packages -- ./$script -p package_manager -r package0 [packageN]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
Packager=''
|
||||||
|
get_os
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Unsupported *nix version ($DistroBasedOn - $DIST/$PSUEDONAME/$REV/$MACH)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
while getopts ":p:i:r:" opt ; do
|
||||||
|
case "$opt" in
|
||||||
|
p)
|
||||||
|
if [[ "$OPTARG" != sys ]]; then
|
||||||
|
Packager=$OPTARG
|
||||||
|
fi
|
||||||
|
set_install_options $Packager
|
||||||
|
;;
|
||||||
|
i)
|
||||||
|
n=$OPTARG
|
||||||
|
run_install $(collect_args $n $@)
|
||||||
|
break;
|
||||||
|
;;
|
||||||
|
r)
|
||||||
|
n=$OPTARG
|
||||||
|
run_uninstall $(collect_args $n $@)
|
||||||
|
break;
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
log "Invalid option: -$OPTARG" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
37
muranorepository/Services/scripts/Linux/runApacheDeploy.sh
Normal file
37
muranorepository/Services/scripts/Linux/runApacheDeploy.sh
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
echo -e "$inc_file_path not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
include "common.sh"
|
||||||
|
# FirewallRules
|
||||||
|
FW_RULE1='-I INPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT -m comment --comment "by murano, Apache server access on HTTPS port 443"'
|
||||||
|
FW_RULE2='-I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT -m comment --comment "by murano, Apache server access on HTTP port 80"'
|
||||||
|
APP=''
|
||||||
|
get_os
|
||||||
|
[[ $? -ne 0 ]] && exit 1
|
||||||
|
case $DistroBasedOn in
|
||||||
|
"debian")
|
||||||
|
APP="apache2"
|
||||||
|
;;
|
||||||
|
"redhat")
|
||||||
|
APP="httpd"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
_php=""
|
||||||
|
if [[ "$1" == "True" ]]; then
|
||||||
|
_php="php"
|
||||||
|
fi
|
||||||
|
APPS_TO_INSTALL="$APP $_php $FW_BOOT_PKG"
|
||||||
|
bash installer.sh -p sys -i $APPS_TO_INSTALL
|
||||||
|
enable_init $APP
|
||||||
|
service $APP start > /dev/null 2>&1
|
||||||
|
add_fw_rule $FW_RULE1
|
||||||
|
add_fw_rule $FW_RULE2
|
63
muranorepository/Services/scripts/Linux/runTelnetDeploy.sh
Normal file
63
muranorepository/Services/scripts/Linux/runTelnetDeploy.sh
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
echo -e "$inc_file_path not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
include "common.sh"
|
||||||
|
# FirewallRules
|
||||||
|
FW_RULE1='-I INPUT 1 -p tcp -m tcp --dport 23 -j ACCEPT -m comment --comment "by murano, Telnet server access on port 23"'
|
||||||
|
APP=''
|
||||||
|
get_os
|
||||||
|
[[ $? -ne 0 ]] && exit 1
|
||||||
|
case $DistroBasedOn in
|
||||||
|
"debian")
|
||||||
|
APP="telnetd"
|
||||||
|
;;
|
||||||
|
"redhat")
|
||||||
|
APP="telnet-server"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
APPS_TO_INSTALL="$APP"
|
||||||
|
bash installer.sh -p sys -i $APPS_TO_INSTALL
|
||||||
|
xinetd_tlnt_cfg="/etc/xinetd.d/telnet"
|
||||||
|
if [ -f "$xinetd_tlnt_cfg" ]; then
|
||||||
|
sed -i '/disable.*=/ s/yes/no/' $xinetd_tlnt_cfg
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "can't modify $xinetd_tlnt_cfg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "$APP startup config not found under $xinetd_tlnt_cfg"
|
||||||
|
fi
|
||||||
|
#security tty for telnet
|
||||||
|
setty=/etc/securetty
|
||||||
|
lines=$(sed -ne '/^pts\/[0-9]/,/^pts\/[0-9]/ =' $setty)
|
||||||
|
if [ -z "$lines" ]; then
|
||||||
|
cat >> $setty << "EOF"
|
||||||
|
pts/0
|
||||||
|
pts/1
|
||||||
|
pts/2
|
||||||
|
pts/3
|
||||||
|
pts/4
|
||||||
|
pts/5
|
||||||
|
pts/6
|
||||||
|
pts/7
|
||||||
|
pts/8
|
||||||
|
pts/9
|
||||||
|
EOF
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log "Error occured during $setty changing..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$setty has pts/0-9 options..."
|
||||||
|
fi
|
||||||
|
restart_service xinetd
|
||||||
|
add_fw_rule $FW_RULE1
|
28
muranorepository/Services/telnet-manifest.yaml
Normal file
28
muranorepository/Services/telnet-manifest.yaml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
version: 0.1
|
||||||
|
service_display_name: Linux Telnet Service
|
||||||
|
|
||||||
|
description: >-
|
||||||
|
<strong> Linux Telnet Service </strong>
|
||||||
|
Demonstrates a simple linux agent, which installs Telnet if required.
|
||||||
|
|
||||||
|
full_service_name: linuxTelnetService
|
||||||
|
author: Mirantis Inc.
|
||||||
|
service_version: 1.0
|
||||||
|
enabled: True
|
||||||
|
|
||||||
|
ui:
|
||||||
|
- LinuxTelnet.yaml
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
- LinuxTelnet.xml
|
||||||
|
|
||||||
|
heat:
|
||||||
|
- Linux.template
|
||||||
|
|
||||||
|
agent:
|
||||||
|
- DeployTelnet.template
|
||||||
|
|
||||||
|
scripts:
|
||||||
|
- Linux/common.sh
|
||||||
|
- Linux/installer.sh
|
||||||
|
- Linux/runTelnetDeploy.sh
|
86
muranorepository/Services/ui_forms/LinuxApache.yaml
Normal file
86
muranorepository/Services/ui_forms/LinuxApache.yaml
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
name: Apache Service
|
||||||
|
type: linuxApacheService
|
||||||
|
|
||||||
|
description: >-
|
||||||
|
<strong> Linux Apache Service </strong>
|
||||||
|
Demonstrates a simple linux agent, which installs Apache Server
|
||||||
|
|
||||||
|
unitTemplates:
|
||||||
|
- {}
|
||||||
|
|
||||||
|
forms:
|
||||||
|
- serviceConfiguration:
|
||||||
|
fields:
|
||||||
|
- name: title
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
hidden: true
|
||||||
|
attributeNames: false
|
||||||
|
description: Apach service installs Apache HTTP Server
|
||||||
|
- name: name
|
||||||
|
type: string
|
||||||
|
label: Service Name
|
||||||
|
description: >-
|
||||||
|
Enter a desired name for a service. Just A-Z, a-z, 0-9, dash and
|
||||||
|
underline are allowed.
|
||||||
|
minLength: 2
|
||||||
|
maxLength: 64
|
||||||
|
regexpValidator: '^[-\w]+$'
|
||||||
|
errorMessages:
|
||||||
|
invalid: Just letters, numbers, underscores and hyphens are allowed.
|
||||||
|
helpText: Just letters, numbers, underscores and hyphens are allowed.
|
||||||
|
- name: dcInstances
|
||||||
|
type: instance
|
||||||
|
hidden: true
|
||||||
|
attributeNames: units
|
||||||
|
initial: 1
|
||||||
|
- name: deployApache
|
||||||
|
type: boolean
|
||||||
|
label: Deploy Apache
|
||||||
|
description: >-
|
||||||
|
Indicates if the target machine has to get Apache deployed
|
||||||
|
initial: true
|
||||||
|
required: false
|
||||||
|
widgetMedia:
|
||||||
|
css: {all: [muranodashboard/css/checkbox.css]}
|
||||||
|
- name: unitNamingPattern
|
||||||
|
type: string
|
||||||
|
label: Hostname
|
||||||
|
description: >-
|
||||||
|
For your convenience instance hostname can be specified.
|
||||||
|
Enter a name or leave blank for random name generation.
|
||||||
|
required: false
|
||||||
|
regexpValidator: '^(([a-zA-Z0-9#][a-zA-Z0-9-#]*[a-zA-Z0-9#])\.)*([A-Za-z0-9#]|[A-Za-z0-9#][A-Za-z0-9-#]*[A-Za-z0-9#])$'
|
||||||
|
helpText: Optional field for a machine hostname
|
||||||
|
# temporaryHack
|
||||||
|
widgetMedia:
|
||||||
|
js: [muranodashboard/js/support_placeholder.js]
|
||||||
|
css: {all: [muranodashboard/css/support_placeholder.css]}
|
||||||
|
- instanceConfiguration:
|
||||||
|
fields:
|
||||||
|
- name: title
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
hidden: true
|
||||||
|
attributeNames: false
|
||||||
|
descriptionTitle: Instance Configuration
|
||||||
|
description: Specify some instance parameters on which service would be created.
|
||||||
|
- name: flavor
|
||||||
|
type: flavor
|
||||||
|
label: Instance flavor
|
||||||
|
description: >-
|
||||||
|
Select registered in Openstack flavor. Consider that service performance
|
||||||
|
depends on this parameter.
|
||||||
|
required: false
|
||||||
|
- name: osImage
|
||||||
|
type: image
|
||||||
|
imageType: linux
|
||||||
|
label: Instance image
|
||||||
|
description: >-
|
||||||
|
Select valid image for a service. Image should already be prepared and
|
||||||
|
registered in glance.
|
||||||
|
- name: availabilityZone
|
||||||
|
type: azone
|
||||||
|
label: Availability zone
|
||||||
|
description: Select availability zone where service would be installed.
|
||||||
|
required: false
|
165
muranorepository/Services/workflows/Apache.xml
Normal file
165
muranorepository/Services/workflows/Apache.xml
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
<workflow>
|
||||||
|
<!-- Provisioning rules -->
|
||||||
|
<rule match="$.services[?(@.type == 'linuxApacheService')].units[?(@.state.hostname and not @.temp.instanceName)]"
|
||||||
|
desc="Units of Linux Telnet service having hostname and image names assigned but without instances">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Creating Linux instance <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<!-- HEAT rules defenitions -->
|
||||||
|
<!-- Rule #1 -->
|
||||||
|
<update-cf-stack template="Linux" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="instanceName">
|
||||||
|
<select path="state.hostname"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="instancePort">
|
||||||
|
port-<select path="state.hostname"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="networkName">
|
||||||
|
network-<select path="/id"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="userData">
|
||||||
|
<prepare-user-data template="Linux" initFile="linux_init.sh">
|
||||||
|
<parameter name="hostname">
|
||||||
|
<select path="state.hostname"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
</prepare-user-data>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="instanceType">
|
||||||
|
<select path="::flavor" default="m1.medium"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="imageName">
|
||||||
|
<select path="::osImage.name"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="availabilityZone">
|
||||||
|
<select path="::availabilityZone" default="nova"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="temp.instanceName">
|
||||||
|
<select path="name"/>
|
||||||
|
</set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Linux instance <select path="state.hostname"/> (<select path="name"/>) created
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Unable to deploy Linux instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/>
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
<!-- Rule #2 -->
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Configuring security groups on <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<update-cf-stack template="ApacheSecurity" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="instanceName">
|
||||||
|
<select path="state.hostname"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Security groups configuration on instance <select path="state.hostname"/> (<select path="name"/>) is successful
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Unable to configure security groups on instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/>
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
</rule>
|
||||||
|
<!-- Agent rules -->
|
||||||
|
<rule match="$.services[?(@.type == 'linuxApacheService')].units[?(@.temp.instanceName and not @.state.ApacheInstalled)]"
|
||||||
|
desc="Units of Linux Apache service which have got an instance deployed but have not got Apache service installed">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
insatalling Apache on unit <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<!-- Commands sequence -->
|
||||||
|
<!-- Command #1-->
|
||||||
|
<send-command template="DeployApache" error='exception'>
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="deployApachePHP">
|
||||||
|
<select path="::deployApachePHP"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="state.ApacheInstalled"><true/></set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Apache deployed on <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Unable to deploy Apache on <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/>
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</send-command>
|
||||||
|
</rule>
|
||||||
|
</workflow>
|
Loading…
x
Reference in New Issue
Block a user