Completely overhaul the "new head node" section, based on an install

from scratch done here in Austin.

I am aware that there are various sins in the markup and whitespace.
These will be fixed with subsequent commits.
This commit is contained in:
Mark Linimon 2012-11-18 15:11:38 +00:00
parent 0ed9b920bf
commit 1ec9d97bef
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=40068

View file

@ -2771,33 +2771,10 @@ ln -s ../<replaceable>arch</replaceable>/archive/errorlogs <replaceable>arch</re
</step>
<step>
<para>For each supported arch, add a
<literal>ports-<replaceable>${arch}</replaceable></literal>
user and group. Add them to the <literal>wheel</literal>
group. They should have the <literal>'*'</literal> password.
Also, similarly, create the <literal>ports</literal> and
<literal>portmgr</literal> users.</para>
</step>
<step>
<para>For each supported arch, create
<filename>/home/ports-<replaceable>${arch}/.ssh/</replaceable></filename>
and populate <filename>authorized_keys</filename>. </para>
</step>
<!-- NOTYET
<step>
<para>Also add the following users:<screen>
squid:*:100:100::0:0:User &:/usr/local/squid:/bin/sh
ganglia:*:102:102::0:0:User &:/usr/local/ganglia:/bin/sh</screen>
</para>
<para>Add them to <filename>/etc/group</filename> as well.</para>
</step>
-->
<step>
<para>Create the appropriate files in
<filename>/etc/.ssh/</filename>.</para>
<para>Create a user to own the <application>portbuild</application>
repository, such as <literal>portmgr</literal>, and add it
to the <literal>wheel</literal> group. It should have the
<literal>'*'</literal> password.</para>
</step>
<step>
@ -2806,6 +2783,62 @@ console="vidconsole,comconsole"</screen>
</para>
</step>
<step>
<para>We run the cluster on UTC. If you have not set the clock
to UTC:
<screen>cp /usr/share/zoneinfo/Etc/UTC etc/localtime</screen>
</para>
</step>
<step>
<para>Create the appropriate
<filename>etc/rc.conf</filename>.</para>
<para>Required entries:<screen>
hostname="<replaceable>${hostname}</replaceable>"
sshd_enable="YES"
</screen>
<para>Recommended entries:<screen>
background_fsck="NO"
clear_tmp_enable="YES"
dumpdev="AUTO"
fsck_y_enable="YES"
apache22_enable="YES"
apache_flags=""
apache_pidfile="/var/run/httpd.pid"
gmetad_enable="YES"
gmond_enable="YES"
inetd_enable="YES"
# XXX MCL these don't work!
#inetd_flags="-R 10000 -lw"
mountd_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 12"
nfs_remote_port_only="YES"
ntpd_enable="YES"
ntpdate_enable="YES"
ntpdate_flags="north-america.pool.ntp.org"
rpcbind_enable="YES"
rpc_lockd_enable="NO"
rpc_statd_enable="YES"
sendmail_enable="NONE"
smartd_enable="YES"
</screen>
</para>
</step>
<step>
<para>Create <filename>etc/resolv.conf</filename>, if
necessary.</para>
</step>
<step>
<para>Create the appropriate files in
<filename>/etc/ssh/</filename>.</para>
</step>
<step>
<para>Add the following to <filename>/etc/sysctl.conf</filename>:<screen>
kern.maxfiles=40000
@ -2820,9 +2853,6 @@ ttyu0 "/usr/libexec/getty std.9600" vt100 on secure</screen>
</para>
</step>
<step>
<para>TBA</para>
</step>
</procedure>
</sect2>
@ -2835,22 +2865,33 @@ ttyu0 "/usr/libexec/getty std.9600" vt100 on secure</screen>
<step>
<para>Create a <application>zfs</application> volume named
<filename>a</filename> and mount it on
<filename>/a</filename>:<screen>
# zpool create a mirror da1 da2 mirror da3 da4 mirror da5 da6 mirror da7 da8</screen>
<filename>/a</filename>. An example:<screen>
&prompt.root; zpool create a mirror da1 da2 mirror da3 da4 mirror da5 da6 mirror da7 da8</screen>
</para>
</step>
<step>
<para>Set up the base portbuild directory:<screen>
# mkdir -p /a/portbuild
# cd /a/portbuild
# chown portmgr:portmgr .
# chmod 775 .</screen>
<para>Create the portbuild directory:<screen>
&prompt.root; mkdir -p /a/portbuild
</screen>
</para>
</step>
<step>
<para>TBA</para>
<para>Create and mount a new <application>zfs</application>
filesystem on it:
<screen>zfs create -o mountpoint=/a/portbuild a/portbuild</screen>
</para>
</step>
<step>
<para>Set up the portbuild directory:<screen>
&prompt.root; cd /a/portbuild
&prompt.root; chown portmgr:portmgr .
&prompt.root; chmod 775 .
&prompt.root; ln -sf /a/portbuild /var/portbuild
</screen>
</para>
</step>
</procedure>
@ -2876,8 +2917,8 @@ ttyu0 "/usr/libexec/getty std.9600" vt100 on secure</screen>
<procedure>
<step>
<para>The following ports (or their latest successors) are required:<screen>
databases/py-pysqlite23
databases/py-sqlalchemy
databases/py-sqlite3
databases/py-sqlalchemy (only SQLITE is needed)
devel/git (WITH_SVN)
devel/py-configobj
devel/py-setuptools
@ -2886,13 +2927,13 @@ net/nc
net/rsync
sysutils/ganglia-monitor-core (with GMETAD off)
sysutils/ganglia-webfrontend (WITHOUT_X11)
www/apache22 (with EXT_FILTER and THREADS)</screen>
www/apache22 (with EXT_FILTER)</screen>
</para>
<para>Expect those to bring in:<screen>
<para>Expect those to bring in, among others:<screen>
databases/sqlite3
lang/perl-5.12
lang/python27</screen>
lang/perl-5.14 (or successor)
lang/python27 (or sucessor)</screen>
</para>
<para>The following ports (or their latest successors) are strongly suggested:<screen>
@ -2900,7 +2941,7 @@ benchmarks/bonnie++
devel/ccache
mail/postfix
net/isc-dhcp41-server
ports-mgmt/pkg_cutleaves
ports-mgmt/pkg
ports-mgmt/pkg_tree
ports-mgmt/portaudit
ports-mgmt/portmaster
@ -2913,26 +2954,242 @@ sysutils/smartmontools</screen>
</step>
<step>
<para>Configure mail by doing the following: TBA.
<para>If not already created, add the following users:<screen>
squid:*:100:100::0:0:User &amp;:/usr/local/squid:/bin/sh
ganglia:*:102:102::0:0:User &amp;:/usr/local/ganglia:/bin/sh</screen>
</para>
<para>Add them to <filename>/etc/group</filename> as well.</para>
</step>
<step>
<para>Configure mail by doing the following:</para>
<para>TBA.</para>
</step>
</procedure>
</sect2>
<sect2 id="pointyhat-other">
<title>Other</title>
<sect2 id="pointyhat-repo">
<title>Setting up and configuring the portbuild repository</title>
<procedure>
<step>
<para>TBA</para>
<para>Set up an account with subversion config files
installed. Again, we generally use
<replaceable>portmgr</replaceable>.</para>
</step>
<step>
<para>As that user, set up the repository:<screen>
&prompt.user; svn checkout svn://svn.freebsd.org/base/projects/portbuild /a/portbuild
</screen>
</para>
</step>
<step>
<para>Configure how build slaves will talk to your server
by making the following changes to
<filename>/var/portbuild/conf/client.conf</filename>:</para>
<itemizedlist>
<listitem>
<para>Set <makevar>CLIENT_NFS_MASTER</makevar> to wherever
your build slaves will PXE boot from. (Possibly, the
hostname of your server.)</para>
</listitem>
<listitem>
<para>Set <makevar>CLIENT_BACKUP_FTP_SITE</makevar>
to a backup site for FTP fetches; again, possibly
the hostname of your server.</para>
</listitem>
<listitem>
<para>Set <makevar>CLIENT_UPLOAD_HOST</makevar> to
where completed packages will be uploaded.</para>
</listitem>
</itemizedlist>
<para>Most of the other default values should be fine.</para>
</step>
<step>
<para>Most of the default values in
<filename>/var/portbuild/conf/common.conf</filename>
should be fine. This file holds definitions used by
both the server and all its clients.</para>
</step>
<step>
<para><filename>/var/portbuild/conf/make.conf</filename>
is most likely obsolete.</para>
</step>
<step>
<para>Configure the server by making the following changes to
<filename>/var/portbuild/conf/server.conf</filename>:</para>
<itemizedlist>
<listitem>
<para>Set <makevar>SUPPORTED_ARCHS</makevar> to the
list of architectures you wish to build packages for.</para>
</listitem>
<listitem>
<para>For each source branch you will be building for, set
<makevar>SRC_BRANCHES</makevar> and
<makevar>SRC_BRANCH_<replaceable>branch</replaceable>_TAG</makevar>
as detailed in <xref linkend=NEW-BRANCH-PRE-QMANAGER>.
You should not need to change
<makevar>SRC_BRANCHES_PATTERN</makevar>.</para>
</listitem>
<listitem>
<para>Set <makevar>UPLOAD_DIRECTORY</makevar>,
<makevar>UPLOAD_TARGET</makevar>, and
<makevar>UPLOAD_USER</makevar> as approprite
for your site.</para>
</listitem>
<listitem>
<para>Set <makevar>MASTER_URL</makevar> to the http
URL of your server. This will be stamped into the
package build logs and the indices thereof.</para>
</listitem>
</itemizedlist>
<para>Most of the other default values should be fine.</para>
</step>
</procedure>
</sect2>
<sect2 id="pointyhat-pre-qmanager">
<title>pre-<application>qmanager</application></title>
<procedure>
<step>
<para>For each architecture, follow the steps in
<xref linkend=NEW-ARCH-PRE-QMANAGER>.</para>
</step>
</procedure>
</sect2>
<sect2 id="pointyhat-qmanager">
<title><application>qmanager</application></title>
<procedure>
<step>
<para>Copy the following files from
<filename>/var/portbuild/conf/etc/rc.d</filename> to
<filename>/usr/local/etc/rc.d</filename>:<screen>
buildproxy.sh
pollmachine.sh
qmanager.sh</screen>
</para>
<para>As root, start each one of them. You may find it handy
to start each under <application>screen</application> for
debugging purposes.</para>
</step>
<step>
<para>Initialize the <application>qmanager</application>
database's acl list:<screen>
&prompt.root; python /var/portbuild/qmanager/qclient add_acl name=deny_all uidlist= gidlist= sense=0
</screen></para>
</step>
</procedure>
</sect2>
<sect2 id="pointyhat-src-ports-repos">
<title>Creating src and ports repositories</title>
<procedure>
<step>
<para>Run the following commands manually to create the
<literal>src</literal> and <literal>ports</literal>
repositories, respectively:<screen>
&prompt.user; sudo /var/portbuild/scripts/updatesnap.ports
&prompt.user; sudo /var/portbuild/scripts/updatesnap
</screen></para>
<para>These will be periodically run from the root
<filename>crontab</filename>, which you will
install below.</para>
</step>
</procedure>
</sect2>
<sect2 id="pointyhat-other-services">
<title>Other services</title>
<procedure>
<step>
<para>Configure
<filename>/usr/local/etc/apache22/httpd.conf</filename>
as appropriate for your site.</para>
</step>
<step>
<para>Copy <filename>/var/portbuild/conf/apache.conf</filename>
to the appropriate <filename>Includes</filename> subdirectory, e.g.,
<filename>/usr/local/etc/apache22/Includes/apache.conf</filename>.
Configure it as appropriate for your site.</para>
</step>
<step>
<para>Set up <filename>/var/portbuild/crontab/root</filename> as
the root crontab via <command>crontab -e</command>. If you do
not support all the archs listed there, make sure to comment out
the appropriate <application>dologs</application> entries.</para>
</step>
<step>
<para>If your build slaves will be pxebooted, make sure to
enable the <application>tftp</application> entries in
<filename>/etc/inetd.conf</filename>.</para>
</step>
</procedure>
</sect2>
<sect2 id="pointyhat-finishing-up">
<title>Finishing up</title>
<procedure>
<step>
<para>For each architecture, follow the steps in
<xref linkend=NEW-ARCH-POST-QMANAGER>.</para>
</step>
</procedure>
<para>You should now be ready to build packages.</para>
</sect2>
</sect1>
<sect1 id="disk-failure">