<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>InstallationProcedure/CommonInstallSteps</title><revhistory><revision><revnumber>14</revnumber><date>2020-07-19 21:49:28</date><authorinitials>ClintonEbadi</authorinitials><revremark>install puppet from buster on new machines</revremark></revision><revision><revnumber>13</revnumber><date>2018-11-14 03:31:36</date><authorinitials>ClintonEbadi</authorinitials><revremark>new command to sign certs</revremark></revision><revision><revnumber>12</revnumber><date>2018-11-14 03:26:48</date><authorinitials>ClintonEbadi</authorinitials><revremark>install puppet6 instead of puppet5</revremark></revision><revision><revnumber>11</revnumber><date>2018-04-20 04:43:04</date><authorinitials>ClintonEbadi</authorinitials><revremark>how to not make puppet run when you don't want it to</revremark></revision><revision><revnumber>10</revnumber><date>2018-04-18 00:17:12</date><authorinitials>ClintonEbadi</authorinitials><revremark>actual commands to run for puppet</revremark></revision><revision><revnumber>9</revnumber><date>2018-04-17 04:16:06</date><authorinitials>ClintonEbadi</authorinitials><revremark>fix exim listmacrodefs filename</revremark></revision><revision><revnumber>8</revnumber><date>2018-04-17 04:05:04</date><authorinitials>ClintonEbadi</authorinitials><revremark>basic puppet instructions, reorganize a bit</revremark></revision><revision><revnumber>7</revnumber><date>2014-04-29 05:10:29</date><authorinitials>ClintonEbadi</authorinitials><revremark>no need to use dc_other_hostnames</revremark></revision><revision><revnumber>6</revnumber><date>2012-12-30 23:02:35</date><authorinitials>ClintonEbadi</authorinitials><revremark>kerberos and portal</revremark></revision><revision><revnumber>5</revnumber><date>2012-12-30 21:33:18</date><authorinitials>ClintonEbadi</authorinitials><revremark>mail</revremark></revision><revision><revnumber>4</revnumber><date>2012-12-29 07:13:21</date><authorinitials>ClintonEbadi</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-12-24 02:15:16</date><authorinitials>ClintonEbadi</authorinitials><revremark>mail</revremark></revision><revision><revnumber>2</revnumber><date>2012-12-24 02:04:23</date><authorinitials>ClintonEbadi</authorinitials><revremark>adding to domtool</revremark></revision><revision><revnumber>1</revnumber><date>2012-12-20 22:16:42</date><authorinitials>ClintonEbadi</authorinitials><revremark>start at replacement for SetupNewMachines</revremark></revision></revhistory></articleinfo><para>Before proceeding with the <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/AutomatedSystemInstall#">AutomatedSystemInstall</ulink> new nodes must be added to HCoop's infrastructure. </para><section><title>Network</title><para>After deciding on the host name through a poll of the members: </para><orderedlist numeration="arabic"><listitem><para>Allocate an addresses from the free list on <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/IpAddresses#">IpAddresses</ulink> (and update the page!) </para></listitem><listitem><para>Using the peer1 request portal, add a reverse dns mapping to the hostname </para><itemizedlist><listitem><para>You cannot install the machine until the reverse dns mapping has been created; various services rely on the rdns mapping to behave correctly. </para></listitem></itemizedlist></listitem><listitem><para>Add basic node information to <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DomTool#">DomTool</ulink> config </para><orderedlist numeration="arabic"><listitem><para>Edit <code>/afs/hcoop.net/common/etc/domtool/lib/hcoop.dtl</code> and add definitions for <code>HOSTNAME_ip</code>, <code>HOSTNAME_private_ip</code>, and <code>HOSTNAME_ipv6</code> </para></listitem><listitem><para>Edit <code>/afs/hcoop.net/user/h/hc/hcoop/.domtool/hcoop.net</code> to add a DNS entry for <code>$HOST.hcoop.net</code>, using <code>HOSTNAME_ip</code> for the <code>A</code> record and <code>HOSTNAME_ipv6</code> for the <code>AAAA</code> record; and <code>$HOST-private.hcoop.net</code> using <code>HOSTNAME_private_ip</code>. </para></listitem><listitem><para>Apply <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DomTool#">DomTool</ulink> configuration (run <code>DOMTOOL_USER=hcoop domtool hcoop.net</code>) </para></listitem><listitem><para>Synchronize <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DomTool#">DomTool</ulink> library with source code git repository </para></listitem></orderedlist></listitem></orderedlist></section><section><title>Documentation</title><para>Create a <code>ServerHOST</code> page and add the machine to the <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/Hardware#">Hardware</ulink> page. <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/KernelVirtualMachine#">KernelVirtualMachine</ulink>s go into a sub-section of their current physical node. Note any relevant information such as the resources available for the node, intended purpose, etc. </para><para>Make sure the machine is listed on the <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/IpAddresses#">IpAddresses</ulink> page. </para><para>After install, update the server notes with any quirks of the install (ideally: none, but reality is a work in progress). </para></section><section><title>Add to Infrastructure</title><section><title>Kerberos</title><para>Add the server key to Kerberos. At the <code>kadmin</code> console (<code>$SERVER</code> is the fully qualified domain name): </para><screen><![CDATA[add_principal -randkey host/$SERVER@HCOOP.NET]]></screen><para>Update <code>create-user</code> to synchronize keytabs to the new node if applicable. </para></section><section><title>Puppet</title><para>TODO: Create full page on Puppet </para><para>Create class <code>hcoop::server::$SERVER</code> and include service classes required for the server (see existing servers for examples). </para><para>Add <code>node '$SERVER' { include ::hcoop::server::$SERVER }</code> to <code>manifests/site.pp</code> on master. </para><para>After server is installed, set up puppet: </para><itemizedlist><listitem><para>Install <ulink url="https://apt.puppetlabs.com/puppet6-release-buster.deb"/> and then package <code>puppet-agent</code> </para></listitem><listitem><para>Run <code>systemctl stop puppet ; systemctl disable puppet</code> before proceeding so that puppet does not start itself before the system is ready </para></listitem><listitem><para>Request certificate on new server (<code>/opt/puppetlabs/bin/puppet agent --test --onetime --noop --waitforcert 60</code>) </para></listitem><listitem><para>Sign certificate request on puppet master (<code>puppetserver ca sign --certname $server.hcoop.net</code>) </para></listitem><listitem><para>Run <code>puppet agent --test --noop</code> to review initial changes, tweak manifests as needed </para></listitem><listitem><para>Run <code>puppet agent --test</code> to set up the server </para></listitem><listitem><para><emphasis>TODO: Setup is still in initial stages and it is not quite safe to automatically update servers yet</emphasis> Once setup is confirmed working, enable puppet agent to fetch changes automatically </para></listitem></itemizedlist></section><section><title>Mail</title><para>Enable mail routing by adding to exim configuration on the mail server (unless <ulink url="https://bugzilla.hcoop.net/show_bug.cgi?id=939">Bug 939</ulink> has been fixed, in which case update this documentation with the domtool managed procedure). In the exim config directory: </para><itemizedlist><listitem><para><code>update-exim4.conf.conf</code>: Add to <code>dc_relay_nets</code> </para></listitem><listitem><para><code>conf.d/main/01_exim4-config_listmacrosdefs</code>: Add to <code>unix_domains</code> </para></listitem><listitem><para>Run <code>update-exim4.conf</code> </para></listitem></itemizedlist></section><section><title>Portal</title><para>Create <code>WebNode</code> for portal according to <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DaemonAdmin/Portal#">DaemonAdmin/Portal</ulink> so that users may request packages, firewall rules, etc. </para></section><section><title>Domtool</title><para>To control the node with <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DomTool#">DomTool</ulink> minimally: </para><itemizedlist><listitem><para>Add to <code>Config.nodeIps</code> </para></listitem><listitem><para>Add to <code>Config.Firewall.firewallNodes</code> if it will have fwtool managed rules (user and web server nodes) </para></listitem></itemizedlist><para>If you are configuring the node for a specific purpose, you'll need to add it to more configuration. See the <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DomTool#">DomTool</ulink> documentation where it exists. </para><para>Prepare <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DomTool#">DomTool</ulink> for deployment: <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/DomTool/Installation#">DomTool/Installation</ulink>. </para><!--rule (<hr>) is not applicable to DocBook--><para> <ulink url="https://wiki.hcoop.net/InstallationProcedure/CommonInstallSteps/CategorySystemAdministration#">CategorySystemAdministration</ulink> </para></section></section></article>