<?xml version="1.0" standalone="no"?>

<kickstart roll="base">

<description>
Create a Login appliance
</description>

<changelog><![CDATA[
$Log: login-server.xml,v $
Revision 1.9  2011/08/04 22:28:32  phil
Set primary interface of login servers back to private

Revision 1.8  2011/06/24 19:25:07  phil
Firewall documentation. Fix some typos in rulenames.

Revision 1.7  2011/06/20 05:56:07  phil
support rulesrc for system-defined rules.

Revision 1.6  2011/06/07 15:38:13  phil

One extra post tag can ruin your whole day.

Revision 1.5  2011/06/03 16:48:40  phil
Update firewall rules to new style

Revision 1.4  2011/01/04 22:27:31  bruno
typo in comment

Revision 1.3  2010/09/20 20:22:50  bruno
use the 'primary_net' attribute to dictate which interface should be used
as the 'primary'. we'll get the domain name from the subnets table and we'll
set the hostname accordingly.

Revision 1.2  2010/06/07 20:33:37  bruno
the login server needs firewall rules similar to the frontend

Revision 1.1  2010/03/25 00:30:39  bruno
the start of the login appliance

]]></changelog>


<post>

/opt/rocks/bin/rocks add appliance login membership=Login node=login

/opt/rocks/bin/rocks set appliance attr login submit_host true
/opt/rocks/bin/rocks set appliance attr login exec_host false

<!--
	set the login node's primary network to be the public network. this
	network will be used to generate the hostname for the machine.

	This causes unfun behaviour for updated SGE. So set to private.
	Can set to public,  but then one MUST EDIT 
	 /opt/gridengine/default/common/host_aliases 
	on BOTH gridengine master AND login node
	to alias the public name to the private name
	e.g. with entry that looks like:

        login-0-0.local  <public name of login> login-0-0 
-->
/opt/rocks/bin/rocks set appliance attr login primary_net private

</post>


<post>

<!-- define the login appliance specific firewall rules -->


<![CDATA[

/opt/rocks/bin/rocks add firewall appliance=login chain=INPUT \
	flags="-m state --state NEW --source &Kickstart_PublicNetwork;/&Kickstart_PublicNetmask;" \
	protocol=tcp service=https action=ACCEPT network=public rulename="A40-HTTPS-PUBLIC-LAN" rulesrc="system"

/opt/rocks/bin/rocks add firewall appliance=login chain=INPUT \
	flags="-m state --state NEW --source &Kickstart_PublicNetwork;/&Kickstart_PublicNetmask;" \
	protocol=tcp service=www action=ACCEPT network=public rulename="A40-WWW-PUBLIC-LAN" rulesrc="system"

]]>

/opt/rocks/bin/rocks add firewall appliance=login network=public \
	output-network=private service="all" protocol="all" action="ACCEPT" \
	chain="FORWARD" flags="-m state --state RELATED,ESTABLISHED" rulename="A50-FORWARD-RELATED" rulesrc="system"

/opt/rocks/bin/rocks add firewall appliance=login network=private \
	service="all" protocol="all" action="ACCEPT" chain="FORWARD" rulename="A60-FORWARD" rulesrc="system"

/opt/rocks/bin/rocks add firewall appliance=login output-network=public \
	service="nat" protocol="all" action="MASQUERADE" chain="POSTROUTING" rulename="MASQUERADE" rulesrc="system"

/opt/rocks/bin/rocks add firewall appliance=login network=all service="8649" \
	protocol="udp" action="REJECT" chain="INPUT" \
	comment="block ganglia traffic from non-private interfaces" rulename="R10-GANGLIA-UDP" rulesrc="system"

/opt/rocks/bin/rocks add firewall appliance=login network=all service="3306" \
	protocol="tcp" action="REJECT" chain="INPUT" \
	comment="block mysql traffic from non-private interfaces" rulename="R20-MYSQL-TCP" rulesrc="system"

/opt/rocks/bin/rocks add firewall appliance=login network=all service="40000" \
	protocol="tcp" action="REJECT" chain="INPUT" \
	comment="block foundation mysql traffic from non-private interfaces" rulename="R30-FOUNDATION-MYSQL" rulesrc="system"

</post>

</kickstart> 

