<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.csclub.uwaterloo.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ehashman</id>
	<title>CSCWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.csclub.uwaterloo.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ehashman"/>
	<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/Special:Contributions/Ehashman"/>
	<updated>2026-04-07T08:57:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=4074</id>
		<title>Virtualization (LXC Containers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=4074"/>
		<updated>2017-02-19T19:00:54Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Creating a new container */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2009, we use [http://lxc.sourceforge.net/ Linux containers] to maintain virtual machines, most notably [[Machine_List#caffeine|caffeine]], which is hosted on [[Machine_List#glomag|glomag]]. The various commands to manipulate Linux containers are prefixed with &amp;quot;lxc-&amp;quot;; see their individual manpages for usage.&lt;br /&gt;
&lt;br /&gt;
== Management Quick Guide ==&lt;br /&gt;
&lt;br /&gt;
To manage containers, use the &amp;lt;tt&amp;gt;lxc-*&amp;lt;/tt&amp;gt; tools, which require root privilege. Some examples (replace &amp;lt;tt&amp;gt;caffeine&amp;lt;/tt&amp;gt; with the appropriate container name):&lt;br /&gt;
&lt;br /&gt;
 # check if caffeine is running&lt;br /&gt;
 lxc-info -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # start caffeine in the background&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine gracefully&lt;br /&gt;
 lxc-halt -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine forcefully&lt;br /&gt;
 lxc-stop -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # launch a TTY console for the container&lt;br /&gt;
 lxc-console -n caffeine&lt;br /&gt;
&lt;br /&gt;
To install Linux container support on a recent Debian (squeeze or newer) system:&lt;br /&gt;
* Install the &amp;lt;tt&amp;gt;lxc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;bridge-utils&amp;lt;/tt&amp;gt; packages.&lt;br /&gt;
* Create a bridged network interface (this can be configured in &amp;lt;tt&amp;gt;/etc/network/interfaces&amp;lt;/tt&amp;gt; as though it were a normal Ethernet device, with the additional &amp;lt;tt&amp;gt;bridge_ports&amp;lt;/tt&amp;gt; parameter. This is usually called &amp;lt;tt&amp;gt;br0&amp;lt;/tt&amp;gt; (can be created manually with &amp;lt;tt&amp;gt;brctl&amp;lt;/tt&amp;gt;). LXC will create a virtual Ethernet device and add it to the bridge when each container starts.&lt;br /&gt;
&lt;br /&gt;
To start caffeine, run the following command as root on glomag:&lt;br /&gt;
&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
&lt;br /&gt;
Containers are stored on the host filesystem in /var/lib/lxc (root filesystems are symlinked to the appropriate directory on /vm).&lt;br /&gt;
&lt;br /&gt;
== ehashman&#039;s Guide to LXC on Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Configuring the host machine ===&lt;br /&gt;
&lt;br /&gt;
First, install all required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install lxc bridge-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Setting up ethernet bridging ====&lt;br /&gt;
&lt;br /&gt;
Next, create an ethernet bridge for the container. Edit &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# The primary network interface&lt;br /&gt;
#auto eth0&lt;br /&gt;
#iface eth0 inet static&lt;br /&gt;
#       address 129.97.134.200&lt;br /&gt;
#       netmask 255.255.255.0&lt;br /&gt;
#       gateway 129.97.134.1&lt;br /&gt;
&lt;br /&gt;
# Bridge ethernet for containers&lt;br /&gt;
auto br0&lt;br /&gt;
iface br0 inet static&lt;br /&gt;
    bridge_ports eth0&lt;br /&gt;
    address 129.97.134.200&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    gateway 129.97.134.1&lt;br /&gt;
    dns-nameservers 129.97.2.1 129.97.2.2&lt;br /&gt;
    dns-search wics.uwaterloo.ca uwaterloo.ca&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cross your fingers and restart networking for your configuration to take effect!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifdown br0 &amp;amp;&amp;amp; ifup br0&lt;br /&gt;
// bash enter to see if you lost connectivity and have to make a machine room trip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; !!! Do &#039;&#039;&#039;not&#039;&#039;&#039; use !!! &amp;lt;pre&amp;gt;# service networking restart&amp;lt;/pre&amp;gt; The init scripts are broken and this likely will result in a machine room trip (or IPMI power cycle).&lt;br /&gt;
&lt;br /&gt;
==== Setting up storage ====&lt;br /&gt;
&lt;br /&gt;
Last, allocate some space in your volume group to put the container root on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Find the correct volume group to put the container on&lt;br /&gt;
# vgdisplay&lt;br /&gt;
&lt;br /&gt;
// Create the volume in the appropriate volume group&lt;br /&gt;
# lvcreate -L 20G -n container vg0&lt;br /&gt;
&lt;br /&gt;
// Find it in the dev mapper&lt;br /&gt;
# ls /dev/mapper/&lt;br /&gt;
&lt;br /&gt;
// Create a filesystem on it&lt;br /&gt;
# mkfs.ext4 /dev/mapper/vg0-container&lt;br /&gt;
&lt;br /&gt;
// Add a mount point&lt;br /&gt;
# mkdir /vm/container &amp;lt;/pre&amp;gt;&lt;br /&gt;
Last, add it to &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/dev/mapper/vg0-container /vm/container        ext4    defaults        0       2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Test the entry with &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# mount /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you&#039;re done!&lt;br /&gt;
&lt;br /&gt;
=== Creating a new container ===&lt;br /&gt;
&lt;br /&gt;
Create a new container using &amp;lt;code&amp;gt;lxc-create&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Create new container &amp;amp;quot;container&amp;amp;quot; with root fs located at /vm/container&lt;br /&gt;
# lxc-create --dir=/vm/container -n container --template download&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will prompt you for distribution, release, and architecture. (Architecture &#039;&#039;must&#039;&#039; match host machine.)&lt;br /&gt;
&lt;br /&gt;
Take this time to review its config in &amp;lt;code&amp;gt;/var/lib/lxc/container/config&amp;lt;/code&amp;gt;, and tell it to auto-start if you like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Auto-start the container on boot&lt;br /&gt;
lxc.start.auto = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll also want to set up networking (if applicable):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Networking&lt;br /&gt;
lxc.network.type = veth&lt;br /&gt;
lxc.network.flags = up&lt;br /&gt;
lxc.network.link = br0&lt;br /&gt;
lxc.network.name = eth0&lt;br /&gt;
lxc.network.hwaddr = de:ad:be:ef:ba:be  # or something sensible&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// List containers, -f for fancy&lt;br /&gt;
# lxc-ls -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
to ensure that your container has been successfully created; it should be listed. You can also list its root directory if you like. To start it in the background and obtain a root shell, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Start and attach a root shell&lt;br /&gt;
# lxc-start -d -n container&lt;br /&gt;
# lxc-attach -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Migrating a container between hosts ===&lt;br /&gt;
&lt;br /&gt;
Start by shutting the container down:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;root@container:~# halt&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then make a tarball of the container&#039;s filesystem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -czvf container.tar.gz /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copy it to its target destination, along with the configs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp container.tar.gz new-host:&lt;br /&gt;
$ scp -r /var/lib/lxc/container/ new-host:/var/lib/lxc/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now carefully extract it. &#039;&#039;&#039;If you haven&#039;t already, provision storage and ethernet per the container creation section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes, we really do want to stick it directly into &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -xzvf container.tar.gz -C /&amp;lt;/pre&amp;gt;&lt;br /&gt;
Verify the container&#039;s existence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-ls -f&lt;br /&gt;
NAME       STATE    IPV4  IPV6  AUTOSTART  &lt;br /&gt;
-----------------------------------------&lt;br /&gt;
container  STOPPED  -     -     YES   &amp;lt;/pre&amp;gt;&lt;br /&gt;
Now just start it on up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-start -d -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
And test by trying an ssh in!&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=4073</id>
		<title>Virtualization (LXC Containers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=4073"/>
		<updated>2017-02-19T18:53:06Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Setting up storage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2009, we use [http://lxc.sourceforge.net/ Linux containers] to maintain virtual machines, most notably [[Machine_List#caffeine|caffeine]], which is hosted on [[Machine_List#glomag|glomag]]. The various commands to manipulate Linux containers are prefixed with &amp;quot;lxc-&amp;quot;; see their individual manpages for usage.&lt;br /&gt;
&lt;br /&gt;
== Management Quick Guide ==&lt;br /&gt;
&lt;br /&gt;
To manage containers, use the &amp;lt;tt&amp;gt;lxc-*&amp;lt;/tt&amp;gt; tools, which require root privilege. Some examples (replace &amp;lt;tt&amp;gt;caffeine&amp;lt;/tt&amp;gt; with the appropriate container name):&lt;br /&gt;
&lt;br /&gt;
 # check if caffeine is running&lt;br /&gt;
 lxc-info -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # start caffeine in the background&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine gracefully&lt;br /&gt;
 lxc-halt -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine forcefully&lt;br /&gt;
 lxc-stop -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # launch a TTY console for the container&lt;br /&gt;
 lxc-console -n caffeine&lt;br /&gt;
&lt;br /&gt;
To install Linux container support on a recent Debian (squeeze or newer) system:&lt;br /&gt;
* Install the &amp;lt;tt&amp;gt;lxc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;bridge-utils&amp;lt;/tt&amp;gt; packages.&lt;br /&gt;
* Create a bridged network interface (this can be configured in &amp;lt;tt&amp;gt;/etc/network/interfaces&amp;lt;/tt&amp;gt; as though it were a normal Ethernet device, with the additional &amp;lt;tt&amp;gt;bridge_ports&amp;lt;/tt&amp;gt; parameter. This is usually called &amp;lt;tt&amp;gt;br0&amp;lt;/tt&amp;gt; (can be created manually with &amp;lt;tt&amp;gt;brctl&amp;lt;/tt&amp;gt;). LXC will create a virtual Ethernet device and add it to the bridge when each container starts.&lt;br /&gt;
&lt;br /&gt;
To start caffeine, run the following command as root on glomag:&lt;br /&gt;
&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
&lt;br /&gt;
Containers are stored on the host filesystem in /var/lib/lxc (root filesystems are symlinked to the appropriate directory on /vm).&lt;br /&gt;
&lt;br /&gt;
== ehashman&#039;s Guide to LXC on Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Configuring the host machine ===&lt;br /&gt;
&lt;br /&gt;
First, install all required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install lxc bridge-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Setting up ethernet bridging ====&lt;br /&gt;
&lt;br /&gt;
Next, create an ethernet bridge for the container. Edit &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# The primary network interface&lt;br /&gt;
#auto eth0&lt;br /&gt;
#iface eth0 inet static&lt;br /&gt;
#       address 129.97.134.200&lt;br /&gt;
#       netmask 255.255.255.0&lt;br /&gt;
#       gateway 129.97.134.1&lt;br /&gt;
&lt;br /&gt;
# Bridge ethernet for containers&lt;br /&gt;
auto br0&lt;br /&gt;
iface br0 inet static&lt;br /&gt;
    bridge_ports eth0&lt;br /&gt;
    address 129.97.134.200&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    gateway 129.97.134.1&lt;br /&gt;
    dns-nameservers 129.97.2.1 129.97.2.2&lt;br /&gt;
    dns-search wics.uwaterloo.ca uwaterloo.ca&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cross your fingers and restart networking for your configuration to take effect!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifdown br0 &amp;amp;&amp;amp; ifup br0&lt;br /&gt;
// bash enter to see if you lost connectivity and have to make a machine room trip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; !!! Do &#039;&#039;&#039;not&#039;&#039;&#039; use !!! &amp;lt;pre&amp;gt;# service networking restart&amp;lt;/pre&amp;gt; The init scripts are broken and this likely will result in a machine room trip (or IPMI power cycle).&lt;br /&gt;
&lt;br /&gt;
==== Setting up storage ====&lt;br /&gt;
&lt;br /&gt;
Last, allocate some space in your volume group to put the container root on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Find the correct volume group to put the container on&lt;br /&gt;
# vgdisplay&lt;br /&gt;
&lt;br /&gt;
// Create the volume in the appropriate volume group&lt;br /&gt;
# lvcreate -L 20G -n container vg0&lt;br /&gt;
&lt;br /&gt;
// Find it in the dev mapper&lt;br /&gt;
# ls /dev/mapper/&lt;br /&gt;
&lt;br /&gt;
// Create a filesystem on it&lt;br /&gt;
# mkfs.ext4 /dev/mapper/vg0-container&lt;br /&gt;
&lt;br /&gt;
// Add a mount point&lt;br /&gt;
# mkdir /vm/container &amp;lt;/pre&amp;gt;&lt;br /&gt;
Last, add it to &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/dev/mapper/vg0-container /vm/container        ext4    defaults        0       2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Test the entry with &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# mount /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you&#039;re done!&lt;br /&gt;
&lt;br /&gt;
=== Creating a new container ===&lt;br /&gt;
&lt;br /&gt;
Create a new container using &amp;lt;code&amp;gt;lxc-create&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Create new container &amp;amp;quot;container&amp;amp;quot; with root fs located at /vm/container&lt;br /&gt;
# lxc-create --dir=/vm/container -n container --template download&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will prompt you for distribution, release, and architecture. (Architecture &#039;&#039;must&#039;&#039; match host machine.)&lt;br /&gt;
&lt;br /&gt;
Take this time to review its config in &amp;lt;code&amp;gt;/var/lib/lxc/container/config&amp;lt;/code&amp;gt;, and tell it to auto-start if you like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Auto-start the container on boot&lt;br /&gt;
lxc.start.auto = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// List containers, -f for fancy&lt;br /&gt;
# lxc-ls -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
to ensure that your container has been successfully created; it should be listed. You can also list its root directory if you like. To start it in the background and obtain a root shell, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Start and attach a root shell&lt;br /&gt;
# lxc-start -d -n container&lt;br /&gt;
# lxc-attach -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Migrating a container between hosts ===&lt;br /&gt;
&lt;br /&gt;
Start by shutting the container down:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;root@container:~# halt&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then make a tarball of the container&#039;s filesystem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -czvf container.tar.gz /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copy it to its target destination, along with the configs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp container.tar.gz new-host:&lt;br /&gt;
$ scp -r /var/lib/lxc/container/ new-host:/var/lib/lxc/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now carefully extract it. &#039;&#039;&#039;If you haven&#039;t already, provision storage and ethernet per the container creation section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes, we really do want to stick it directly into &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -xzvf container.tar.gz -C /&amp;lt;/pre&amp;gt;&lt;br /&gt;
Verify the container&#039;s existence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-ls -f&lt;br /&gt;
NAME       STATE    IPV4  IPV6  AUTOSTART  &lt;br /&gt;
-----------------------------------------&lt;br /&gt;
container  STOPPED  -     -     YES   &amp;lt;/pre&amp;gt;&lt;br /&gt;
Now just start it on up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-start -d -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
And test by trying an ssh in!&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=4072</id>
		<title>Virtualization (LXC Containers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=4072"/>
		<updated>2017-02-19T18:46:45Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Setting up ethernet bridging */  Fix bad instruction that references &amp;quot;service networking&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2009, we use [http://lxc.sourceforge.net/ Linux containers] to maintain virtual machines, most notably [[Machine_List#caffeine|caffeine]], which is hosted on [[Machine_List#glomag|glomag]]. The various commands to manipulate Linux containers are prefixed with &amp;quot;lxc-&amp;quot;; see their individual manpages for usage.&lt;br /&gt;
&lt;br /&gt;
== Management Quick Guide ==&lt;br /&gt;
&lt;br /&gt;
To manage containers, use the &amp;lt;tt&amp;gt;lxc-*&amp;lt;/tt&amp;gt; tools, which require root privilege. Some examples (replace &amp;lt;tt&amp;gt;caffeine&amp;lt;/tt&amp;gt; with the appropriate container name):&lt;br /&gt;
&lt;br /&gt;
 # check if caffeine is running&lt;br /&gt;
 lxc-info -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # start caffeine in the background&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine gracefully&lt;br /&gt;
 lxc-halt -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine forcefully&lt;br /&gt;
 lxc-stop -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # launch a TTY console for the container&lt;br /&gt;
 lxc-console -n caffeine&lt;br /&gt;
&lt;br /&gt;
To install Linux container support on a recent Debian (squeeze or newer) system:&lt;br /&gt;
* Install the &amp;lt;tt&amp;gt;lxc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;bridge-utils&amp;lt;/tt&amp;gt; packages.&lt;br /&gt;
* Create a bridged network interface (this can be configured in &amp;lt;tt&amp;gt;/etc/network/interfaces&amp;lt;/tt&amp;gt; as though it were a normal Ethernet device, with the additional &amp;lt;tt&amp;gt;bridge_ports&amp;lt;/tt&amp;gt; parameter. This is usually called &amp;lt;tt&amp;gt;br0&amp;lt;/tt&amp;gt; (can be created manually with &amp;lt;tt&amp;gt;brctl&amp;lt;/tt&amp;gt;). LXC will create a virtual Ethernet device and add it to the bridge when each container starts.&lt;br /&gt;
&lt;br /&gt;
To start caffeine, run the following command as root on glomag:&lt;br /&gt;
&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
&lt;br /&gt;
Containers are stored on the host filesystem in /var/lib/lxc (root filesystems are symlinked to the appropriate directory on /vm).&lt;br /&gt;
&lt;br /&gt;
== ehashman&#039;s Guide to LXC on Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Configuring the host machine ===&lt;br /&gt;
&lt;br /&gt;
First, install all required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install lxc bridge-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Setting up ethernet bridging ====&lt;br /&gt;
&lt;br /&gt;
Next, create an ethernet bridge for the container. Edit &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# The primary network interface&lt;br /&gt;
#auto eth0&lt;br /&gt;
#iface eth0 inet static&lt;br /&gt;
#       address 129.97.134.200&lt;br /&gt;
#       netmask 255.255.255.0&lt;br /&gt;
#       gateway 129.97.134.1&lt;br /&gt;
&lt;br /&gt;
# Bridge ethernet for containers&lt;br /&gt;
auto br0&lt;br /&gt;
iface br0 inet static&lt;br /&gt;
    bridge_ports eth0&lt;br /&gt;
    address 129.97.134.200&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    gateway 129.97.134.1&lt;br /&gt;
    dns-nameservers 129.97.2.1 129.97.2.2&lt;br /&gt;
    dns-search wics.uwaterloo.ca uwaterloo.ca&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cross your fingers and restart networking for your configuration to take effect!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifdown br0 &amp;amp;&amp;amp; ifup br0&lt;br /&gt;
// bash enter to see if you lost connectivity and have to make a machine room trip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; !!! Do &#039;&#039;&#039;not&#039;&#039;&#039; use !!! &amp;lt;pre&amp;gt;# service networking restart&amp;lt;/pre&amp;gt; The init scripts are broken and this likely will result in a machine room trip (or IPMI power cycle).&lt;br /&gt;
&lt;br /&gt;
==== Setting up storage ====&lt;br /&gt;
&lt;br /&gt;
Last, allocate some space in your volume group to put the container root on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Find the correct volume group to put the container on&lt;br /&gt;
# vgdisplay&lt;br /&gt;
&lt;br /&gt;
// Create the volume in the appropriate volume group&lt;br /&gt;
# lvcreate -L 20G -n container vg0&lt;br /&gt;
&lt;br /&gt;
// Find it in the dev mapper&lt;br /&gt;
# ls /dev/mapper/&lt;br /&gt;
&lt;br /&gt;
// Create a filesystem on it&lt;br /&gt;
# mkfs.ext4 /dev/mapper/vg0-container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Last, add it to &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/dev/mapper/vg0-container /vm/container        ext4    defaults        0       2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Test the entry with &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# mount /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you&#039;re done!&lt;br /&gt;
&lt;br /&gt;
=== Creating a new container ===&lt;br /&gt;
&lt;br /&gt;
Create a new container using &amp;lt;code&amp;gt;lxc-create&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Create new container &amp;amp;quot;container&amp;amp;quot; with root fs located at /vm/container&lt;br /&gt;
# lxc-create --dir=/vm/container -n container --template download&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will prompt you for distribution, release, and architecture. (Architecture &#039;&#039;must&#039;&#039; match host machine.)&lt;br /&gt;
&lt;br /&gt;
Take this time to review its config in &amp;lt;code&amp;gt;/var/lib/lxc/container/config&amp;lt;/code&amp;gt;, and tell it to auto-start if you like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Auto-start the container on boot&lt;br /&gt;
lxc.start.auto = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// List containers, -f for fancy&lt;br /&gt;
# lxc-ls -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
to ensure that your container has been successfully created; it should be listed. You can also list its root directory if you like. To start it in the background and obtain a root shell, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Start and attach a root shell&lt;br /&gt;
# lxc-start -d -n container&lt;br /&gt;
# lxc-attach -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Migrating a container between hosts ===&lt;br /&gt;
&lt;br /&gt;
Start by shutting the container down:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;root@container:~# halt&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then make a tarball of the container&#039;s filesystem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -czvf container.tar.gz /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copy it to its target destination, along with the configs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp container.tar.gz new-host:&lt;br /&gt;
$ scp -r /var/lib/lxc/container/ new-host:/var/lib/lxc/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now carefully extract it. &#039;&#039;&#039;If you haven&#039;t already, provision storage and ethernet per the container creation section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes, we really do want to stick it directly into &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -xzvf container.tar.gz -C /&amp;lt;/pre&amp;gt;&lt;br /&gt;
Verify the container&#039;s existence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-ls -f&lt;br /&gt;
NAME       STATE    IPV4  IPV6  AUTOSTART  &lt;br /&gt;
-----------------------------------------&lt;br /&gt;
container  STOPPED  -     -     YES   &amp;lt;/pre&amp;gt;&lt;br /&gt;
Now just start it on up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-start -d -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
And test by trying an ssh in!&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Kerberos&amp;diff=4016</id>
		<title>Kerberos</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Kerberos&amp;diff=4016"/>
		<updated>2016-09-14T01:18:55Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Add illustrative image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We use [http://web.mit.edu/Kerberos/ MIT Kerberos 5] for authentication. Our kerberos realm is CSCLUB.UWATERLOO.CA. KDCs run on [[Machine_List#auth1|auth1]] (kdc1) and [[Machine_List#artificial-flavours|artificial-flavours]] (kdc2).&lt;br /&gt;
&lt;br /&gt;
[[File:kerberos.png|frame|Kerberos, the network authentication protocol]]&lt;br /&gt;
&lt;br /&gt;
=== ehashman&#039;s guide to MIT Kerberos v5 on Debian ===&lt;br /&gt;
&lt;br /&gt;
==== Preparatory Reading ====&lt;br /&gt;
&lt;br /&gt;
# [http://web.mit.edu/kerberos/dialogue.html Kerberos: A Dialogue in Four Scenes] (&#039;&#039;&#039;&#039;&#039;definitely&#039;&#039;&#039;&#039;&#039; read this)&lt;br /&gt;
# [http://www.roguelynn.com/words/explain-like-im-5-kerberos/ Explain Like I&#039;m 5: Kerberos] (less entertaining than the stage play)&lt;br /&gt;
# [http://www.rjsystems.nl/en/2100-d6-kerberos-master.php A very practical configuration guide to Kerberos on Debian squeeze] (things don&#039;t change much in the Debian world)&lt;br /&gt;
# [http://web.mit.edu/kerberos/krb5-latest/doc/admin/index.html The official Kerberos documentation]&lt;br /&gt;
&lt;br /&gt;
==== Set up host records ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We will need host records to correspond to our Kerberos admin server and key distribution center, &amp;lt;code&amp;gt;kadmin.wics.uwaterloo.ca&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kdc1.wics.uwaterloo.ca&amp;lt;/code&amp;gt;. These can just be A records pointing to our auth server (currently &amp;lt;code&amp;gt;129.97.134.212&amp;lt;/code&amp;gt;).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We can also set up [http://web.mit.edu/kerberos/krb5-latest/doc/admin/realm_config.html special SRV records] as well. This is recommended but not necessary. They look like this:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;_kerberos._udp.wics.uwaterloo.ca          SRV       0 0 88  kdc1.wics.uwaterloo.ca&lt;br /&gt;
_kerberos-master._udp.wics.uwaterloo.ca   SRV       0 0 88  kdc1.wics.uwaterloo.ca&lt;br /&gt;
_kpasswd._udp.wics.uwaterloo.ca           SRV       0 0 464 kdc1.wics.uwaterloo.ca&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You may have guessed that the third integer is the port the service runs on.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install packages ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;First, install some common system utils that may be missing from the fresh container:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install ssh ntpdate xinetd nmap&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do NOT install ntp on the container. Install it on the host system instead. See [[ntp|NTP]] for info on NTP servers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, install the Kerberos server:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install krb5-{admin-server,user}&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;During the install process, &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; will ask you for the following three values, specified below:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Default Kerberos version 5 realm: WICS.UWATERLOO.CA&lt;br /&gt;
Kerberos servers for your realm: kdc1.wics.uwaterloo.ca&lt;br /&gt;
Administrative server for your Kerberos realm: kadmin.wics.uwaterloo.ca&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You&#039;ll encounter this lovely error, from &amp;lt;code&amp;gt;xinetd&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Note: xinetd currently is not fully supported by update-inetd.&lt;br /&gt;
  Please consult /usr/share/doc/xinetd/README.Debian and itox(8).&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To solve this, we create a file &amp;lt;code&amp;gt;/etc/xinetd.d/krb_prop&amp;lt;/code&amp;gt; with the following contents:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;service krb_prop&lt;br /&gt;
{&lt;br /&gt;
    disable     = no&lt;br /&gt;
    socket_type = stream&lt;br /&gt;
    protocol    = tcp&lt;br /&gt;
    user        = root&lt;br /&gt;
    wait        = no&lt;br /&gt;
    server      = /usr/sbin/kpropd&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;And then restart &amp;lt;code&amp;gt;xinetd&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service xinetd restart&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You&#039;ll also note that the &amp;lt;code&amp;gt;krb5-kdc&amp;lt;/code&amp;gt; service failed to start. This is okay. &amp;amp;gt; This is because the realm, EXAMPLE.COM, or rather the database file for it (&amp;lt;code&amp;gt;/var/lib/krb5kdc/principal&amp;lt;/code&amp;gt;), has not yet been created. – http://www.rjsystems.nl/en/2100-d6-kerberos-master.php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuring Kerberos ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The first thing we&#039;ll configure is the access control list. Edit &amp;lt;code&amp;gt;/etc/krb5kdc/kadm5.acl&amp;lt;/code&amp;gt; and enable/add the following line:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;*/admin *&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Our primary admin principal will be &amp;lt;code&amp;gt;sysadmin/admin@WICS.UWATERLOO.CA&amp;lt;/code&amp;gt;, so there is no need to add a separate &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; principal to the ACL.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Let&#039;s configure Kerberos client-side in [https://git.uwaterloo.ca/wics/documentation/blob/master/krb5.conf &amp;lt;code&amp;gt;/etc/krb5.conf&amp;lt;/code&amp;gt;]. Consulting with the CSC&#039;s config, [[www.rjsystems.nl/en/2100-d6-kerberos-master.php#rcfg|our favoured setup guide]], and [http://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html the Kerberos krb5.conf manual], we&#039;ll mostly select default settings. Notable additions include&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[libdefaults]&lt;br /&gt;
        allow_weak_crypto = false  # default is currently false but hey&lt;br /&gt;
&lt;br /&gt;
        # If DNS breaks we don&#039;t want auth to fail&lt;br /&gt;
        dns_lookup_kdc = false&lt;br /&gt;
        dns_lookup_realm = false&lt;br /&gt;
&lt;br /&gt;
[logging]&lt;br /&gt;
        kdc = FILE:/var/log/krb5kdc.log&lt;br /&gt;
        admin_server = FILE:/var/log/kadmin.log&lt;br /&gt;
        default = FILE:/var/log/krb5.log&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We also want to ensure we&#039;re using good crypto for our Key Distribution Center, so let&#039;s set that up next in [https://git.uwaterloo.ca/wics/documentation/blob/master/kdc.conf &amp;lt;code&amp;gt;/etc/krb5kdc/kdc.conf&amp;lt;/code&amp;gt;]:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[kdcdefaults]&lt;br /&gt;
    kdc_ports = 750,88&lt;br /&gt;
&lt;br /&gt;
[realms]&lt;br /&gt;
    WICS.UWATERLOO.CA = {&lt;br /&gt;
        database_name = /var/lib/krb5kdc/principal&lt;br /&gt;
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab&lt;br /&gt;
        acl_file = /etc/krb5kdc/kadm5.acl&lt;br /&gt;
        key_stash_file = /etc/krb5kdc/stash&lt;br /&gt;
        kdc_ports = 750,88&lt;br /&gt;
        max_life = 12h 0m 0s&lt;br /&gt;
        max_renewable_life = 1d 0h 0m 0s&lt;br /&gt;
        master_key_type = aes256-cts-hmac-sha1-96&lt;br /&gt;
        supported_enctypes = aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal&lt;br /&gt;
        default_principal_flags = +preauth&lt;br /&gt;
    }&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We didn&#039;t choose to create a new krb5 log directory but we should set up logrotate. Create a file [https://git.uwaterloo.ca/wics/documentation/blob/master/logrotate.d.krb5 &amp;lt;code&amp;gt;/etc/logrotate.d/krb5&amp;lt;/code&amp;gt;] with three of the following entries (one for each log file):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;/var/log/FILENAME.log {&lt;br /&gt;
    weekly&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 8&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    postrotate&lt;br /&gt;
            /etc/init.d/SERVICENAME restart &amp;amp;gt; /dev/null&lt;br /&gt;
    endscript&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Make sure you also create those files so the service can write to them:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# touch /var/log/{krb5,krb5kdc,kadmin}.log&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating the Kerberos Realm ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we&#039;re going to create the realm:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# krb5_newrealm&lt;br /&gt;
This script should be run on the master KDC/admin server to initialize&lt;br /&gt;
a Kerberos realm.  It will ask you to type in a master key password.&lt;br /&gt;
This password will be used to generate a key that is stored in&lt;br /&gt;
/etc/krb5kdc/stash.  You should try to remember this password, but it&lt;br /&gt;
is much more important that it be a strong password than that it be&lt;br /&gt;
remembered.  However, if you lose the password and /etc/krb5kdc/stash,&lt;br /&gt;
you cannot decrypt your Kerberos database.&lt;br /&gt;
Loading random data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The script may pause at this point until there is sufficient available entropy to generate a key. Then it will prompt for a password. USE A LONG, RANDOM ONE. THIS PASSWORD IS VERY IMPORTANT.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Initializing database &#039;/var/lib/krb5kdc/principal&#039; for realm&lt;br /&gt;
&#039;WICS.UWATERLOO.CA&#039;,&lt;br /&gt;
master key name &#039;K/M@WICS.UWATERLOO.CA&#039;&lt;br /&gt;
You will be prompted for the database Master Password.&lt;br /&gt;
It is important that you NOT FORGET this password.&lt;br /&gt;
Enter KDC database master key:&lt;br /&gt;
Re-enter KDC database master key to verify:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that your realm is set up you may wish to create an administrative&lt;br /&gt;
principal using the addprinc subcommand of the kadmin.local program.&lt;br /&gt;
Then, this principal can be added to /etc/krb5kdc/kadm5.acl so that&lt;br /&gt;
you can use the kadmin program on other computers.  Kerberos admin&lt;br /&gt;
principals usually belong to a single user and end in /admin.  For&lt;br /&gt;
example, if jruser is a Kerberos administrator, then in addition to&lt;br /&gt;
the normal jruser principal, a jruser/admin principal should be&lt;br /&gt;
created.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to set up DNS information so your clients can find your&lt;br /&gt;
KDC and admin servers.  Doing so is documented in the administration&lt;br /&gt;
guide.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We&#039;ll now configure the default and maximum ticket life for the Kerberos Ticket Granting Ticket (&amp;lt;code&amp;gt;krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&amp;lt;/code&amp;gt;):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# kadmin.local &lt;br /&gt;
Authenticating as principal root/admin@WICS.UWATERLOO.CA with password.&lt;br /&gt;
kadmin.local:  getprinc krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
Principal: krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
Expiration date: [never]&lt;br /&gt;
Last password change: [never]&lt;br /&gt;
Password expiration date: [none]&lt;br /&gt;
Maximum ticket life: 0 days 12:00:00&lt;br /&gt;
Maximum renewable life: 1 day 00:00:00&lt;br /&gt;
Last modified: Thu Dec 03 03:59:04 UTC 2015 (db_creation@WICS.UWATERLOO.CA)&lt;br /&gt;
Last successful authentication: [never]&lt;br /&gt;
Last failed authentication: [never]&lt;br /&gt;
Failed password attempts: 0&lt;br /&gt;
Number of keys: 2&lt;br /&gt;
Key: vno 1, aes256-cts-hmac-sha1-96, no salt&lt;br /&gt;
Key: vno 1, aes128-cts-hmac-sha1-96, no salt&lt;br /&gt;
MKey: vno 1&lt;br /&gt;
Attributes: REQUIRES_PRE_AUTH&lt;br /&gt;
Policy: [none]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Let&#039;s set the max life to 4 hours and the renewable life to 10 hours, for extra security.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;kadmin.local:  modprinc -maxlife &amp;amp;quot;4 hour&amp;amp;quot; -maxrenewlife &amp;amp;quot;10 hour&amp;amp;quot; krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
Principal &amp;amp;quot;krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&amp;amp;quot; modified.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Adding Principals ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We need some root users in our system in order to bootstrap the rest, so let&#039;s create our sysadmin user, and give them our root password for authentication:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# kadmin.local&lt;br /&gt;
Authenticating as principal root/admin@WICS.UWATERLOO.CA with password.&lt;br /&gt;
kadmin.local:  addprinc sysadmin/admin&lt;br /&gt;
WARNING: no policy specified for sysadmin/admin@WICS.UWATERLOO.CA; defaulting to no policy&lt;br /&gt;
Enter password for principal &amp;amp;quot;sysadmin/admin@WICS.UWATERLOO.CA&amp;amp;quot;: &lt;br /&gt;
Re-enter password for principal &amp;amp;quot;sysadmin/admin@WICS.UWATERLOO.CA&amp;amp;quot;: &lt;br /&gt;
Principal &amp;amp;quot;sysadmin/admin@WICS.UWATERLOO.CA&amp;amp;quot; created.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we need to add a principal and keytab for our KDC host. While &amp;lt;code&amp;gt;addprinc -randkey&amp;lt;/code&amp;gt; does add a key, we need to use &amp;lt;code&amp;gt;ktadd&amp;lt;/code&amp;gt; to ensure it&#039;s copied over to the client host (in this case, auth1). &lt;br /&gt;
&lt;br /&gt;
  (&#039;&#039;&#039;keytab:&#039;&#039;&#039; a key table file containing one or more keys. A host or service uses a keytab file in much the same way as a user uses his/her password.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ kadmin -p sysadmin/admin&lt;br /&gt;
Authenticating as principal sysadmin/admin with password.&lt;br /&gt;
Password for sysadmin/admin@WICS.UWATERLOO.CA:&lt;br /&gt;
kadmin:  addprinc -randkey host/auth1.wics.uwaterloo.ca&lt;br /&gt;
WARNING: no policy specified for&lt;br /&gt;
host/auth1.wics.uwaterloo.ca@WICS.UWATERLOO.CA; defaulting to no policy&lt;br /&gt;
Principal &amp;amp;quot;host/auth1.wics.uwaterloo.ca@WICS.UWATERLOO.CA&amp;amp;quot; created.&lt;br /&gt;
kadmin:  ktadd host/auth1.wics.uwaterloo.ca&lt;br /&gt;
Entry for principal host/auth1.wics.uwaterloo.ca with kvno 2, encryption type&lt;br /&gt;
aes256-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&lt;br /&gt;
Entry for principal host/auth1.wics.uwaterloo.ca with kvno 2, encryption type&lt;br /&gt;
aes128-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we can test that the KDC can grant principals tickets:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ kinit sysadmin/admin&lt;br /&gt;
Password for sysadmin/admin@WICS.UWATERLOO.CA: &lt;br /&gt;
$ klist&lt;br /&gt;
Ticket cache: FILE:/tmp/krb5cc_0&lt;br /&gt;
Default principal: sysadmin/admin@WICS.UWATERLOO.CA&lt;br /&gt;
Valid starting       Expires              Service principal&lt;br /&gt;
12/03/2015 05:31:38  12/03/2015 09:31:38  krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
   renew until 12/03/2015 15:31:38&lt;br /&gt;
$ kdestroy&lt;br /&gt;
$ klist&lt;br /&gt;
klist: Credentials cache file &#039;/tmp/krb5cc_0&#039; not found&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, we&#039;ll probably want to add principals for any users that we created in LDAP. We can do this in &amp;lt;code&amp;gt;weo&amp;lt;/code&amp;gt; using the following command, and we can even test that principal after its creation:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ python weo.py --add-krb-princ --username=ehashman&lt;br /&gt;
Okay, adding Kerberos principal ehashman@WICS.UWATERLOO.CA&lt;br /&gt;
Enter Kerberos admin password: &lt;br /&gt;
Enter password for principal ehashman@WICS.UWATERLOO.CA: &lt;br /&gt;
Retype password: &lt;br /&gt;
Adding Kerberos principal...&lt;br /&gt;
Principal ehashman@WICS.UWATERLOO.CA successfully added.&lt;br /&gt;
$ kinit ehashman&lt;br /&gt;
Password for ehashman@WICS.UWATERLOO.CA: &lt;br /&gt;
$ klist&lt;br /&gt;
Ticket cache: FILE:/tmp/krb5cc_1000&lt;br /&gt;
Default principal: ehashman@WICS.UWATERLOO.CA&lt;br /&gt;
Valid starting     Expires            Service principal&lt;br /&gt;
15-12-03 17:36:22  15-12-03 21:36:22  krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
 renew until 15-12-04 03:36:22&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;From now on, though, Kerberos principals will automatically be generated when we add new users! Like this:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ python weo.py --adduser --username=fhboxwal --fullname=&amp;amp;quot;Fatema Boxwala&amp;amp;quot;&lt;br /&gt;
Okay, adding user fhboxwal&lt;br /&gt;
Please enter the new user&#039;s password: &lt;br /&gt;
Retype password: &lt;br /&gt;
Enter LDAP admin password: &lt;br /&gt;
Enter Kerberos admin password: &lt;br /&gt;
Locking LDAP database...&lt;br /&gt;
Adding user...&lt;br /&gt;
Unlocked database.&lt;br /&gt;
Adding Kerberos principal...&lt;br /&gt;
User fhboxwal successfully added.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Awesome! Now we&#039;re ready to configure Kerberos for clients.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting Up Client Machines with SSSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;On your machine of choice, install the Kerberos client packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install krb5-user&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now copy over your Kerberos config, [https://git.uwaterloo.ca/wics/documentation/blob/master/krb5.conf &amp;lt;code&amp;gt;krb5.conf&amp;lt;/code&amp;gt;], into &amp;lt;code&amp;gt;/etc/krb5.conf&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, set up a host keytab for the local machine:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# kadmin -p sysadmin/admin&lt;br /&gt;
Authenticating as principal sysadmin/admin with password.&lt;br /&gt;
Password for sysadmin/admin@WICS.UWATERLOO.CA: &lt;br /&gt;
kadmin:  addprinc -randkey host/mother-goose.wics.uwaterloo.ca&lt;br /&gt;
WARNING: no policy specified for host/mother-goose.wics.uwaterloo.ca@WICS.UWATERLOO.CA; defaulting to no policy&lt;br /&gt;
Principal &amp;amp;quot;host/mother-goose.wics.uwaterloo.ca@WICS.UWATERLOO.CA&amp;amp;quot; created.&lt;br /&gt;
kadmin:  ktadd host/mother-goose.wics.uwaterloo.ca&lt;br /&gt;
Entry for principal host/mother-goose.wics.uwaterloo.ca with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&lt;br /&gt;
Entry for principal host/mother-goose.wics.uwaterloo.ca with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;In order to configure authentication, we&#039;ll use a package called SSSD. (It has 234823840 dependencies.) Install it and its utilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install sssd sssd-tools&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Next, copy over the following configs:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/ldap.conf &amp;lt;code&amp;gt;/etc/ldap/ldap.conf&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/sssd.conf &amp;lt;code&amp;gt;/etc/sssd/sssd.conf&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/sshd_config &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/ssh_config &amp;lt;code&amp;gt;/etc/ssh/ssh_config&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/hosts &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;] (because what the heck)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Restart &amp;lt;code&amp;gt;sssd&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt;. The former can be very temperamental:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service ssh restart&lt;br /&gt;
# service sssd restart&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Test that this all worked by attempting to log in:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# Just try logging in&lt;br /&gt;
$ ssh me@machine.wics.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
# Try logging in using Kerberos&lt;br /&gt;
$ kinit me&lt;br /&gt;
$ ssh -o GSSAPIAuthentication=yes me@machine.wics.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
# Test that sudo is working&lt;br /&gt;
machine:~$ sudo -i&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tools for Debugging SSSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;It turns out &amp;lt;code&amp;gt;sssd&amp;lt;/code&amp;gt; is not the greatest at telling us things. If it starts breaking, stop it and start it in the foreground in debugging mode:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service sssd stop&lt;br /&gt;
# sssd -d 5 -i&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Some problems with &amp;lt;code&amp;gt;sssd&amp;lt;/code&amp;gt; may be cache-related, and restarting it does not clear the cache. If you need to invalidate the cache, run&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sss_cache -E&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Password Resets ===&lt;br /&gt;
To change your own password you can run passwd on any of the club&#039;s machines.&lt;br /&gt;
&lt;br /&gt;
Changing other users&#039; passwords&lt;br /&gt;
* ssh auth1&lt;br /&gt;
* sudo kadmin.local&lt;br /&gt;
* cpw username&lt;br /&gt;
* Enter new password and confirm&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
&lt;br /&gt;
[http://web.archive.org/web/20120202205851/http://cryptnet.net/mirrors/docs/krb5api.html API Documentation.] While not even close to enough to let you do most things that you&#039;d want to do with Kerberos (and also being somewhat woefully out-of-date, considering it&#039;s from 1996), it&#039;s at least a start.&lt;br /&gt;
&lt;br /&gt;
=== Expiring Passwords ===&lt;br /&gt;
&lt;br /&gt;
If you are on syscom, you can force a user to change their password by doing this:&lt;br /&gt;
* ssh auth1&lt;br /&gt;
* sudo kadmin.local&lt;br /&gt;
* modify_principal +needchange [username]&lt;br /&gt;
&lt;br /&gt;
=== Suspending an Account ===&lt;br /&gt;
&lt;br /&gt;
If you are on syscom, you can prevent a user from logging with a Kerberos ticket by doing this:&lt;br /&gt;
* ssh auth1&lt;br /&gt;
* sudo kadmin.local&lt;br /&gt;
* modify_principal -allow_tix [username]&lt;br /&gt;
If you are seriously locking out an account, you may want to do some other things as well, including but not limited to changing the user&#039;s password (prevents password login) and changing the ownership and permissions on .ssh/authorized_keys* (prevents SSH key login). Don&#039;t do these things without a strong reason (but know how to do them when the time comes).&lt;br /&gt;
&lt;br /&gt;
=== bofh&#039;s Kerberos5 cheat sheet, or &amp;quot;what does *that* error message mean, exactly?&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* If GSSAPI complains about &amp;quot;Wrong Principal in Request&amp;quot;, make sure there&#039;s no clockskew on the machine trying to get the service ticket and the machine running the service that you are trying to get a GSS token to. This will cause this error for some insane reason, despite there being ANOTHER message for clockskew that specifically says &amp;quot;your clocks are off&amp;quot; - it just never seems to be used in the source code anywhere (as of MIT-KRB5 1.9, at least).&lt;br /&gt;
* There are some &amp;quot;generic&amp;quot; errors that are hard to debug. A few possible causes: unreadable krb5.keytab, reverse resolution of a host does not match its principal.&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=File:Kerberos.png&amp;diff=4015</id>
		<title>File:Kerberos.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=File:Kerberos.png&amp;diff=4015"/>
		<updated>2016-09-14T01:16:52Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=3972</id>
		<title>Virtualization (LXC Containers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=3972"/>
		<updated>2016-06-01T21:03:15Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: WiCS LXC docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2009, we use [http://lxc.sourceforge.net/ Linux containers] to maintain virtual machines, most notably [[Machine_List#caffeine|caffeine]], which is hosted on [[Machine_List#glomag|glomag]]. The various commands to manipulate Linux containers are prefixed with &amp;quot;lxc-&amp;quot;; see their individual manpages for usage.&lt;br /&gt;
&lt;br /&gt;
== Management Quick Guide ==&lt;br /&gt;
&lt;br /&gt;
To manage containers, use the &amp;lt;tt&amp;gt;lxc-*&amp;lt;/tt&amp;gt; tools, which require root privilege. Some examples (replace &amp;lt;tt&amp;gt;caffeine&amp;lt;/tt&amp;gt; with the appropriate container name):&lt;br /&gt;
&lt;br /&gt;
 # check if caffeine is running&lt;br /&gt;
 lxc-info -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # start caffeine in the background&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine gracefully&lt;br /&gt;
 lxc-halt -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine forcefully&lt;br /&gt;
 lxc-stop -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # launch a TTY console for the container&lt;br /&gt;
 lxc-console -n caffeine&lt;br /&gt;
&lt;br /&gt;
To install Linux container support on a recent Debian (squeeze or newer) system:&lt;br /&gt;
* Install the &amp;lt;tt&amp;gt;lxc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;bridge-utils&amp;lt;/tt&amp;gt; packages.&lt;br /&gt;
* Create a bridged network interface (this can be configured in &amp;lt;tt&amp;gt;/etc/network/interfaces&amp;lt;/tt&amp;gt; as though it were a normal Ethernet device, with the additional &amp;lt;tt&amp;gt;bridge_ports&amp;lt;/tt&amp;gt; parameter. This is usually called &amp;lt;tt&amp;gt;br0&amp;lt;/tt&amp;gt; (can be created manually with &amp;lt;tt&amp;gt;brctl&amp;lt;/tt&amp;gt;). LXC will create a virtual Ethernet device and add it to the bridge when each container starts.&lt;br /&gt;
&lt;br /&gt;
To start caffeine, run the following command as root on glomag:&lt;br /&gt;
&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
&lt;br /&gt;
Containers are stored on the host filesystem in /var/lib/lxc (root filesystems are symlinked to the appropriate directory on /vm).&lt;br /&gt;
&lt;br /&gt;
== ehashman&#039;s Guide to LXC on Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Configuring the host machine ===&lt;br /&gt;
&lt;br /&gt;
First, install all required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install lxc bridge-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Setting up ethernet bridging ====&lt;br /&gt;
&lt;br /&gt;
Next, create an ethernet bridge for the container. Edit &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# The primary network interface&lt;br /&gt;
#auto eth0&lt;br /&gt;
#iface eth0 inet static&lt;br /&gt;
#       address 129.97.134.200&lt;br /&gt;
#       netmask 255.255.255.0&lt;br /&gt;
#       gateway 129.97.134.1&lt;br /&gt;
&lt;br /&gt;
# Bridge ethernet for containers&lt;br /&gt;
auto br0&lt;br /&gt;
iface br0 inet static&lt;br /&gt;
    bridge_ports eth0&lt;br /&gt;
    address 129.97.134.200&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    gateway 129.97.134.1&lt;br /&gt;
    dns-nameservers 129.97.2.1 129.97.129.10&lt;br /&gt;
    dns-search wics.uwaterloo.ca uwaterloo.ca&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cross your fingers and restart networking for your configuration to take effect!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# service networking restart&lt;br /&gt;
// bash enter to see if you lost connectivity and have to make a machine room trip&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Setting up storage ====&lt;br /&gt;
&lt;br /&gt;
Last, allocate some space in your volume group to put the container root on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Find the correct volume group to put the container on&lt;br /&gt;
# vgdisplay&lt;br /&gt;
&lt;br /&gt;
// Create the volume in the appropriate volume group&lt;br /&gt;
# lvcreate -L 20G -n container vg0&lt;br /&gt;
&lt;br /&gt;
// Find it in the dev mapper&lt;br /&gt;
# ls /dev/mapper/&lt;br /&gt;
&lt;br /&gt;
// Create a filesystem on it&lt;br /&gt;
# mkfs.ext4 /dev/mapper/vg0-container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Last, add it to &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/dev/mapper/vg0-container /vm/container        ext4    defaults        0       2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Test the entry with &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# mount /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you&#039;re done!&lt;br /&gt;
&lt;br /&gt;
=== Creating a new container ===&lt;br /&gt;
&lt;br /&gt;
Create a new container using &amp;lt;code&amp;gt;lxc-create&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Create new container &amp;amp;quot;container&amp;amp;quot; with root fs located at /vm/container&lt;br /&gt;
# lxc-create --dir=/vm/container -n container --template download&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will prompt you for distribution, release, and architecture. (Architecture &#039;&#039;must&#039;&#039; match host machine.)&lt;br /&gt;
&lt;br /&gt;
Take this time to review its config in &amp;lt;code&amp;gt;/var/lib/lxc/container/config&amp;lt;/code&amp;gt;, and tell it to auto-start if you like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Auto-start the container on boot&lt;br /&gt;
lxc.start.auto = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// List containers, -f for fancy&lt;br /&gt;
# lxc-ls -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
to ensure that your container has been successfully created; it should be listed. You can also list its root directory if you like. To start it in the background and obtain a root shell, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Start and attach a root shell&lt;br /&gt;
# lxc-start -d -n container&lt;br /&gt;
# lxc-attach -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Migrating a container between hosts ===&lt;br /&gt;
&lt;br /&gt;
Start by shutting the container down:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;root@container:~# halt&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then make a tarball of the container&#039;s filesystem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -czvf container.tar.gz /vm/container&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copy it to its target destination, along with the configs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp container.tar.gz new-host:&lt;br /&gt;
$ scp -r /var/lib/lxc/container/ new-host:/var/lib/lxc/&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now carefully extract it. &#039;&#039;&#039;If you haven&#039;t already, provision storage and ethernet per the container creation section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes, we really do want to stick it directly into &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# tar --numeric-owner -xzvf container.tar.gz -C /&amp;lt;/pre&amp;gt;&lt;br /&gt;
Verify the container&#039;s existence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-ls -f&lt;br /&gt;
NAME       STATE    IPV4  IPV6  AUTOSTART  &lt;br /&gt;
-----------------------------------------&lt;br /&gt;
container  STOPPED  -     -     YES   &amp;lt;/pre&amp;gt;&lt;br /&gt;
Now just start it on up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# lxc-start -d -n container&amp;lt;/pre&amp;gt;&lt;br /&gt;
And test by trying an ssh in!&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3971</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3971"/>
		<updated>2016-06-01T20:51:53Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Machine/System Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Wiki of the [[Computer Science Club]]. Feel free to start adding pages and information.&lt;br /&gt;
&lt;br /&gt;
[[Special:AllPages]]&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[ New Member Guide]]&lt;br /&gt;
* [[Budget Guide]]&lt;br /&gt;
* [[Club Hosting]]&lt;br /&gt;
* [[Web Hosting]]&lt;br /&gt;
* [[Exec Manual]]&lt;br /&gt;
* [[Imapd Guide]]&lt;br /&gt;
* [[MEF Guide]]&lt;br /&gt;
* [[Office Policies]]&lt;br /&gt;
* [[Office Staff]]&lt;br /&gt;
* [[How to IRC]]&lt;br /&gt;
* [[Talks Guide]]&lt;br /&gt;
* [[SCS Guide]]&lt;br /&gt;
* [[Kerberos | Password Reset ]]&lt;br /&gt;
* [[Disk Drive RMA Process]]&lt;br /&gt;
* [[ IPMI101 ]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Meetings]]&lt;br /&gt;
* [[Talks]]&lt;br /&gt;
* [[Projects]]&lt;br /&gt;
* [[Industry Opportunities]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Machine/System Documentation ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Backups]]&lt;br /&gt;
* [[ceo]]&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[Debian Repository]]&lt;br /&gt;
* [[Digital Cutter]]&lt;br /&gt;
* [[Directory Services]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Hardware]]&lt;br /&gt;
* [[Kerberos]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Machine List]]&lt;br /&gt;
* [[Mail]]&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Mirror]]&lt;br /&gt;
* [[Music]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[NetApp]]&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* [[New CSC Machine]]&lt;br /&gt;
* [[NFS/Kerberos]]&lt;br /&gt;
* [[OID Assignment]]&lt;br /&gt;
* [[Printing]]&lt;br /&gt;
* [[Pulseaudio]]&lt;br /&gt;
* [[Robot Arm]]&lt;br /&gt;
* [[Scratch]]&lt;br /&gt;
* [[SNMP]]&lt;br /&gt;
* [[Serial Connections]]&lt;br /&gt;
* [[SSL]]&lt;br /&gt;
* [[Switches]]&lt;br /&gt;
* [[Syscom Todo]]&lt;br /&gt;
* [[Systems Committee]]&lt;br /&gt;
* [[UID/GID Assignment]]&lt;br /&gt;
* [[Webcams]]&lt;br /&gt;
* [[Webmail]]&lt;br /&gt;
* [[Website]]&lt;br /&gt;
* [[Virtualization (LXC Containers)]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Budget]]&lt;br /&gt;
* [[Executive]]&lt;br /&gt;
* [[Past Executive]]&lt;br /&gt;
* [[Frosh]]&lt;br /&gt;
* [[History]]&lt;br /&gt;
* [[Library]]&lt;br /&gt;
* [[MEF Proposals]]&lt;br /&gt;
* [[Term Notes]]&lt;br /&gt;
* [[Proposed Constitution Changes]]&lt;br /&gt;
&amp;lt;/div&amp;gt; __NOTOC__&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=LDAP&amp;diff=3970</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=LDAP&amp;diff=3970"/>
		<updated>2016-06-01T20:51:18Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: WiCS Wiki article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We use [http://www.openldap.org/ OpenLDAP] for directory services. Our primary LDAP server is [[Machine_List#auth1|auth1]] and our secondary LDAP server is [[Machine_List#auth2|auth2]].&lt;br /&gt;
&lt;br /&gt;
=== ehashman&#039;s Guide to Setting up OpenLDAP on Debian ===&lt;br /&gt;
&lt;br /&gt;
Welcome to my nightmare.&lt;br /&gt;
&lt;br /&gt;
==== What is LDAP? ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;LDAP:&#039;&#039;&#039; Lightweight Directory Access Protocol&lt;br /&gt;
&lt;br /&gt;
An open, vendor-neutral, industry standard application protocol for accessing and maintaining distributed directory information services over an Internet Protocol (IP) network. — [https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol Wikipedia: LDAP]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
In this case, &amp;amp;quot;directory&amp;amp;quot; refers to the user directory, like on an old-school Rolodex. Many groups use LDAP to maintain their user directory, including the University (the &amp;amp;quot;WatIAM&amp;amp;quot; identity management system), the Computer Science Club, and even the UW Amateur Radio Club.&lt;br /&gt;
&lt;br /&gt;
This is a guide documenting how to set up LDAP on a Debian Linux system.&lt;br /&gt;
&lt;br /&gt;
==== First steps ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that openldap is installed on the machine:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install slapd ldap-utils&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Debian will do a lot of magic and set up a skeleton LDAP server and get it running. We need to configure that further.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Let&#039;s set up logging before we forget. Create the following files in &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# mkdir /var/log/ldap&lt;br /&gt;
# touch /var/log/ldap.log&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set ownership correctly:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# chown openldap:openldap /var/log/ldap&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set up rsyslog to dump the LDAP logs into &amp;lt;code&amp;gt;/var/log/ldap.log&amp;lt;/code&amp;gt; by adding the following lines:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# vim /etc/rsyslog.conf&lt;br /&gt;
...&lt;br /&gt;
# Grab ldap logs, don&#039;t duplicate in syslog&lt;br /&gt;
local4.*                        /var/log/ldap.log&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set up log rotation for these by creating the file [https://git.uwaterloo.ca/wics/documentation/blob/master/ldap/logrotate.d.ldap &amp;lt;code&amp;gt;/etc/logrotate.d/ldap&amp;lt;/code&amp;gt;] with the following contents:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;/var/log/ldap/*log {&lt;br /&gt;
    weekly&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 1000&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    create 0640 openldap adm&lt;br /&gt;
    postrotate&lt;br /&gt;
        if [ -f /var/run/slapd/slapd.pid ]; then&lt;br /&gt;
            /etc/init.d/slapd restart &amp;amp;gt;/dev/null 2&amp;amp;gt;&amp;amp;amp;1&lt;br /&gt;
        fi&lt;br /&gt;
    endscript&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/var/log/ldap.log {&lt;br /&gt;
    weekly&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 24&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;As of OpenLDAP 2.4, it doesn&#039;t actually create a config file for us. Apparently, this is a &amp;amp;quot;feature&amp;amp;quot;: LDAP maintainers think we should want to set this up via dynamic queries. We don&#039;t, so the first thing we need is our [https://git.uwaterloo.ca/wics/documentation/blob/master/ldap/slapd.conf &amp;lt;code&amp;gt;slapd.conf&amp;lt;/code&amp;gt;] file.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Building &amp;lt;code&amp;gt;slapd.conf&amp;lt;/code&amp;gt; from scratch =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get a copy to work with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# scp uid@auth1.csclub.uwaterloo.ca:/etc/ldap/slapd.conf /etc/ldap/  ## you need CSC root for this&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You&#039;ll want to comment out the TLS lines, and anything referring to Kerberos and access for now. You&#039;ll also want to comment out lines specifically referring to syscom and office staff.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure you remove the reference to &amp;lt;code&amp;gt;nonMemberTerm&amp;lt;/code&amp;gt; as an index, as we&#039;re going to remove this field.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You&#039;ll also need to generate a root password for the LDAP to bootstrap auth, like so:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# slappasswd&lt;br /&gt;
New password: &lt;br /&gt;
Re-enter new password:&lt;br /&gt;
{SSHA}longhash&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Add this line below &amp;lt;code&amp;gt;rootdn&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;slapd.conf&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;rootpw          {SSHA}longhash&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we want to edit all instances of &amp;amp;quot;csclub&amp;amp;quot; to be &amp;amp;quot;wics&amp;amp;quot; instead, e.g.:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;suffix     &amp;amp;quot;dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&lt;br /&gt;
rootdn     &amp;amp;quot;cn=root,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, we need to grab all the relevant schemas:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;scp -r uid@auth1.csclub.uwaterloo.ca:/etc/ldap/schema/ /tmp/schemas&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use the include directives to help you find the ones you need. I noticed we were missing &amp;lt;code&amp;gt;sudo.schema&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;csc.schema&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;rfc2307bis.schema&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open up the [https://git.uwaterloo.ca/wics/documentation/blob/master/ldap/csc.schema &amp;lt;code&amp;gt;csc.schema&amp;lt;/code&amp;gt;] for editing; we&#039;re not using it verbatim. Remove the attributes &amp;lt;code&amp;gt;studentid&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nonMemberTerm&amp;lt;/code&amp;gt; and the objectclass &amp;lt;code&amp;gt;club&amp;lt;/code&amp;gt;. Also make sure you change the OID so we don&#039;t clash with the CSC. Because we didn&#039;t want to go through the process of requesting a [http://pen.iana.org/pen/PenApplication.page PEN number], we chose arbitrarily to use 26338, which belongs to IWICS Inc.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We also need to can the auto-generated config files, so do that:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# rm -rf /etc/openldap/slapd.d/*&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Also nuke the auto-generated database:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# rm /var/lib/ldap/__db.*&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure the database:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# cp /usr/share/slapd/DB_CONFIG /var/lib/ldap/&lt;br /&gt;
# chown openldap:openldap /var/lib/ldap/DB_CONFIG &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we can generate the new configuration files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;And ensure that the permissions are all set correctly, lest this break something:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# chown -R openldap:openldap /etc/ldap/slapd.d&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;If at this point you get a nasty error, such as&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;5657d4db hdb_db_open: database &amp;amp;quot;dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;: db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).&lt;br /&gt;
5657d4db backend_startup_one (type=hdb, suffix=&amp;amp;quot;dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;): bi_db_open failed! (2)&lt;br /&gt;
slap_startup failed (test would succeed using the -u switch)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Just try restarting slapd, and see if that fixes the problem:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service slapd stop&lt;br /&gt;
# service slapd start&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Congratulations! Your LDAP service is now configured and running.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Getting TLS Up and Running ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now that we have our LDAP service, we&#039;ll want to be able to serve encrypted traffic. This is especially important for any remote access, since binding to LDAP (i.e. sending it a password for auth) occurs over plaintext, and we don&#039;t want to leak our admin password.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Our first step is to copy our SSL certificates into the correct places. Public ones go into &amp;lt;code&amp;gt;/etc/ssl/certs/&amp;lt;/code&amp;gt; and private ones go into &amp;lt;code&amp;gt;/etc/ssl/private/&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Since the LDAP daemon needs to be able to read our private cert, we need to grant LDAP access to the private folder:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# chgrp openldap /etc/ssl/private &lt;br /&gt;
# chmod g+x /etc/ssl/private&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, uncomment the TLS-related settings in &amp;lt;code&amp;gt;slapd.conf&amp;lt;/code&amp;gt;. These are &amp;lt;code&amp;gt;TLSCertificateFile&amp;lt;/code&amp;gt; (the public cert), &amp;lt;code&amp;gt;TLSCertificateKeyFile&amp;lt;/code&amp;gt; (the private key), &amp;lt;code&amp;gt;TLSCACertificateFile&amp;lt;/code&amp;gt; (the intermediate CA cert), and &amp;lt;code&amp;gt;TLSVerifyClient&amp;lt;/code&amp;gt; (set to &amp;amp;quot;allow&amp;amp;quot;).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# enable TLS connections&lt;br /&gt;
TLSCertificateFile      /etc/ssl/certs/wics-wildcard.crt&lt;br /&gt;
TLSCertificateKeyFile   /etc/ssl/private/wics-wildcard.key&lt;br /&gt;
&lt;br /&gt;
# enable TLS client authentication&lt;br /&gt;
TLSCACertificateFile    /etc/ssl/certs/GlobalSign_Intermediate_Root_SHA256_G2.pem&lt;br /&gt;
TLSVerifyClient         allow&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Update all your LDAP settings:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# rm -rf /etc/openldap/slapd.d/*&lt;br /&gt;
# slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/&lt;br /&gt;
# chown -R openldap:openldap /etc/ldap/slapd.d&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;And last, ensure that LDAP will actually serve &amp;lt;code&amp;gt;ldaps://&amp;lt;/code&amp;gt; by modifying the init script variables in &amp;lt;code&amp;gt;/etc/default/&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# vim /etc/default/slapd&lt;br /&gt;
...&lt;br /&gt;
SLAPD_SERVICES=&amp;amp;quot;ldap:/// ldapi:/// ldaps:///&amp;amp;quot;&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now you can restart the LDAP server:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service slapd restart&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;And assuming this is successful, test to ensure LDAP is serving on port 636 for &amp;lt;code&amp;gt;ldaps://&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# netstat -ntaup&lt;br /&gt;
Active Internet connections (servers and established)&lt;br /&gt;
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name&lt;br /&gt;
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      22847/slapd     &lt;br /&gt;
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      22847/slapd &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Populating the Database ====&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll need to start adding objects to the database. While we&#039;ll want to mostly do this programmatically, there are a few entries we&#039;ll need to bootstrap.&lt;br /&gt;
&lt;br /&gt;
===== Root Entries =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Start by creating a file [https://git.uwaterloo.ca/wics/documentation/blob/master/ldap/tree.ldif &amp;lt;code&amp;gt;tree.ldif&amp;lt;/code&amp;gt;] to create a few necessary &amp;amp;quot;roots&amp;amp;quot; in our LDAP tree, with the contents:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;dn: dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: dcObject&lt;br /&gt;
objectClass: organization&lt;br /&gt;
o: Women in Computer Science&lt;br /&gt;
dc: wics&lt;br /&gt;
&lt;br /&gt;
dn: ou=People,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: organizationalUnit&lt;br /&gt;
ou: People&lt;br /&gt;
&lt;br /&gt;
dn: ou=Group,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: organizationalUnit&lt;br /&gt;
ou: Group&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now attempt an LDAP add, using the password you set earlier:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# ldapadd -cxWD cn=root,dc=wics,dc=uwaterloo,dc=ca -f tree.ldif&lt;br /&gt;
Enter LDAP Password:&lt;br /&gt;
adding new entry &amp;amp;quot;dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
adding new entry &amp;amp;quot;ou=People,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
adding new entry &amp;amp;quot;ou=Group,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Test that everything turned out okay, by performing a query of the entire database:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# ldapsearch -x -h localhost&lt;br /&gt;
# extended LDIF&lt;br /&gt;
#&lt;br /&gt;
# LDAPv3&lt;br /&gt;
# base &amp;amp;lt;dc=wics,dc=uwaterloo,dc=ca&amp;amp;gt; (default) with scope subtree&lt;br /&gt;
# filter: (objectclass=*)&lt;br /&gt;
# requesting: ALL&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# wics.uwaterloo.ca&lt;br /&gt;
dn: dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: dcObject&lt;br /&gt;
objectClass: organization&lt;br /&gt;
o: Women in Computer Science&lt;br /&gt;
dc: wics&lt;br /&gt;
&lt;br /&gt;
# People, wics.uwaterloo.ca&lt;br /&gt;
dn: ou=People,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: organizationalUnit&lt;br /&gt;
ou: People&lt;br /&gt;
&lt;br /&gt;
# Group, wics.uwaterloo.ca&lt;br /&gt;
dn: ou=Group,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: organizationalUnit&lt;br /&gt;
ou: Group&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 2&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 4&lt;br /&gt;
# numEntries: 3&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Users and Groups =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, add users to track the current GID and UID. This will save us from querying the entire database every time we make a new user or group. Create this file, [https://git.uwaterloo.ca/wics/documentation/blob/master/ldap/nextxid.ldif &amp;lt;code&amp;gt;nextxid.ldif&amp;lt;/code&amp;gt;]:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;dn: uid=nextuid,ou=People,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
cn: nextuid&lt;br /&gt;
objectClass: account&lt;br /&gt;
objectClass: posixAccount&lt;br /&gt;
objectClass: top&lt;br /&gt;
uidNumber: 20000&lt;br /&gt;
gidNumber: 20000&lt;br /&gt;
homeDirectory: /dev/null&lt;br /&gt;
&lt;br /&gt;
dn: cn=nextgid,ou=Group,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: group&lt;br /&gt;
objectClass: posixGroup&lt;br /&gt;
objectClass: top&lt;br /&gt;
gidNumber: 10000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You&#039;ll see here that our first GID is 10000 and our first UID is 20000.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now add them, like you did with the roots of the tree:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# ldapadd -cxWD cn=root,dc=wics,dc=uwaterloo,dc=ca -f nextxid.ldif&lt;br /&gt;
Enter LDAP Password:&lt;br /&gt;
adding new entry &amp;amp;quot;uid=nextuid,ou=People,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
adding new entry &amp;amp;quot;cn=nextgid,ou=Group,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Special &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; Entries =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We also need to add a sudoers OU with a defaults object for default sudo settings. We also need entries for syscom, such that members of the syscom group can use sudo on all hosts, and for termcom, whose members can use sudo on only the office terminals. Call this one [https://git.uwaterloo.ca/wics/documentation/blob/master/ldap/sudoers.ldif &amp;lt;code&amp;gt;sudoers.ldif&amp;lt;/code&amp;gt;]:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;dn: ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: organizationalUnit&lt;br /&gt;
ou: SUDOers&lt;br /&gt;
&lt;br /&gt;
dn: cn=defaults,ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: top&lt;br /&gt;
objectClass: sudoRole&lt;br /&gt;
cn: defaults&lt;br /&gt;
sudoOption: !lecture&lt;br /&gt;
sudoOption: env_reset&lt;br /&gt;
sudoOption: listpw=never&lt;br /&gt;
sudoOption: mailto=&amp;amp;quot;wics-sys@lists.uwaterloo.ca&amp;amp;quot;&lt;br /&gt;
sudoOption: shell_noargs&lt;br /&gt;
&lt;br /&gt;
dn: cn=%syscom,ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: top&lt;br /&gt;
objectClass: sudoRole&lt;br /&gt;
cn: %syscom&lt;br /&gt;
sudoUser: %syscom&lt;br /&gt;
sudoHost: ALL&lt;br /&gt;
sudoCommand: ALL&lt;br /&gt;
sudoRunAsUser: ALL&lt;br /&gt;
&lt;br /&gt;
dn: cn=%termcom,ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&lt;br /&gt;
objectClass: top&lt;br /&gt;
objectClass: sudoRole&lt;br /&gt;
cn: %termcom&lt;br /&gt;
sudoUser: %termcom&lt;br /&gt;
sudoHost: honk&lt;br /&gt;
sudoHost: hiss&lt;br /&gt;
sudoHost: gosling&lt;br /&gt;
sudoCommand: ALL&lt;br /&gt;
sudoRunAsUser: ALL&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now add them:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# ldapadd -cxWD cn=root,dc=wics,dc=uwaterloo,dc=ca -f sudoers.ldif&lt;br /&gt;
Enter LDAP Password:&lt;br /&gt;
adding new entry &amp;amp;quot;ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
adding new entry &amp;amp;quot;cn=defaults,ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
adding new entry &amp;amp;quot;cn=%syscom,ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
adding new entry &amp;amp;quot;cn=%termcom,ou=SUDOers,dc=wics,dc=uwaterloo,dc=ca&amp;amp;quot;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Last, add some special local groups via [https://git.uwaterloo.ca/wics/documentation/blob/master/ldap/local-groups.ldif &amp;lt;code&amp;gt;local-groups.ldif&amp;lt;/code&amp;gt;]:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# ldapadd -cxWD cn=root,dc=wics,dc=uwaterloo,dc=ca -f local-groups.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
The local groups are special because they usually are present on all systems, but we want to be able to add users to them at the LDAP level. For instance, the audio group controls access to sound equipment, and the adm group controls log read access.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;That&#039;s all the entries we have to add manually! Now we can use software for the rest. See [[weo|&amp;lt;code&amp;gt;weo&amp;lt;/code&amp;gt;]] for more details.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Querying LDAP ===&lt;br /&gt;
&lt;br /&gt;
There are many tools available for issuing LDAP queries. Queries should be issued to &amp;lt;tt&amp;gt;ldap1.csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;. The search base you almost certainly want is &amp;lt;tt&amp;gt;dc=csclub,dc=uwaterloo,dc=ca&amp;lt;/tt&amp;gt;. Read access is available without authentication; [[Kerberos]] is used to authenticate commands which require it.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -x -h ldap1.csclub.uwaterloo.ca -b dc=csclub,dc=uwaterloo,dc=ca uid=ctdalek&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;-x&amp;lt;/tt&amp;gt; option causes &amp;lt;tt&amp;gt;ldapsearch&amp;lt;/tt&amp;gt; to switch to simple authentication rather than trying to authenticate via SASL (which will fail if you do not have a Kerberos ticket).&lt;br /&gt;
&lt;br /&gt;
The University LDAP server (uwldap.uwaterloo.ca) can also be queried like this. Again, use &amp;quot;simple authentication&amp;quot; as read access is available (from on campus) without authentication. SASL authentication will fail without additional parameters.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 ldapsearch -x -h uwldap.uwaterloo.ca -b dc=uwaterloo,dc=ca &amp;quot;cn=Prabhakar Ragde&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Replication ===&lt;br /&gt;
&lt;br /&gt;
While &amp;lt;tt&amp;gt;ldap1.csclub.uwaterloo.ca&amp;lt;/tt&amp;gt; ([[Machine_List#auth1|auth1]]) is the LDAP master, an up-to-date replica is available on &amp;lt;tt&amp;gt;ldap2.csclub.uwaterloo.ca&amp;lt;/tt&amp;gt; ([[Machine_List#auth2|auth2]]).&lt;br /&gt;
&lt;br /&gt;
In order to replicate changes from the master, the slave maintains an authenticated connection to the master which provides it with full read access to all changes.&lt;br /&gt;
&lt;br /&gt;
Specifically, &amp;lt;tt&amp;gt;/etc/systemd/system/k5start-slapd.service&amp;lt;/tt&amp;gt; maintains an active Kerberos ticket for &amp;lt;tt&amp;gt;ldap/auth2.csclub.uwaterloo.ca@CSCLUB.UWATERLOO.CA&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;/var/run/slapd/krb5cc&amp;lt;/tt&amp;gt;. This is then used to authenticate the slave to the server, who maps this principal to &amp;lt;tt&amp;gt;cn=ldap-slave,dc=csclub,dc=uwaterloo,dc=ca&amp;lt;/tt&amp;gt;, which in turn has full read privileges.&lt;br /&gt;
&lt;br /&gt;
In the event of master failure, all hosts should fail LDAP reads seamlessly over to the slave.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Kerberos&amp;diff=3969</id>
		<title>Kerberos</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Kerberos&amp;diff=3969"/>
		<updated>2016-06-01T18:57:01Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Add WiCS Kerberos Docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We use [http://web.mit.edu/Kerberos/ MIT Kerberos 5] for authentication. Our kerberos realm is CSCLUB.UWATERLOO.CA. KDCs run on [[Machine_List#auth1|auth1]] (kdc1) and [[Machine_List#artificial-flavours|artificial-flavours]] (kdc2).&lt;br /&gt;
&lt;br /&gt;
=== ehashman&#039;s guide to MIT Kerberos v5 on Debian ===&lt;br /&gt;
&lt;br /&gt;
==== Preparatory Reading ====&lt;br /&gt;
&lt;br /&gt;
# [http://web.mit.edu/kerberos/dialogue.html Kerberos: A Dialogue in Four Scenes] (&#039;&#039;&#039;&#039;&#039;definitely&#039;&#039;&#039;&#039;&#039; read this)&lt;br /&gt;
# [http://www.roguelynn.com/words/explain-like-im-5-kerberos/ Explain Like I&#039;m 5: Kerberos] (less entertaining than the stage play)&lt;br /&gt;
# [http://www.rjsystems.nl/en/2100-d6-kerberos-master.php A very practical configuration guide to Kerberos on Debian squeeze] (things don&#039;t change much in the Debian world)&lt;br /&gt;
# [http://web.mit.edu/kerberos/krb5-latest/doc/admin/index.html The official Kerberos documentation]&lt;br /&gt;
&lt;br /&gt;
==== Set up host records ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We will need host records to correspond to our Kerberos admin server and key distribution center, &amp;lt;code&amp;gt;kadmin.wics.uwaterloo.ca&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kdc1.wics.uwaterloo.ca&amp;lt;/code&amp;gt;. These can just be A records pointing to our auth server (currently &amp;lt;code&amp;gt;129.97.134.212&amp;lt;/code&amp;gt;).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We can also set up [http://web.mit.edu/kerberos/krb5-latest/doc/admin/realm_config.html special SRV records] as well. This is recommended but not necessary. They look like this:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;_kerberos._udp.wics.uwaterloo.ca          SRV       0 0 88  kdc1.wics.uwaterloo.ca&lt;br /&gt;
_kerberos-master._udp.wics.uwaterloo.ca   SRV       0 0 88  kdc1.wics.uwaterloo.ca&lt;br /&gt;
_kpasswd._udp.wics.uwaterloo.ca           SRV       0 0 464 kdc1.wics.uwaterloo.ca&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You may have guessed that the third integer is the port the service runs on.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install packages ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;First, install some common system utils that may be missing from the fresh container:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install ssh ntpdate xinetd nmap&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do NOT install ntp on the container. Install it on the host system instead. See [[ntp|NTP]] for info on NTP servers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, install the Kerberos server:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install krb5-{admin-server,user}&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;During the install process, &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; will ask you for the following three values, specified below:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Default Kerberos version 5 realm: WICS.UWATERLOO.CA&lt;br /&gt;
Kerberos servers for your realm: kdc1.wics.uwaterloo.ca&lt;br /&gt;
Administrative server for your Kerberos realm: kadmin.wics.uwaterloo.ca&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You&#039;ll encounter this lovely error, from &amp;lt;code&amp;gt;xinetd&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Note: xinetd currently is not fully supported by update-inetd.&lt;br /&gt;
  Please consult /usr/share/doc/xinetd/README.Debian and itox(8).&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To solve this, we create a file &amp;lt;code&amp;gt;/etc/xinetd.d/krb_prop&amp;lt;/code&amp;gt; with the following contents:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;service krb_prop&lt;br /&gt;
{&lt;br /&gt;
    disable     = no&lt;br /&gt;
    socket_type = stream&lt;br /&gt;
    protocol    = tcp&lt;br /&gt;
    user        = root&lt;br /&gt;
    wait        = no&lt;br /&gt;
    server      = /usr/sbin/kpropd&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;And then restart &amp;lt;code&amp;gt;xinetd&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service xinetd restart&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You&#039;ll also note that the &amp;lt;code&amp;gt;krb5-kdc&amp;lt;/code&amp;gt; service failed to start. This is okay. &amp;amp;gt; This is because the realm, EXAMPLE.COM, or rather the database file for it (&amp;lt;code&amp;gt;/var/lib/krb5kdc/principal&amp;lt;/code&amp;gt;), has not yet been created. – http://www.rjsystems.nl/en/2100-d6-kerberos-master.php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuring Kerberos ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The first thing we&#039;ll configure is the access control list. Edit &amp;lt;code&amp;gt;/etc/krb5kdc/kadm5.acl&amp;lt;/code&amp;gt; and enable/add the following line:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;*/admin *&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Our primary admin principal will be &amp;lt;code&amp;gt;sysadmin/admin@WICS.UWATERLOO.CA&amp;lt;/code&amp;gt;, so there is no need to add a separate &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; principal to the ACL.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Let&#039;s configure Kerberos client-side in [https://git.uwaterloo.ca/wics/documentation/blob/master/krb5.conf &amp;lt;code&amp;gt;/etc/krb5.conf&amp;lt;/code&amp;gt;]. Consulting with the CSC&#039;s config, [[www.rjsystems.nl/en/2100-d6-kerberos-master.php#rcfg|our favoured setup guide]], and [http://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html the Kerberos krb5.conf manual], we&#039;ll mostly select default settings. Notable additions include&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[libdefaults]&lt;br /&gt;
        allow_weak_crypto = false  # default is currently false but hey&lt;br /&gt;
&lt;br /&gt;
        # If DNS breaks we don&#039;t want auth to fail&lt;br /&gt;
        dns_lookup_kdc = false&lt;br /&gt;
        dns_lookup_realm = false&lt;br /&gt;
&lt;br /&gt;
[logging]&lt;br /&gt;
        kdc = FILE:/var/log/krb5kdc.log&lt;br /&gt;
        admin_server = FILE:/var/log/kadmin.log&lt;br /&gt;
        default = FILE:/var/log/krb5.log&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We also want to ensure we&#039;re using good crypto for our Key Distribution Center, so let&#039;s set that up next in [https://git.uwaterloo.ca/wics/documentation/blob/master/kdc.conf &amp;lt;code&amp;gt;/etc/krb5kdc/kdc.conf&amp;lt;/code&amp;gt;]:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[kdcdefaults]&lt;br /&gt;
    kdc_ports = 750,88&lt;br /&gt;
&lt;br /&gt;
[realms]&lt;br /&gt;
    WICS.UWATERLOO.CA = {&lt;br /&gt;
        database_name = /var/lib/krb5kdc/principal&lt;br /&gt;
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab&lt;br /&gt;
        acl_file = /etc/krb5kdc/kadm5.acl&lt;br /&gt;
        key_stash_file = /etc/krb5kdc/stash&lt;br /&gt;
        kdc_ports = 750,88&lt;br /&gt;
        max_life = 12h 0m 0s&lt;br /&gt;
        max_renewable_life = 1d 0h 0m 0s&lt;br /&gt;
        master_key_type = aes256-cts-hmac-sha1-96&lt;br /&gt;
        supported_enctypes = aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal&lt;br /&gt;
        default_principal_flags = +preauth&lt;br /&gt;
    }&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We didn&#039;t choose to create a new krb5 log directory but we should set up logrotate. Create a file [https://git.uwaterloo.ca/wics/documentation/blob/master/logrotate.d.krb5 &amp;lt;code&amp;gt;/etc/logrotate.d/krb5&amp;lt;/code&amp;gt;] with three of the following entries (one for each log file):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;/var/log/FILENAME.log {&lt;br /&gt;
    weekly&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 8&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    postrotate&lt;br /&gt;
            /etc/init.d/SERVICENAME restart &amp;amp;gt; /dev/null&lt;br /&gt;
    endscript&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Make sure you also create those files so the service can write to them:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# touch /var/log/{krb5,krb5kdc,kadmin}.log&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating the Kerberos Realm ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we&#039;re going to create the realm:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# krb5_newrealm&lt;br /&gt;
This script should be run on the master KDC/admin server to initialize&lt;br /&gt;
a Kerberos realm.  It will ask you to type in a master key password.&lt;br /&gt;
This password will be used to generate a key that is stored in&lt;br /&gt;
/etc/krb5kdc/stash.  You should try to remember this password, but it&lt;br /&gt;
is much more important that it be a strong password than that it be&lt;br /&gt;
remembered.  However, if you lose the password and /etc/krb5kdc/stash,&lt;br /&gt;
you cannot decrypt your Kerberos database.&lt;br /&gt;
Loading random data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The script may pause at this point until there is sufficient available entropy to generate a key. Then it will prompt for a password. USE A LONG, RANDOM ONE. THIS PASSWORD IS VERY IMPORTANT.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Initializing database &#039;/var/lib/krb5kdc/principal&#039; for realm&lt;br /&gt;
&#039;WICS.UWATERLOO.CA&#039;,&lt;br /&gt;
master key name &#039;K/M@WICS.UWATERLOO.CA&#039;&lt;br /&gt;
You will be prompted for the database Master Password.&lt;br /&gt;
It is important that you NOT FORGET this password.&lt;br /&gt;
Enter KDC database master key:&lt;br /&gt;
Re-enter KDC database master key to verify:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that your realm is set up you may wish to create an administrative&lt;br /&gt;
principal using the addprinc subcommand of the kadmin.local program.&lt;br /&gt;
Then, this principal can be added to /etc/krb5kdc/kadm5.acl so that&lt;br /&gt;
you can use the kadmin program on other computers.  Kerberos admin&lt;br /&gt;
principals usually belong to a single user and end in /admin.  For&lt;br /&gt;
example, if jruser is a Kerberos administrator, then in addition to&lt;br /&gt;
the normal jruser principal, a jruser/admin principal should be&lt;br /&gt;
created.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to set up DNS information so your clients can find your&lt;br /&gt;
KDC and admin servers.  Doing so is documented in the administration&lt;br /&gt;
guide.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We&#039;ll now configure the default and maximum ticket life for the Kerberos Ticket Granting Ticket (&amp;lt;code&amp;gt;krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&amp;lt;/code&amp;gt;):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# kadmin.local &lt;br /&gt;
Authenticating as principal root/admin@WICS.UWATERLOO.CA with password.&lt;br /&gt;
kadmin.local:  getprinc krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
Principal: krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
Expiration date: [never]&lt;br /&gt;
Last password change: [never]&lt;br /&gt;
Password expiration date: [none]&lt;br /&gt;
Maximum ticket life: 0 days 12:00:00&lt;br /&gt;
Maximum renewable life: 1 day 00:00:00&lt;br /&gt;
Last modified: Thu Dec 03 03:59:04 UTC 2015 (db_creation@WICS.UWATERLOO.CA)&lt;br /&gt;
Last successful authentication: [never]&lt;br /&gt;
Last failed authentication: [never]&lt;br /&gt;
Failed password attempts: 0&lt;br /&gt;
Number of keys: 2&lt;br /&gt;
Key: vno 1, aes256-cts-hmac-sha1-96, no salt&lt;br /&gt;
Key: vno 1, aes128-cts-hmac-sha1-96, no salt&lt;br /&gt;
MKey: vno 1&lt;br /&gt;
Attributes: REQUIRES_PRE_AUTH&lt;br /&gt;
Policy: [none]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Let&#039;s set the max life to 4 hours and the renewable life to 10 hours, for extra security.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;kadmin.local:  modprinc -maxlife &amp;amp;quot;4 hour&amp;amp;quot; -maxrenewlife &amp;amp;quot;10 hour&amp;amp;quot; krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
Principal &amp;amp;quot;krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&amp;amp;quot; modified.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Adding Principals ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;We need some root users in our system in order to bootstrap the rest, so let&#039;s create our sysadmin user, and give them our root password for authentication:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# kadmin.local&lt;br /&gt;
Authenticating as principal root/admin@WICS.UWATERLOO.CA with password.&lt;br /&gt;
kadmin.local:  addprinc sysadmin/admin&lt;br /&gt;
WARNING: no policy specified for sysadmin/admin@WICS.UWATERLOO.CA; defaulting to no policy&lt;br /&gt;
Enter password for principal &amp;amp;quot;sysadmin/admin@WICS.UWATERLOO.CA&amp;amp;quot;: &lt;br /&gt;
Re-enter password for principal &amp;amp;quot;sysadmin/admin@WICS.UWATERLOO.CA&amp;amp;quot;: &lt;br /&gt;
Principal &amp;amp;quot;sysadmin/admin@WICS.UWATERLOO.CA&amp;amp;quot; created.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we need to add a principal and keytab for our KDC host. While &amp;lt;code&amp;gt;addprinc -randkey&amp;lt;/code&amp;gt; does add a key, we need to use &amp;lt;code&amp;gt;ktadd&amp;lt;/code&amp;gt; to ensure it&#039;s copied over to the client host (in this case, auth1). &lt;br /&gt;
&lt;br /&gt;
  (&#039;&#039;&#039;keytab:&#039;&#039;&#039; a key table file containing one or more keys. A host or service uses a keytab file in much the same way as a user uses his/her password.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ kadmin -p sysadmin/admin&lt;br /&gt;
Authenticating as principal sysadmin/admin with password.&lt;br /&gt;
Password for sysadmin/admin@WICS.UWATERLOO.CA:&lt;br /&gt;
kadmin:  addprinc -randkey host/auth1.wics.uwaterloo.ca&lt;br /&gt;
WARNING: no policy specified for&lt;br /&gt;
host/auth1.wics.uwaterloo.ca@WICS.UWATERLOO.CA; defaulting to no policy&lt;br /&gt;
Principal &amp;amp;quot;host/auth1.wics.uwaterloo.ca@WICS.UWATERLOO.CA&amp;amp;quot; created.&lt;br /&gt;
kadmin:  ktadd host/auth1.wics.uwaterloo.ca&lt;br /&gt;
Entry for principal host/auth1.wics.uwaterloo.ca with kvno 2, encryption type&lt;br /&gt;
aes256-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&lt;br /&gt;
Entry for principal host/auth1.wics.uwaterloo.ca with kvno 2, encryption type&lt;br /&gt;
aes128-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now we can test that the KDC can grant principals tickets:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ kinit sysadmin/admin&lt;br /&gt;
Password for sysadmin/admin@WICS.UWATERLOO.CA: &lt;br /&gt;
$ klist&lt;br /&gt;
Ticket cache: FILE:/tmp/krb5cc_0&lt;br /&gt;
Default principal: sysadmin/admin@WICS.UWATERLOO.CA&lt;br /&gt;
Valid starting       Expires              Service principal&lt;br /&gt;
12/03/2015 05:31:38  12/03/2015 09:31:38  krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
   renew until 12/03/2015 15:31:38&lt;br /&gt;
$ kdestroy&lt;br /&gt;
$ klist&lt;br /&gt;
klist: Credentials cache file &#039;/tmp/krb5cc_0&#039; not found&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, we&#039;ll probably want to add principals for any users that we created in LDAP. We can do this in &amp;lt;code&amp;gt;weo&amp;lt;/code&amp;gt; using the following command, and we can even test that principal after its creation:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ python weo.py --add-krb-princ --username=ehashman&lt;br /&gt;
Okay, adding Kerberos principal ehashman@WICS.UWATERLOO.CA&lt;br /&gt;
Enter Kerberos admin password: &lt;br /&gt;
Enter password for principal ehashman@WICS.UWATERLOO.CA: &lt;br /&gt;
Retype password: &lt;br /&gt;
Adding Kerberos principal...&lt;br /&gt;
Principal ehashman@WICS.UWATERLOO.CA successfully added.&lt;br /&gt;
$ kinit ehashman&lt;br /&gt;
Password for ehashman@WICS.UWATERLOO.CA: &lt;br /&gt;
$ klist&lt;br /&gt;
Ticket cache: FILE:/tmp/krb5cc_1000&lt;br /&gt;
Default principal: ehashman@WICS.UWATERLOO.CA&lt;br /&gt;
Valid starting     Expires            Service principal&lt;br /&gt;
15-12-03 17:36:22  15-12-03 21:36:22  krbtgt/WICS.UWATERLOO.CA@WICS.UWATERLOO.CA&lt;br /&gt;
 renew until 15-12-04 03:36:22&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;From now on, though, Kerberos principals will automatically be generated when we add new users! Like this:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ python weo.py --adduser --username=fhboxwal --fullname=&amp;amp;quot;Fatema Boxwala&amp;amp;quot;&lt;br /&gt;
Okay, adding user fhboxwal&lt;br /&gt;
Please enter the new user&#039;s password: &lt;br /&gt;
Retype password: &lt;br /&gt;
Enter LDAP admin password: &lt;br /&gt;
Enter Kerberos admin password: &lt;br /&gt;
Locking LDAP database...&lt;br /&gt;
Adding user...&lt;br /&gt;
Unlocked database.&lt;br /&gt;
Adding Kerberos principal...&lt;br /&gt;
User fhboxwal successfully added.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Awesome! Now we&#039;re ready to configure Kerberos for clients.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setting Up Client Machines with SSSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;On your machine of choice, install the Kerberos client packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install krb5-user&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Now copy over your Kerberos config, [https://git.uwaterloo.ca/wics/documentation/blob/master/krb5.conf &amp;lt;code&amp;gt;krb5.conf&amp;lt;/code&amp;gt;], into &amp;lt;code&amp;gt;/etc/krb5.conf&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Next, set up a host keytab for the local machine:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# kadmin -p sysadmin/admin&lt;br /&gt;
Authenticating as principal sysadmin/admin with password.&lt;br /&gt;
Password for sysadmin/admin@WICS.UWATERLOO.CA: &lt;br /&gt;
kadmin:  addprinc -randkey host/mother-goose.wics.uwaterloo.ca&lt;br /&gt;
WARNING: no policy specified for host/mother-goose.wics.uwaterloo.ca@WICS.UWATERLOO.CA; defaulting to no policy&lt;br /&gt;
Principal &amp;amp;quot;host/mother-goose.wics.uwaterloo.ca@WICS.UWATERLOO.CA&amp;amp;quot; created.&lt;br /&gt;
kadmin:  ktadd host/mother-goose.wics.uwaterloo.ca&lt;br /&gt;
Entry for principal host/mother-goose.wics.uwaterloo.ca with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&lt;br /&gt;
Entry for principal host/mother-goose.wics.uwaterloo.ca with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;In order to configure authentication, we&#039;ll use a package called SSSD. (It has 234823840 dependencies.) Install it and its utilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install sssd sssd-tools&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Next, copy over the following configs:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/ldap.conf &amp;lt;code&amp;gt;/etc/ldap/ldap.conf&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/sssd.conf &amp;lt;code&amp;gt;/etc/sssd/sssd.conf&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/sshd_config &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/ssh_config &amp;lt;code&amp;gt;/etc/ssh/ssh_config&amp;lt;/code&amp;gt;]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://git.uwaterloo.ca/wics/documentation/blob/master/hosts &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;] (because what the heck)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Restart &amp;lt;code&amp;gt;sssd&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt;. The former can be very temperamental:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service ssh restart&lt;br /&gt;
# service sssd restart&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Test that this all worked by attempting to log in:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# Just try logging in&lt;br /&gt;
$ ssh me@machine.wics.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
# Try logging in using Kerberos&lt;br /&gt;
$ kinit me&lt;br /&gt;
$ ssh -o GSSAPIAuthentication=yes me@machine.wics.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
# Test that sudo is working&lt;br /&gt;
machine:~$ sudo -i&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tools for Debugging SSSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;It turns out &amp;lt;code&amp;gt;sssd&amp;lt;/code&amp;gt; is not the greatest at telling us things. If it starts breaking, stop it and start it in the foreground in debugging mode:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# service sssd stop&lt;br /&gt;
# sssd -d 5 -i&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Some problems with &amp;lt;code&amp;gt;sssd&amp;lt;/code&amp;gt; may be cache-related, and restarting it does not clear the cache. If you need to invalidate the cache, run&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sss_cache -E&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Password Resets ===&lt;br /&gt;
To change your own password you can run passwd on any of the club&#039;s machines.&lt;br /&gt;
&lt;br /&gt;
Changing other users&#039; passwords&lt;br /&gt;
* ssh auth1&lt;br /&gt;
* sudo kadmin.local&lt;br /&gt;
* cpw username&lt;br /&gt;
* Enter new password and confirm&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
&lt;br /&gt;
[http://web.archive.org/web/20120202205851/http://cryptnet.net/mirrors/docs/krb5api.html API Documentation.] While not even close to enough to let you do most things that you&#039;d want to do with Kerberos (and also being somewhat woefully out-of-date, considering it&#039;s from 1996), it&#039;s at least a start.&lt;br /&gt;
&lt;br /&gt;
=== Expiring Passwords ===&lt;br /&gt;
&lt;br /&gt;
If you are on syscom, you can force a user to change their password by doing this:&lt;br /&gt;
* ssh auth1&lt;br /&gt;
* sudo kadmin.local&lt;br /&gt;
* modify_principal +needchange [username]&lt;br /&gt;
&lt;br /&gt;
=== Suspending an Account ===&lt;br /&gt;
&lt;br /&gt;
If you are on syscom, you can prevent a user from logging with a Kerberos ticket by doing this:&lt;br /&gt;
* ssh auth1&lt;br /&gt;
* sudo kadmin.local&lt;br /&gt;
* modify_principal -allow_tix [username]&lt;br /&gt;
If you are seriously locking out an account, you may want to do some other things as well, including but not limited to changing the user&#039;s password (prevents password login) and changing the ownership and permissions on .ssh/authorized_keys* (prevents SSH key login). Don&#039;t do these things without a strong reason (but know how to do them when the time comes).&lt;br /&gt;
&lt;br /&gt;
=== bofh&#039;s Kerberos5 cheat sheet, or &amp;quot;what does *that* error message mean, exactly?&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* If GSSAPI complains about &amp;quot;Wrong Principal in Request&amp;quot;, make sure there&#039;s no clockskew on the machine trying to get the service ticket and the machine running the service that you are trying to get a GSS token to. This will cause this error for some insane reason, despite there being ANOTHER message for clockskew that specifically says &amp;quot;your clocks are off&amp;quot; - it just never seems to be used in the source code anywhere (as of MIT-KRB5 1.9, at least).&lt;br /&gt;
* There are some &amp;quot;generic&amp;quot; errors that are hard to debug. A few possible causes: unreadable krb5.keytab, reverse resolution of a host does not match its principal.&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3892</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3892"/>
		<updated>2015-12-17T02:52:31Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Terminology */ jxpryde nitpicking me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old. Like, Pentium IV old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare (for instance, no device authentication is supported). Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as the primary CSC fileserver.&lt;br /&gt;
&lt;br /&gt;
===Terminology===&lt;br /&gt;
* &#039;&#039;&#039;Filer:&#039;&#039;&#039; the controller unit for the NetApp. Currently psilodump.&lt;br /&gt;
* &#039;&#039;&#039;Disk shelf:&#039;&#039;&#039; where the physical disks live. Can be plugged into a filer or directly into another machine.&lt;br /&gt;
* &#039;&#039;&#039;RAID:&#039;&#039;&#039; &amp;quot;Redundant Array of Independent Disks&amp;quot;, used to improve reliability and protect against disk failures.&lt;br /&gt;
* &#039;&#039;&#039;RAID-DP:&#039;&#039;&#039; &amp;quot;Double Parity&amp;quot; RAID, similar to RAID6 in failure tolerance (implemented like RAID4 but with two dedicated parity disks). It can survive up to two disk failures before degradation.&lt;br /&gt;
* &#039;&#039;&#039;aggr:&#039;&#039;&#039; An aggregate of disks. This is a list of physical disks, similar to selecting the physical devices used for LVM.&lt;br /&gt;
* &#039;&#039;&#039;vol:&#039;&#039;&#039; A volume consisting of some space on an aggregate. In general, we use the whole aggregate for a volume. RAID level is set at the volume. Similar to an LVM volume group.&lt;br /&gt;
* &#039;&#039;&#039;lun:&#039;&#039;&#039; &amp;quot;Logical Unit Number&amp;quot; The LUN is a device addressed by the SCSI protocol, and looks like a disk to the user. We usually use the whole volume for a single LUN. This is similar to an LVM logical volume.&lt;br /&gt;
&lt;br /&gt;
===Common Commands===&lt;br /&gt;
 aggr status -r aggr_name&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==NetApp Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to access, configure, and complete set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===Access===&lt;br /&gt;
Configuration mechanisms are accessible via SSH or serial interface, but through aspartame only, which the machine is directly plugged into. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
The private IP is 10.15.134.130, only available from aspartame on the interface with IP 10.15.134.1. You may have to remove the default route from the routing table in order to successfully contact the machine with ssh.&lt;br /&gt;
&lt;br /&gt;
===Disk information===&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently disconnected, could be connected to psilodump or directly to another machine.&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
====Aggregates====&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
* aggr3&lt;br /&gt;
** Backups volume for CSC videos, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
====Volumes====&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
* /vol/vol3backup&lt;br /&gt;
** Backup volume for videos. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol3backup/lun0 .&lt;br /&gt;
&lt;br /&gt;
===Enabling iSCSI and Auth (one-time setup)===&lt;br /&gt;
&lt;br /&gt;
Enable iSCSI and configure default authentication.&lt;br /&gt;
&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
===Setting up a new disk aggregate, volume, and LUN===&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a smaller number due to hidden size constraints and rounding. If you can&#039;t seem to find the right size, pick one much smaller, and then use the command &lt;br /&gt;
&lt;br /&gt;
  vol size volNfoo +XXX&lt;br /&gt;
&lt;br /&gt;
to grow the volume. This command will tell you how much available space remains, unlike `vol create`, so you don&#039;t need to keep guessing.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
9. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
10. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===Expanding an aggregate, volume, and LUN===&lt;br /&gt;
&lt;br /&gt;
1. Start by getting the aggregate&#039;s status, e.g.&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;aggr status -r aggr3&#039;&#039;&#039;&lt;br /&gt;
 Aggregate aggr3 (online, raid_dp) (block checksums)&lt;br /&gt;
   Plex /aggr3/plex0 (online, normal, active)&lt;br /&gt;
     RAID group /aggr3/plex0/rg0 (normal)&lt;br /&gt;
     &lt;br /&gt;
     RAID Disk Device  HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)&lt;br /&gt;
     --------- ------  ------------- ---- ---- ---- ----- --------------    --------------&lt;br /&gt;
     dparity   0c.32   0c    2   0   FC:B   -  FCAL 10000 136000/278528000  139072/284820800&lt;br /&gt;
     parity    0c.33   0c    2   1   FC:B   -  FCAL 10000 136000/278528000  139072/284820800&lt;br /&gt;
     data      0a.34   0a    2   2   FC:A   -  FCAL 10000 136000/278528000  139072/284820800&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
2. Now determine the available spare disks:&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;aggr status -s&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Spare disks&lt;br /&gt;
 &lt;br /&gt;
 RAID Disk       Device  HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)&lt;br /&gt;
 ---------       ------  ------------- ---- ---- ---- ----- --------------    --------------&lt;br /&gt;
 Spare disks for block or zoned checksum traditional volumes or aggregates&lt;br /&gt;
 spare           0a.41   0a    2   9   FC:A   -  FCAL 10000 136000/278528000  137104/280790184 &lt;br /&gt;
 spare           0c.38   0c    2   6   FC:B   -  FCAL 10000 136000/278528000  137104/280790184 &lt;br /&gt;
 spare           0c.37   0c    2   5   FC:B   -  FCAL 10000 136000/278528000  137422/281442144&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
3. Select disks by device number and add them to the aggregate, using the following command. (Use the -n flag if you want to test your command syntax with a dry run.)&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;aggr add aggr3 -g rg0 -d 0a.39 0a.44 0c.40 0c.45&#039;&#039;&#039;&lt;br /&gt;
 Addition of 4 disks to the aggregate has completed.&lt;br /&gt;
 Wed Dec 16 19:55:09 EST [psilodump: raid.vol.disk.add.done:notice]: Addition of Disk /aggr3/plex0/rg0/0c.45 Shelf 2 Bay 13 [NETAPP   X274_HJURE146F10 NA14] S/N [404W6272] to aggregate aggr3 has completed successfully&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
4. Now fight with `vol size` to resize the volume:&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;df -A aggr3&#039;&#039;&#039;&lt;br /&gt;
 Aggregate               kbytes       used      avail capacity  &lt;br /&gt;
 aggr3                833369408  357122492  476246916      43%  &lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;vol size vol3backup +476246000k&#039;&#039;&#039;&lt;br /&gt;
 vol size: Insufficient space to grow this volume with its guarantee enabled; maximum growth is +473602692k.&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;vol size vol3backup +473602692k&#039;&#039;&#039;&lt;br /&gt;
 vol size: Flexible volume &#039;vol3backup&#039; size set to 828725892k.&lt;br /&gt;
&lt;br /&gt;
5. Last, fight with `lun resize` to increase the lun size:&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;lun resize /vol/vol3backup/lun0 +473602692k&#039;&#039;&#039;&lt;br /&gt;
 lun resize: No space left on device&lt;br /&gt;
 lun resize: max size: 788g (846844657664)&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;lun resize /vol/vol3backup/lun0 846844657664&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Host Configuration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3891</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3891"/>
		<updated>2015-12-17T02:49:44Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* NetApp Configuration */  Add expanding LUN section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old. Like, Pentium IV old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare (for instance, no device authentication is supported). Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as the primary CSC fileserver.&lt;br /&gt;
&lt;br /&gt;
===Terminology===&lt;br /&gt;
* &#039;&#039;&#039;Filer:&#039;&#039;&#039; the controller unit for the NetApp. Currently psilodump.&lt;br /&gt;
* &#039;&#039;&#039;Disk shelf:&#039;&#039;&#039; where the physical disks live. Can be plugged into a filer or directly into another machine.&lt;br /&gt;
* &#039;&#039;&#039;RAID:&#039;&#039;&#039; &amp;quot;Redundant Array of Independent Disks&amp;quot;, used to improve reliability and protect against disk failures.&lt;br /&gt;
* &#039;&#039;&#039;RAID-DP:&#039;&#039;&#039; &amp;quot;Double Parity&amp;quot; RAID, similar to RAID6 (this is probably RAID4 with two parity disks, but the result is the same). It uses two parity disks and can survive up to two disk failures before degradation.&lt;br /&gt;
* &#039;&#039;&#039;aggr:&#039;&#039;&#039; An aggregate of disks. This is a list of physical disks, similar to selecting the physical devices used for LVM.&lt;br /&gt;
* &#039;&#039;&#039;vol:&#039;&#039;&#039; A volume consisting of some space on an aggregate. In general, we use the whole aggregate for a volume. RAID level is set at the volume. Similar to an LVM volume group.&lt;br /&gt;
* &#039;&#039;&#039;lun:&#039;&#039;&#039; &amp;quot;Logical Unit Number&amp;quot; The LUN is a device addressed by the SCSI protocol, and looks like a disk to the user. We usually use the whole volume for a single LUN. This is similar to an LVM logical volume.&lt;br /&gt;
&lt;br /&gt;
===Common Commands===&lt;br /&gt;
 aggr status -r aggr_name&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==NetApp Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to access, configure, and complete set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===Access===&lt;br /&gt;
Configuration mechanisms are accessible via SSH or serial interface, but through aspartame only, which the machine is directly plugged into. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
The private IP is 10.15.134.130, only available from aspartame on the interface with IP 10.15.134.1. You may have to remove the default route from the routing table in order to successfully contact the machine with ssh.&lt;br /&gt;
&lt;br /&gt;
===Disk information===&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently disconnected, could be connected to psilodump or directly to another machine.&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
====Aggregates====&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
* aggr3&lt;br /&gt;
** Backups volume for CSC videos, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
====Volumes====&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
* /vol/vol3backup&lt;br /&gt;
** Backup volume for videos. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol3backup/lun0 .&lt;br /&gt;
&lt;br /&gt;
===Enabling iSCSI and Auth (one-time setup)===&lt;br /&gt;
&lt;br /&gt;
Enable iSCSI and configure default authentication.&lt;br /&gt;
&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
===Setting up a new disk aggregate, volume, and LUN===&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a smaller number due to hidden size constraints and rounding. If you can&#039;t seem to find the right size, pick one much smaller, and then use the command &lt;br /&gt;
&lt;br /&gt;
  vol size volNfoo +XXX&lt;br /&gt;
&lt;br /&gt;
to grow the volume. This command will tell you how much available space remains, unlike `vol create`, so you don&#039;t need to keep guessing.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
9. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
10. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===Expanding an aggregate, volume, and LUN===&lt;br /&gt;
&lt;br /&gt;
1. Start by getting the aggregate&#039;s status, e.g.&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;aggr status -r aggr3&#039;&#039;&#039;&lt;br /&gt;
 Aggregate aggr3 (online, raid_dp) (block checksums)&lt;br /&gt;
   Plex /aggr3/plex0 (online, normal, active)&lt;br /&gt;
     RAID group /aggr3/plex0/rg0 (normal)&lt;br /&gt;
     &lt;br /&gt;
     RAID Disk Device  HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)&lt;br /&gt;
     --------- ------  ------------- ---- ---- ---- ----- --------------    --------------&lt;br /&gt;
     dparity   0c.32   0c    2   0   FC:B   -  FCAL 10000 136000/278528000  139072/284820800&lt;br /&gt;
     parity    0c.33   0c    2   1   FC:B   -  FCAL 10000 136000/278528000  139072/284820800&lt;br /&gt;
     data      0a.34   0a    2   2   FC:A   -  FCAL 10000 136000/278528000  139072/284820800&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
2. Now determine the available spare disks:&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;aggr status -s&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Spare disks&lt;br /&gt;
 &lt;br /&gt;
 RAID Disk       Device  HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)&lt;br /&gt;
 ---------       ------  ------------- ---- ---- ---- ----- --------------    --------------&lt;br /&gt;
 Spare disks for block or zoned checksum traditional volumes or aggregates&lt;br /&gt;
 spare           0a.41   0a    2   9   FC:A   -  FCAL 10000 136000/278528000  137104/280790184 &lt;br /&gt;
 spare           0c.38   0c    2   6   FC:B   -  FCAL 10000 136000/278528000  137104/280790184 &lt;br /&gt;
 spare           0c.37   0c    2   5   FC:B   -  FCAL 10000 136000/278528000  137422/281442144&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
3. Select disks by device number and add them to the aggregate, using the following command. (Use the -n flag if you want to test your command syntax with a dry run.)&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;aggr add aggr3 -g rg0 -d 0a.39 0a.44 0c.40 0c.45&#039;&#039;&#039;&lt;br /&gt;
 Addition of 4 disks to the aggregate has completed.&lt;br /&gt;
 Wed Dec 16 19:55:09 EST [psilodump: raid.vol.disk.add.done:notice]: Addition of Disk /aggr3/plex0/rg0/0c.45 Shelf 2 Bay 13 [NETAPP   X274_HJURE146F10 NA14] S/N [404W6272] to aggregate aggr3 has completed successfully&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
4. Now fight with `vol size` to resize the volume:&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;df -A aggr3&#039;&#039;&#039;&lt;br /&gt;
 Aggregate               kbytes       used      avail capacity  &lt;br /&gt;
 aggr3                833369408  357122492  476246916      43%  &lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;vol size vol3backup +476246000k&#039;&#039;&#039;&lt;br /&gt;
 vol size: Insufficient space to grow this volume with its guarantee enabled; maximum growth is +473602692k.&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;vol size vol3backup +473602692k&#039;&#039;&#039;&lt;br /&gt;
 vol size: Flexible volume &#039;vol3backup&#039; size set to 828725892k.&lt;br /&gt;
&lt;br /&gt;
5. Last, fight with `lun resize` to increase the lun size:&lt;br /&gt;
&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;lun resize /vol/vol3backup/lun0 +473602692k&#039;&#039;&#039;&lt;br /&gt;
 lun resize: No space left on device&lt;br /&gt;
 lun resize: max size: 788g (846844657664)&lt;br /&gt;
 psilodump&amp;gt; &#039;&#039;&#039;lun resize /vol/vol3backup/lun0 846844657664&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Host Configuration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3889</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3889"/>
		<updated>2015-12-17T02:09:57Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Major updates to the page; re-ordered it for ease of navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old. Like, Pentium IV old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare (for instance, no device authentication is supported). Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as the primary CSC fileserver.&lt;br /&gt;
&lt;br /&gt;
===Terminology===&lt;br /&gt;
* &#039;&#039;&#039;Filer:&#039;&#039;&#039; the controller unit for the NetApp. Currently psilodump.&lt;br /&gt;
* &#039;&#039;&#039;Disk shelf:&#039;&#039;&#039; where the physical disks live. Can be plugged into a filer or directly into another machine.&lt;br /&gt;
* &#039;&#039;&#039;RAID:&#039;&#039;&#039; &amp;quot;Redundant Array of Independent Disks&amp;quot;, used to improve reliability and protect against disk failures.&lt;br /&gt;
* &#039;&#039;&#039;RAID-DP:&#039;&#039;&#039; &amp;quot;Double Parity&amp;quot; RAID, similar to RAID6. It uses two parity disks and can survive up to two disk failures before degradation.&lt;br /&gt;
* &#039;&#039;&#039;aggr:&#039;&#039;&#039; An aggregate of disks. This is a list of physical disks, similar to selecting the physical devices used for LVM.&lt;br /&gt;
* &#039;&#039;&#039;vol:&#039;&#039;&#039; A volume consisting of some space on an aggregate. In general, we use the whole aggregate for a volume. RAID level is set at the volume. Similar to an LVM volume group.&lt;br /&gt;
* &#039;&#039;&#039;lun:&#039;&#039;&#039; &amp;quot;Logical Unit Number&amp;quot; The LUN is a device addressed by the SCSI protocol, and looks like a disk to the user. We usually use the whole volume for a single LUN. This is similar to an LVM logical volume.&lt;br /&gt;
&lt;br /&gt;
===Common Commands===&lt;br /&gt;
 aggr status -r aggr_name&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==NetApp Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to access, configure, and complete set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===Access===&lt;br /&gt;
Configuration mechanisms are accessible via SSH or serial interface, but through aspartame only, which the machine is directly plugged into. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
The private IP is 10.15.134.130, only available from aspartame on the interface with IP 10.15.134.1. You may have to remove the default route from the routing table in order to successfully contact the machine with ssh.&lt;br /&gt;
&lt;br /&gt;
===Disk information===&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently disconnected, could be connected to psilodump or directly to another machine.&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
====Aggregates====&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
* aggr3&lt;br /&gt;
** Backups volume for CSC videos, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
====Volumes====&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
* /vol/vol3backup&lt;br /&gt;
** Backup volume for videos. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol3backup/lun0 .&lt;br /&gt;
&lt;br /&gt;
===Enabling iSCSI and Auth (one-time setup)===&lt;br /&gt;
&lt;br /&gt;
Enable iSCSI and configure default authentication.&lt;br /&gt;
&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
===Setting up a new disk aggregate, volume, and LUN===&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a smaller number due to hidden size constraints and rounding. If you can&#039;t seem to find the right size, pick one much smaller, and then use the command &lt;br /&gt;
&lt;br /&gt;
  vol size volNfoo +XXX&lt;br /&gt;
&lt;br /&gt;
to grow the volume. This command will tell you how much available space remains, unlike `vol create`, so you don&#039;t need to keep guessing.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
9. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
10. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
==Host Configuration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3888</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3888"/>
		<updated>2015-12-17T01:49:58Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Disk information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
The private IP is 10.15.134.130, only available from aspartame on the interface with IP 10.15.134.1. You may have to remove the default route from the routing table in order to successfully contact the machine with ssh.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
====One-time Configuration====&lt;br /&gt;
&lt;br /&gt;
Enable iSCSI and configure default authentication.&lt;br /&gt;
&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
====Setting up a new disk aggregate, volume, and LUN====&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a smaller number due to hidden size constraints and rounding. If you can&#039;t seem to find the right size, pick one much smaller, and then use the command &lt;br /&gt;
&lt;br /&gt;
  vol size volNfoo +XXX&lt;br /&gt;
&lt;br /&gt;
to grow the volume. This command will tell you how much available space remains, unlike `vol create`, so you don&#039;t need to keep guessing.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
9. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
10. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently disconnected, could be connected to psilodump or directly to another machine.&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
* aggr3&lt;br /&gt;
** Backups volume for CSC videos, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
* /vol/vol3backup&lt;br /&gt;
** Backup volume for videos. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol3backup/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID4&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Serial_Connections&amp;diff=3845</id>
		<title>Serial Connections</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Serial_Connections&amp;diff=3845"/>
		<updated>2015-10-26T19:20:38Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* MC 3015 */  Update console table and remove binaerpilot/ascorbic-acid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article documents the physical serial ports on each machine and the connections between them. These connections are used for console access using [[Conserver]].&lt;br /&gt;
&lt;br /&gt;
==== MC 3015 ====&lt;br /&gt;
&lt;br /&gt;
 Local machine      | Local TTY  | Remote machine      | Remote TTY | Baud rate&lt;br /&gt;
 -------------------+------------+---------------------+------------+----------&lt;br /&gt;
 corn-syrup           ttyS1 LOM &amp;lt;- corn-syrup-ipmi       -                57600&lt;br /&gt;
 mirror               ttyS1 LOM &amp;lt;- sodium-benzoate-ipmi  -                57600&lt;br /&gt;
 taurine              ttyS1 LOM &amp;lt;- taurine-ilo           -               115200&lt;br /&gt;
 glomag               ttyS0 LOM &amp;lt;- glomag-ipmi           -               115200&lt;br /&gt;
 goto80               ttyS0     &amp;lt;- corn-syrup            N/A             115200&lt;br /&gt;
 goto80               ttyS1     &amp;lt;- corn-syrup            N/A             115200&lt;br /&gt;
 goto80               power     &amp;lt;- corn-syrup            N/A             115200&lt;br /&gt;
 potassium-citrate    ttyS0     &amp;lt;- corn-syrup:ttyUSB2    hub3            115200&lt;br /&gt;
 aspartame            ttyS0     &amp;lt;- corn-syrup:ttyUSB4    hub5            115200    &lt;br /&gt;
 electrons            -         &amp;lt;- corn-syrup            hub8              9600&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;hubN&amp;quot; ports are on the 8-port serial hub. To access, look in /dev/csc, or just use ttyUSB[N-1] directly.&lt;br /&gt;
&lt;br /&gt;
== Machine Ports ==&lt;br /&gt;
&lt;br /&gt;
Most machines either have no serial ports, or one [[Serial_Pin-outs#RS-232_over_DE-9|DE-9]] serial port. Details of other configurations are listed here. We do not have any modems (DCE), so all connections should be crossed (i.e., use null modem cables or compatible).&lt;br /&gt;
&lt;br /&gt;
==== taurine ====&lt;br /&gt;
&lt;br /&gt;
taurine has a virtual serial port that can be accessed via telnet or SSH&lt;br /&gt;
&lt;br /&gt;
 ttyS0 physical DE-9&lt;br /&gt;
 ttyS1 virtual&lt;br /&gt;
&lt;br /&gt;
==== ascorbic-acid ====&lt;br /&gt;
&lt;br /&gt;
ascorbic-acid has two [[Serial_Pin-outs#RS-232_over_8P8C_.28Sun.29|Sun 8P8C]] serial ports stacked vertically, with the first port on top. The first port may be used to access LOM, and probably has to be set to 9600 baud.&lt;br /&gt;
&lt;br /&gt;
 A (ttyS0, LOM)&lt;br /&gt;
 B (ttyS1)&lt;br /&gt;
&lt;br /&gt;
These ports should be connected to another system&#039;s DE-9 using a DE-9&amp;lt;-&amp;gt;8P8C modular adapter and an [[Serial_Pin-outs#Almost_Rollover_Cable|Almost Rollover]] or standard rollover.&lt;br /&gt;
&lt;br /&gt;
==== potassium-citrate ====&lt;br /&gt;
&lt;br /&gt;
potassium-citrate has two DE-9 serial ports side by side, with the second port on the left&lt;br /&gt;
&lt;br /&gt;
 101102 (ttyS1) 101101 (ttyS0)&lt;br /&gt;
&lt;br /&gt;
==== sodium-citrate ====&lt;br /&gt;
&lt;br /&gt;
sodium-citrate has two DE-9 serial ports side by side, with the second port on the left&lt;br /&gt;
&lt;br /&gt;
 ttyS1 ttyS0&lt;br /&gt;
&lt;br /&gt;
==== dumbterm ====&lt;br /&gt;
&lt;br /&gt;
dumbterm has one DB-25 serial port. It is currently connected to a black [[Serial_Pin-outs#Grey_DB-25_Female_to_8P8C_Adapter|nonstandard DB-25&amp;lt;-&amp;gt;8P8C adapter]], to a [[Serial_Pin-outs#Dumbterm_Cable|special twisted pair cable]], to a [[Serial_Pin-outs#Black_DE-9_Female_to_8P8C_Adapter|nonstandard 8P8C&amp;lt;-&amp;gt;DE-9 adapter]]. All of these pieces are labeled &amp;quot;dumbterm&amp;quot;. The dumbterm cable is not symmetric; the end labeled &amp;quot;DE-9&amp;quot; must be plugged into the DE-9 adapter.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3829</id>
		<title>Syscom Todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3829"/>
		<updated>2015-09-04T20:14:47Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* When in the Machine Room */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are things that syscom should do eventually:&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
* Prepare for `sodium-benzoate` upgrades/replacement.&lt;br /&gt;
** new-mirror has like 30 disk shelves so we can just do a live sync on the 2TB disks and then insert the 4TB ones&lt;br /&gt;
* Establish remote syslog&lt;br /&gt;
* Get UPS monitoring working across multiple systems&lt;br /&gt;
* `/users` backups&lt;br /&gt;
* Disaster recovery plan&lt;br /&gt;
* &#039;&#039;&#039;Put backup container for authentication onto cobalamin&#039;&#039;&#039;&lt;br /&gt;
* Get an IP/KVM for the machine room which doesn&#039;t suck?&lt;br /&gt;
* Sort through keyboards in the office&lt;br /&gt;
* Clean up wiki vandalism&lt;br /&gt;
* Fix debian.csclub, aka our personal Debian repo which serves the CEO package&lt;br /&gt;
** Fix ceo versioning, which seems to be different on every machine it&#039;s installed on...&lt;br /&gt;
* Fix audio auth: audio is both a system group and an LDAP group and this has bad consequences for audio authorization&lt;br /&gt;
* Centralized repo for various configs: NFS, PAM auth with kerb, /etc/hosts/, LDAP and Kerb5, routing/interfaces files&lt;br /&gt;
** LDAP login is currently broken on glomag, it is password with root only&lt;br /&gt;
** Private subnet routing is broken on every machine &#039;&#039;except&#039;&#039; corn-syrup (see &#039;ethcrazy&#039;)&lt;br /&gt;
* Update hosts list (10.15.134.WTF?)&lt;br /&gt;
* MySQL backups&lt;br /&gt;
&lt;br /&gt;
== Wiki Updates ==&lt;br /&gt;
&lt;br /&gt;
* Update the following wiki pages&lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Ceo]], also related to &amp;quot;debian.csclub is broken&amp;quot;&lt;br /&gt;
** somehow merge [[Conserver]]/[[Serial Connections]]/[[Console Configuration]]&lt;br /&gt;
** [[Cscbot]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
** [[Hardware]]&lt;br /&gt;
** [[Machine List]]&lt;br /&gt;
** [[Mirror]]&lt;br /&gt;
** [[Music]] and possibly link to [[Pulseaudio]]&lt;br /&gt;
** [[MySQL]] mentions a-f replica&lt;br /&gt;
** [[NFS/Kerberos]] should probably by merged with an existing page&lt;br /&gt;
** [[NetApp]]&lt;br /&gt;
** [[Netboot]] (might want to merge with [[New CSC Machine]])&lt;br /&gt;
** [[OID Assignment]] and [[UID/GID Assignment]] should be merged with LDAP and replaced with a redirect&lt;br /&gt;
** Merge [[Point Of Sale]] and [[Point of Sale System]]&lt;br /&gt;
** [[Projects]]&lt;br /&gt;
** [[Scratch]]&lt;br /&gt;
** Merge [[Sun 2900]] and [[Sun 2900 Strategy Guide]]&lt;br /&gt;
** Add more info to [[Switches]]&lt;br /&gt;
** [[Virtualization]]&lt;br /&gt;
** [[Webcams]] needs a serious update&lt;br /&gt;
** [[Wireless]]&lt;br /&gt;
&lt;br /&gt;
==When in the Machine Room==&lt;br /&gt;
* Set up binaerpilot.&lt;br /&gt;
* Set up rainbowdragoneyes&lt;br /&gt;
* Pick up paperclip to install a new OS&lt;br /&gt;
* Locate electrons&lt;br /&gt;
** Electrons, aka the giant power bar, is sitting somewhere *near* the rack. I can&#039;t remember why it was taken down. -ehashman&lt;br /&gt;
* Make sure that the IPMI/console connections are correct, up-to-date, and working.&lt;br /&gt;
* Fix psilodump&#039;s and aspartame&#039;s IPs and routing&lt;br /&gt;
** psilodump should not be routable outside aspartame. This is currently accomplished by fuckery. This *should* be fixed to use the net.ipv4.conf.all.arp_filter sysctl.&lt;br /&gt;
* Look into expanding /scratch and using RAID using spare disks in the office.&lt;br /&gt;
&lt;br /&gt;
==Science Machine Room==&lt;br /&gt;
* Set up remote syslog2&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3828</id>
		<title>Syscom Todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3828"/>
		<updated>2015-09-04T20:13:31Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are things that syscom should do eventually:&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
* Prepare for `sodium-benzoate` upgrades/replacement.&lt;br /&gt;
** new-mirror has like 30 disk shelves so we can just do a live sync on the 2TB disks and then insert the 4TB ones&lt;br /&gt;
* Establish remote syslog&lt;br /&gt;
* Get UPS monitoring working across multiple systems&lt;br /&gt;
* `/users` backups&lt;br /&gt;
* Disaster recovery plan&lt;br /&gt;
* &#039;&#039;&#039;Put backup container for authentication onto cobalamin&#039;&#039;&#039;&lt;br /&gt;
* Get an IP/KVM for the machine room which doesn&#039;t suck?&lt;br /&gt;
* Sort through keyboards in the office&lt;br /&gt;
* Clean up wiki vandalism&lt;br /&gt;
* Fix debian.csclub, aka our personal Debian repo which serves the CEO package&lt;br /&gt;
** Fix ceo versioning, which seems to be different on every machine it&#039;s installed on...&lt;br /&gt;
* Fix audio auth: audio is both a system group and an LDAP group and this has bad consequences for audio authorization&lt;br /&gt;
* Centralized repo for various configs: NFS, PAM auth with kerb, /etc/hosts/, LDAP and Kerb5, routing/interfaces files&lt;br /&gt;
** LDAP login is currently broken on glomag, it is password with root only&lt;br /&gt;
** Private subnet routing is broken on every machine &#039;&#039;except&#039;&#039; corn-syrup (see &#039;ethcrazy&#039;)&lt;br /&gt;
* Update hosts list (10.15.134.WTF?)&lt;br /&gt;
* MySQL backups&lt;br /&gt;
&lt;br /&gt;
== Wiki Updates ==&lt;br /&gt;
&lt;br /&gt;
* Update the following wiki pages&lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Ceo]], also related to &amp;quot;debian.csclub is broken&amp;quot;&lt;br /&gt;
** somehow merge [[Conserver]]/[[Serial Connections]]/[[Console Configuration]]&lt;br /&gt;
** [[Cscbot]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
** [[Hardware]]&lt;br /&gt;
** [[Machine List]]&lt;br /&gt;
** [[Mirror]]&lt;br /&gt;
** [[Music]] and possibly link to [[Pulseaudio]]&lt;br /&gt;
** [[MySQL]] mentions a-f replica&lt;br /&gt;
** [[NFS/Kerberos]] should probably by merged with an existing page&lt;br /&gt;
** [[NetApp]]&lt;br /&gt;
** [[Netboot]] (might want to merge with [[New CSC Machine]])&lt;br /&gt;
** [[OID Assignment]] and [[UID/GID Assignment]] should be merged with LDAP and replaced with a redirect&lt;br /&gt;
** Merge [[Point Of Sale]] and [[Point of Sale System]]&lt;br /&gt;
** [[Projects]]&lt;br /&gt;
** [[Scratch]]&lt;br /&gt;
** Merge [[Sun 2900]] and [[Sun 2900 Strategy Guide]]&lt;br /&gt;
** Add more info to [[Switches]]&lt;br /&gt;
** [[Virtualization]]&lt;br /&gt;
** [[Webcams]] needs a serious update&lt;br /&gt;
** [[Wireless]]&lt;br /&gt;
&lt;br /&gt;
==When in the Machine Room==&lt;br /&gt;
* Set up binaerpilot.&lt;br /&gt;
* Set up rainbowdragoneyes&lt;br /&gt;
* Pick up paperclip to install a new OS&lt;br /&gt;
* Locate electrons?&lt;br /&gt;
* Make sure that the IPMI/console connections are correct, up-to-date, and working.&lt;br /&gt;
* Fix psilodump&#039;s and aspartame&#039;s IPs and routing&lt;br /&gt;
** psilodump should not be routable outside aspartame. This is currently accomplished by fuckery. This *should* be fixed to use the net.ipv4.conf.all.arp_filter sysctl.&lt;br /&gt;
* Look into expanding /scratch and using RAID using spare disks in the office.&lt;br /&gt;
&lt;br /&gt;
==Science Machine Room==&lt;br /&gt;
* Set up remote syslog2&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3827</id>
		<title>Web Hosting</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3827"/>
		<updated>2015-09-04T20:09:18Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* What can I host on my website? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CSC offers web hosting for [[Club Hosting|clubs]] and [http://csclub.uwaterloo.ca/about/ our members] in accordance with our [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. This is a quick guide for the kinds of hosting we offer on our webserver, &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;, also known as [[Machine List#caffeine|caffeine]].&lt;br /&gt;
&lt;br /&gt;
We run an Apache httpd webserver and we offer you the use of a [[MySQL|MySQL database]].&lt;br /&gt;
&lt;br /&gt;
== What can I host on my website? ==&lt;br /&gt;
&lt;br /&gt;
Web hosting is provided in accordance with the CSC [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. As a reminder, you are &#039;&#039;&#039;not permitted&#039;&#039;&#039; to host any of the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ads.&#039;&#039;&#039; Advertisements are not permitted because using our machines for commercial purposes is forbidden by university policy.&lt;br /&gt;
* &#039;&#039;&#039;Your start-up&#039;s website.&#039;&#039;&#039; Again, commercial use of our hosting is not permitted.&lt;br /&gt;
* &#039;&#039;&#039;Unauthorized copyrighted materials.&#039;&#039;&#039; Violating the law is a violation of our Machine Usage Agreement.&lt;br /&gt;
&lt;br /&gt;
Please note that &#039;&#039;&#039;this is not an exhaustive list. Websites may be taken down &#039;&#039;without notice&#039;&#039;&#039;&#039;&#039; at the discretion of the Systems Committee. (We will always let you know that we took your site down, but if it is breaking our shared environment, we can&#039;t provide an advance warning.)&lt;br /&gt;
&lt;br /&gt;
Some great examples of things members host on our webserver:&lt;br /&gt;
&lt;br /&gt;
* Academic projects!&lt;br /&gt;
* A personal website or blog!&lt;br /&gt;
* [[Club Hosting|Club websites!]]&lt;br /&gt;
&lt;br /&gt;
== DNS and Your Domain Name ==&lt;br /&gt;
&lt;br /&gt;
You can serve files without any additional configuration by placing them in your &amp;lt;tt&amp;gt;www&amp;lt;/tt&amp;gt; directory and accessing them at &amp;lt;tt&amp;gt;http://csclub.uwaterloo.ca/~userid&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;userid&amp;lt;/tt&amp;gt; is your CSC user ID. However, many of our members and clubs prefer to use a custom domain name.&lt;br /&gt;
&lt;br /&gt;
=== uwaterloo.ca domain Names ===&lt;br /&gt;
&lt;br /&gt;
If you represent a UWaterloo organization, you may be eligible for a custom &amp;lt;tt&amp;gt;uwaterloo.ca&amp;lt;/tt&amp;gt; domain name, such as &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;. We can request this on your behalf.&lt;br /&gt;
&lt;br /&gt;
In order to do so, we must have verified that the organization is a legitimate UWaterloo-affiliated group, and that you, the representative, are authorized to request a domain name on their behalf. This all takes place when you request [[Club Hosting|club hosting]] with the Computer Science Club.&lt;br /&gt;
&lt;br /&gt;
Once you register as a club representative of your particular organization, you can send an email from your official club account to syscom@csclub.uwaterloo.ca to request the domain &amp;lt;tt&amp;gt;yourdomain.uwaterloo.ca&amp;lt;/tt&amp;gt;. Assuming it is available, we will file a ticket and request the domain in your name.&lt;br /&gt;
&lt;br /&gt;
=== Your personal domain name ===&lt;br /&gt;
&lt;br /&gt;
These virtual hosts must be approved by the Executive and Systems Committee. If interested, send syscom@csclub.uwaterloo.ca an email. If your request is approved, the Systems Committee will direct you to create a CNAME record for your domain and point it at &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Static Sites ==&lt;br /&gt;
&lt;br /&gt;
You can place all your static content into your web directory, &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have been approved for a virtual host, you can access this content using your personal domain once the Systems Committee makes the appropriate configuration changes. Here is an example configuration file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName foobar.uwaterloo.ca&lt;br /&gt;
  	ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
  	ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
  	DocumentRoot /users/userid/www/&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
  	CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dynamic Sites ==&lt;br /&gt;
&lt;br /&gt;
If you require use of a database, we offer you the sole choice of MySQL. See [[MySQL|this guide]] for how to create your database and connect to MySQL.&lt;br /&gt;
&lt;br /&gt;
=== ***NOTICE*** ===&lt;br /&gt;
&lt;br /&gt;
  We &#039;&#039;&#039;STRONGLY&#039;&#039;&#039; discourage the use of content management systems such as&lt;br /&gt;
  WordPress. These packages are notorious for the number of security&lt;br /&gt;
  vulnerabilities they contain and pose a threat to our systems if they are not&lt;br /&gt;
  kept up to date. The Systems Committee &#039;&#039;&#039;WILL,&#039;&#039;&#039; at its discretion, disable&lt;br /&gt;
  any website using a package such as WordPress that is not updated to the latest&lt;br /&gt;
  version or that is found to contain exploitable security flaws. In such a case,&lt;br /&gt;
  the member or club serving that site will be notified of the termination; the&lt;br /&gt;
  site will not be re-enabled until the issues are addressed.&lt;br /&gt;
&lt;br /&gt;
=== Using PHP ===&lt;br /&gt;
&lt;br /&gt;
Because we use Apache, it&#039;s as simple as placing your &amp;lt;tt&amp;gt;index.php&amp;lt;/tt&amp;gt; file in your &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;. That&#039;s it!&lt;br /&gt;
&lt;br /&gt;
You can even include rewrite rules in an &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; file in your web directory.&lt;br /&gt;
&lt;br /&gt;
=== Using FCGI ===&lt;br /&gt;
&lt;br /&gt;
We support the use of &amp;lt;tt&amp;gt;mod_fcgid&amp;lt;/tt&amp;gt;, which runs all of our PHP applications and more. If you&#039;ve set up your PHP application as above, it is very unlikely this will need further configuration. However, we can and may tweak &amp;lt;tt&amp;gt;Fcgid*&amp;lt;/tt&amp;gt; directives to ensure optimal performance of our hosting across websites.&lt;br /&gt;
&lt;br /&gt;
=== Using WSGI ===&lt;br /&gt;
&lt;br /&gt;
We newly support &amp;lt;tt&amp;gt;mod_wsgi&amp;lt;/tt&amp;gt; for dynamic frameworks you may not want to run through FCGI, such as Django. If you&#039;d like to set up one of these sites, you&#039;ll need Systems Committee approval and assistance with the configuration. You will be responsible for setting up the site in your home directory and all the associated WSGI scripts.&lt;br /&gt;
&lt;br /&gt;
Here is a sample configuration file for a Django site:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName foobar.uwaterloo.ca&lt;br /&gt;
    ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
    ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
    ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
    CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &lt;br /&gt;
    WSGIDaemonProcess process_name python-path=your/path/here/:possibly:/users/userid/site:/users/userid/.env/...&lt;br /&gt;
    WSGIScriptAlias / /path/to/your/wsgi/script&lt;br /&gt;
    WSGIProcessGroup process_name&lt;br /&gt;
  &lt;br /&gt;
    Alias /robots.txt /path/if/necessary/robots.txt&lt;br /&gt;
    Alias /favicon.ico /path/if/necessary/favicon.ico&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;Directory /path/to/your/wsgi/script&amp;gt;&lt;br /&gt;
      &amp;lt;Files wsgi.py&amp;gt;&lt;br /&gt;
        Require all granted&lt;br /&gt;
      &amp;lt;/Files&amp;gt;&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=New_Member_Guide&amp;diff=3826</id>
		<title>New Member Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=New_Member_Guide&amp;diff=3826"/>
		<updated>2015-09-03T04:10:37Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Web Hosting */  Remove tips and add link to guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello, and welcome to the Computer Science Club! Thanks for joining. The office staff who signed you up should have told you about this stuff, but just as a refresher, here it is again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Office ==&lt;br /&gt;
&lt;br /&gt;
* Our office is MC 3036/3037 (we occupy both rooms) and we&#039;re across the hall (but distinct from) the Mathsoc office.&lt;br /&gt;
&lt;br /&gt;
* Our club doesn&#039;t have weekly meetings or anything like that. If the door is open, we are open (even if it&#039;s 3 in the morning on Sunday). Feel free to drop in and say hi!&lt;br /&gt;
&lt;br /&gt;
* The office closes when the last office staff leaves the room, and the office opens when somebody with a key comes by. If you&#039;re interested in becoming office staff, look out for the termly office staff training event or ask around the office.&lt;br /&gt;
&lt;br /&gt;
* We have staplers by the door farthest from Mathsoc. Even if you&#039;re not a member, you&#039;re allowed to use them. You don&#039;t even have to ask (and in fact, we&#039;d prefer if you didn&#039;t. Office regulars spend a good amount of time telling people that yes, they can use the staplers).&lt;br /&gt;
&lt;br /&gt;
* We sell pop, chips, chocolate bars and other snacks. Prices are on the fridge door. Pay the red cup in the fridge.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
We hold a different set of events every term, but the same types of events come up again and again. Watch out for emails about:&lt;br /&gt;
* Industry tech talks. In the past, we&#039;ve gotten folks from various tech companies to talk about algorithms, database design decisions and other things.&lt;br /&gt;
&lt;br /&gt;
* UNIX 10X tutorials. Don&#039;t know how to use the commandline? Come out and learn with us. Know how to use the commandline? Come out and help us answer questions.&lt;br /&gt;
&lt;br /&gt;
* Member talks. Do you have a burning desire to talk about AVL trees? No? Well, if you want to talk about a computer sciencey topic that&#039;s close to your heart, send an email to exec at csclub.uwaterloo.ca with a talk abstract (a paragraph we can put on a poster to describe your talk) and we&#039;ll see if we can make something happen.&lt;br /&gt;
&lt;br /&gt;
* Code parties. We eat food, talk and write code. Code parties happen several times a term.&lt;br /&gt;
&lt;br /&gt;
== Machines ==&lt;br /&gt;
As a member of the club, you have access to our machines, both [[Machine_List#Servers|servers in the machine room down the hall]] and [[Machine_List#Office Terminals|desktops in our physical office]]. Keep in mind that your username is your quest userid (e.g. j7smith) and your password starts out as the one you set when you joined the club for the first time.&lt;br /&gt;
&lt;br /&gt;
* As a member you must abide by the [https://csclub.uwaterloo.ca/services/machine_usage machine usage policy].&lt;br /&gt;
&lt;br /&gt;
* Your files are accessible on all of our machines&lt;br /&gt;
&lt;br /&gt;
* Keep in mind that the machines are shared among all of our members. Play nice. For example, &amp;lt;nowiki&amp;gt;caffeine&amp;lt;/nowiki&amp;gt; is our web server. You are strongly advised not to run long, intensive jobs on it. Something like that is a better fit for &amp;lt;nowiki&amp;gt;hfcs&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;corn-syrup&amp;lt;/nowiki&amp;gt; or even possibly &amp;lt;nowiki&amp;gt;taurine&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* use SSH for access to the machines in the server room.&lt;br /&gt;
** If you don&#039;t know how to use the commandline, you can wait for our approximately termly UNIX 101 event, google for &amp;quot;how to use the command line&amp;quot;, or ask around the office.&lt;br /&gt;
** if you happen to be using Windows, you can use an SSH client such as PuTTY[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html].&lt;br /&gt;
** If you have a Mac or you run Linux, you already have the &amp;lt;nowiki&amp;gt;ssh&amp;lt;/nowiki&amp;gt; command installed. If your userid is &amp;lt;nowiki&amp;gt;j7smith&amp;lt;/nowiki&amp;gt; and you want to use &amp;lt;nowiki&amp;gt;taurine&amp;lt;/nowiki&amp;gt;, just open up a terminal window and type the following. You will be asked for your CSC password.&lt;br /&gt;
&lt;br /&gt;
 ssh j7smith@taurine.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
* Our office terminals are turned off, rebooted and otherwise reset somewhat frequently.&lt;br /&gt;
&lt;br /&gt;
* If you forget your password, come by the office with your watcard and some other form of ID. Regular office staff can&#039;t reset your password for you, but if there&#039;s someone on our Systems Committee hanging around, they can do this for you.&lt;br /&gt;
&lt;br /&gt;
* If you would like to change your password, log on to any of our machines and type &amp;lt;nowiki&amp;gt;kpasswd&amp;lt;/nowiki&amp;gt; in a terminal. You will be prompted for your old password and be asked to type in your new password twice (just to make sure you didn&#039;t make a typo).&lt;br /&gt;
&lt;br /&gt;
* We have a MySQL daemon running, but only on our web server &amp;lt;nowiki&amp;gt;caffeine&amp;lt;/nowiki&amp;gt;. Check out [[MySQL|this page]] if you would like a database.&lt;br /&gt;
&lt;br /&gt;
* for technical questions (including package installation requests), send an email to our systems committee, syscom at csclub.uwaterloo.ca.&lt;br /&gt;
&lt;br /&gt;
== Web Hosting ==&lt;br /&gt;
You get web space with your CSC membership. Your website is visible at [http://csclub.uwaterloo.ca/~j7smith] (where j7smith is replaced with your own userid, of course).&lt;br /&gt;
&lt;br /&gt;
See [[Web Hosting]] for more information.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
We have an IRC (internet relay chat) channel. Come hang out with us in #csc on freenode. If you are unfamiliar with IRC, you may want to read [[How to IRC|this guide]].&lt;br /&gt;
&lt;br /&gt;
== Mail ==&lt;br /&gt;
* see the [[Mail]] page.&lt;br /&gt;
* The CSC gets a lot of requests to distribute [[Industry Opportunities]] to our members. We have a special opt-in mailing list for the people that want to hear about such things.&lt;br /&gt;
* We have a low-volume general mailing list which we use to send out information about upcoming events.&lt;br /&gt;
&lt;br /&gt;
== Library ==&lt;br /&gt;
There are books on the shelves lining the office. Feel free to drop by and read them.&lt;br /&gt;
&lt;br /&gt;
Someone who knows more about the library checkout system than jy2wong should write something here.&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Club_Hosting&amp;diff=3825</id>
		<title>Club Hosting</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Club_Hosting&amp;diff=3825"/>
		<updated>2015-09-03T04:09:39Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Update formatting, link to Web hosting and MySQL pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Computer Science Club provides web hosting to other clubs free of charge. We host many club web sites and mailing lists. If you have a question about our hosting service, contact syscom@csclub.uwaterloo.ca or visit our office in MC 3036.&lt;br /&gt;
&lt;br /&gt;
== Hosting Features ==&lt;br /&gt;
&lt;br /&gt;
* 4 GB web space&lt;br /&gt;
* Scripting&lt;br /&gt;
** PHP (mod_fcgid)&lt;br /&gt;
** Perl (mod_fcgid)&lt;br /&gt;
** Python (mod_fcgid)&lt;br /&gt;
*** Django (mod_wsgi)&lt;br /&gt;
** Ruby (mod_fcgid)&lt;br /&gt;
* Databases&lt;br /&gt;
** [[MySQL]]&lt;br /&gt;
&lt;br /&gt;
This is not an exhaustive list. Contact us if you want something not listed or installed.&lt;br /&gt;
&lt;br /&gt;
== Getting Hosted ==&lt;br /&gt;
&lt;br /&gt;
To get hosted, you need a &#039;&#039;&#039;club account&#039;&#039;&#039; and one &#039;&#039;&#039;user account&#039;&#039;&#039; for each person who will be updating the club&#039;s web site or other files.&lt;br /&gt;
&lt;br /&gt;
=== Club Account ===&lt;br /&gt;
&lt;br /&gt;
Each club we host has a &amp;quot;club account&amp;quot; that owns and stores club resources. You can request a club account via email or in person. The club account:&lt;br /&gt;
&lt;br /&gt;
* Is named after the club, possibly abbreviated.&lt;br /&gt;
* Has a home directory named /users/clubname, where club files are stored.&lt;br /&gt;
* Is not permitted to log in. You must use your own user account to login.&lt;br /&gt;
&lt;br /&gt;
The Systems Committee will create club accounts when sent a request from the club&#039;s email address to syscom@csclub.uwaterloo.ca. Verification of the club&#039;s university affiliation may be required, for instance by contacting the Federation of Students or the club&#039;s faculty advisor.&lt;br /&gt;
&lt;br /&gt;
=== User Accounts ===&lt;br /&gt;
&lt;br /&gt;
Each user who needs access to the club account must have his/her own user account on our machines. There are two ways to get an account:&lt;br /&gt;
&lt;br /&gt;
* Become a member of the Computer Science Club. Membership is $2.00 per term.&lt;br /&gt;
* Request a free &amp;quot;club representative&amp;quot; account. These accounts are to be used solely for managing the club account, and expire at the end of the term.&lt;br /&gt;
&lt;br /&gt;
In both cases, you must come to MC 3036/3037 in person for initial registration. Club representatives can request renewal of their free accounts if they still need the account in future terms. Renewal can be done in person or via email.&lt;br /&gt;
&lt;br /&gt;
Your user account must also be authorized to change club files. Each club has a &amp;quot;club group&amp;quot; whose members may update the clubs files. We add (and remove) users to the group when we are asked to do so by the club exec. The exec must email the Systems Committee (syscom@csclub.uwaterloo.ca) from a club email address.&lt;br /&gt;
&lt;br /&gt;
Any office staff member may create and renew both member and club representative accounts using [[ceo]]. Only Systems Committee members may modify club access lists.&lt;br /&gt;
&lt;br /&gt;
== Accessing Club Resources ==&lt;br /&gt;
&lt;br /&gt;
At this point, you have a user account and a club account, and need to get started with your web site. Before you can do anything, you need to log into our machines somehow. &lt;br /&gt;
&lt;br /&gt;
=== Shell Access ===&lt;br /&gt;
&lt;br /&gt;
To gain shell access to your site, you can:&lt;br /&gt;
&lt;br /&gt;
* Log in using a terminal in the office&lt;br /&gt;
* Log in from anywhere using SSH. Our web server (caffeine) is available at csclub.uwaterloo.ca.&lt;br /&gt;
&lt;br /&gt;
The club&#039;s files are stored in /users/clubname.&lt;br /&gt;
&lt;br /&gt;
If you want, you can become the club user by typing &amp;quot;become_club clubname&amp;quot;. This is not usually necessary, as the permissions should allow you to make changes as yourself.&lt;br /&gt;
&lt;br /&gt;
=== SFTP File Access ===&lt;br /&gt;
&lt;br /&gt;
You may access files stored on our servers, or upload new ones, via SFTP and SCP. If you are a Windows user you should use [http://winscp.net/ WinSCP] or a similar client with SFTP/SCP abilities. If you are using OS X you can use the sftp or scp Terminal commands, or you can install a graphical client such as [http://cyberduck.ch/ Cyberduck]. Similarly on GNU/Linux you can use the shell commands or a graphical client such as gftp.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
=== Web Hosting ===&lt;br /&gt;
&lt;br /&gt;
See [[Web Hosting]].&lt;br /&gt;
&lt;br /&gt;
=== Databases ===&lt;br /&gt;
&lt;br /&gt;
See [[MySQL]].&lt;br /&gt;
&lt;br /&gt;
You can create a MySQL database yourself through [[ceo]] by following [[MySQL#Using_ceo|these instructions]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3824</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3824"/>
		<updated>2015-09-03T04:02:13Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Guides */  Update hosting guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Wiki of the [[Computer Science Club]]. Feel free to start adding pages and information.&lt;br /&gt;
&lt;br /&gt;
[[Special:AllPages]]&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[ New Member Guide]]&lt;br /&gt;
* [[Budget Guide]]&lt;br /&gt;
* [[Club Hosting]]&lt;br /&gt;
* [[Web Hosting]]&lt;br /&gt;
* [[Exec Manual]]&lt;br /&gt;
* [[Imapd Guide]]&lt;br /&gt;
* [[MEF Guide]]&lt;br /&gt;
* [[Office Policies]]&lt;br /&gt;
* [[Office Staff]]&lt;br /&gt;
* [[How to IRC]]&lt;br /&gt;
* [[Talks Guide]]&lt;br /&gt;
* [[SCS Guide]]&lt;br /&gt;
* [[Kerberos | Password Reset ]]&lt;br /&gt;
* [[Disk Drive RMA Process]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Meetings]]&lt;br /&gt;
* [[Talks]]&lt;br /&gt;
* [[Projects]]&lt;br /&gt;
* [[Industry Opportunities]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Machine/System Documentation ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Backups]]&lt;br /&gt;
* [[ceo]]&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[Debian Repository]]&lt;br /&gt;
* [[Digital Cutter]]&lt;br /&gt;
* [[Directory Services]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Hardware]]&lt;br /&gt;
* [[Kerberos]]&lt;br /&gt;
* [[Machine List]]&lt;br /&gt;
* [[Mail]]&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Mirror]]&lt;br /&gt;
* [[Music]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[NetApp]]&lt;br /&gt;
* [[New CSC Machine]]&lt;br /&gt;
* [[NFS/Kerberos]]&lt;br /&gt;
* [[OID Assignment]]&lt;br /&gt;
* [[Printing]]&lt;br /&gt;
* [[Pulseaudio]]&lt;br /&gt;
* [[Robot Arm]]&lt;br /&gt;
* [[Scratch]]&lt;br /&gt;
* [[SNMP]]&lt;br /&gt;
* [[Serial Connections]]&lt;br /&gt;
* [[SSL]]&lt;br /&gt;
* [[Switches]]&lt;br /&gt;
* [[Syscom Todo]]&lt;br /&gt;
* [[Systems Committee]]&lt;br /&gt;
* [[UID/GID Assignment]]&lt;br /&gt;
* [[Webcams]]&lt;br /&gt;
* [[Webmail]]&lt;br /&gt;
* [[Website]]&lt;br /&gt;
* [[Virtualization]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Budget]]&lt;br /&gt;
* [[Executive]]&lt;br /&gt;
* [[Past Executive]]&lt;br /&gt;
* [[Frosh]]&lt;br /&gt;
* [[History]]&lt;br /&gt;
* [[Library]]&lt;br /&gt;
* [[MEF Proposals]]&lt;br /&gt;
* [[Term Notes]]&lt;br /&gt;
&amp;lt;/div&amp;gt; __NOTOC__&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3823</id>
		<title>Web Hosting</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3823"/>
		<updated>2015-09-03T03:59:37Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* uwaterloo.ca domain Names */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CSC offers web hosting for [[Club Hosting|clubs]] and [http://csclub.uwaterloo.ca/about/ our members] in accordance with our [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. This is a quick guide for the kinds of hosting we offer on our webserver, &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;, also known as [[Machine List#caffeine|caffeine]].&lt;br /&gt;
&lt;br /&gt;
We run an Apache httpd webserver and we offer you the use of a [[MySQL|MySQL database]].&lt;br /&gt;
&lt;br /&gt;
== What can I host on my website? ==&lt;br /&gt;
&lt;br /&gt;
Web hosting is provided in accordance with the CSC [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. As a reminder, you are &#039;&#039;&#039;not permitted&#039;&#039;&#039; to host any of the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ads.&#039;&#039;&#039; Advertisements are not permitted because using our machines for commercial purposes is forbidden by university policy.&lt;br /&gt;
* &#039;&#039;&#039;Your start-up&#039;s website.&#039;&#039;&#039; Again, commercial use of our hosting is not permitted.&lt;br /&gt;
* &#039;&#039;&#039;Unauthorized copyrighted materials.&#039;&#039;&#039; Violating the law is a violation of our Machine Usage Agreement.&lt;br /&gt;
&lt;br /&gt;
Please note that &#039;&#039;&#039;this is not an exhaustive list. Websites may be taken down &#039;&#039;without notice&#039;&#039;&#039;&#039;&#039; at the discretion of the Systems Committee.&lt;br /&gt;
&lt;br /&gt;
Some great examples of things members host on our webserver:&lt;br /&gt;
&lt;br /&gt;
* Academic projects!&lt;br /&gt;
* A personal website or blog!&lt;br /&gt;
* [[Club Hosting|Club websites!]]&lt;br /&gt;
&lt;br /&gt;
== DNS and Your Domain Name ==&lt;br /&gt;
&lt;br /&gt;
You can serve files without any additional configuration by placing them in your &amp;lt;tt&amp;gt;www&amp;lt;/tt&amp;gt; directory and accessing them at &amp;lt;tt&amp;gt;http://csclub.uwaterloo.ca/~userid&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;userid&amp;lt;/tt&amp;gt; is your CSC user ID. However, many of our members and clubs prefer to use a custom domain name.&lt;br /&gt;
&lt;br /&gt;
=== uwaterloo.ca domain Names ===&lt;br /&gt;
&lt;br /&gt;
If you represent a UWaterloo organization, you may be eligible for a custom &amp;lt;tt&amp;gt;uwaterloo.ca&amp;lt;/tt&amp;gt; domain name, such as &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;. We can request this on your behalf.&lt;br /&gt;
&lt;br /&gt;
In order to do so, we must have verified that the organization is a legitimate UWaterloo-affiliated group, and that you, the representative, are authorized to request a domain name on their behalf. This all takes place when you request [[Club Hosting|club hosting]] with the Computer Science Club.&lt;br /&gt;
&lt;br /&gt;
Once you register as a club representative of your particular organization, you can send an email from your official club account to syscom@csclub.uwaterloo.ca to request the domain &amp;lt;tt&amp;gt;yourdomain.uwaterloo.ca&amp;lt;/tt&amp;gt;. Assuming it is available, we will file a ticket and request the domain in your name.&lt;br /&gt;
&lt;br /&gt;
=== Your personal domain name ===&lt;br /&gt;
&lt;br /&gt;
These virtual hosts must be approved by the Executive and Systems Committee. If interested, send syscom@csclub.uwaterloo.ca an email. If your request is approved, the Systems Committee will direct you to create a CNAME record for your domain and point it at &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Static Sites ==&lt;br /&gt;
&lt;br /&gt;
You can place all your static content into your web directory, &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have been approved for a virtual host, you can access this content using your personal domain once the Systems Committee makes the appropriate configuration changes. Here is an example configuration file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName foobar.uwaterloo.ca&lt;br /&gt;
  	ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
  	ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
  	DocumentRoot /users/userid/www/&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
  	CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dynamic Sites ==&lt;br /&gt;
&lt;br /&gt;
If you require use of a database, we offer you the sole choice of MySQL. See [[MySQL|this guide]] for how to create your database and connect to MySQL.&lt;br /&gt;
&lt;br /&gt;
=== ***NOTICE*** ===&lt;br /&gt;
&lt;br /&gt;
  We &#039;&#039;&#039;STRONGLY&#039;&#039;&#039; discourage the use of content management systems such as&lt;br /&gt;
  WordPress. These packages are notorious for the number of security&lt;br /&gt;
  vulnerabilities they contain and pose a threat to our systems if they are not&lt;br /&gt;
  kept up to date. The Systems Committee &#039;&#039;&#039;WILL,&#039;&#039;&#039; at its discretion, disable&lt;br /&gt;
  any website using a package such as WordPress that is not updated to the latest&lt;br /&gt;
  version or that is found to contain exploitable security flaws. In such a case,&lt;br /&gt;
  the member or club serving that site will be notified of the termination; the&lt;br /&gt;
  site will not be re-enabled until the issues are addressed.&lt;br /&gt;
&lt;br /&gt;
=== Using PHP ===&lt;br /&gt;
&lt;br /&gt;
Because we use Apache, it&#039;s as simple as placing your &amp;lt;tt&amp;gt;index.php&amp;lt;/tt&amp;gt; file in your &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;. That&#039;s it!&lt;br /&gt;
&lt;br /&gt;
You can even include rewrite rules in an &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; file in your web directory.&lt;br /&gt;
&lt;br /&gt;
=== Using FCGI ===&lt;br /&gt;
&lt;br /&gt;
We support the use of &amp;lt;tt&amp;gt;mod_fcgid&amp;lt;/tt&amp;gt;, which runs all of our PHP applications and more. If you&#039;ve set up your PHP application as above, it is very unlikely this will need further configuration. However, we can and may tweak &amp;lt;tt&amp;gt;Fcgid*&amp;lt;/tt&amp;gt; directives to ensure optimal performance of our hosting across websites.&lt;br /&gt;
&lt;br /&gt;
=== Using WSGI ===&lt;br /&gt;
&lt;br /&gt;
We newly support &amp;lt;tt&amp;gt;mod_wsgi&amp;lt;/tt&amp;gt; for dynamic frameworks you may not want to run through FCGI, such as Django. If you&#039;d like to set up one of these sites, you&#039;ll need Systems Committee approval and assistance with the configuration. You will be responsible for setting up the site in your home directory and all the associated WSGI scripts.&lt;br /&gt;
&lt;br /&gt;
Here is a sample configuration file for a Django site:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName foobar.uwaterloo.ca&lt;br /&gt;
    ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
    ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
    ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
    CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &lt;br /&gt;
    WSGIDaemonProcess process_name python-path=your/path/here/:possibly:/users/userid/site:/users/userid/.env/...&lt;br /&gt;
    WSGIScriptAlias / /path/to/your/wsgi/script&lt;br /&gt;
    WSGIProcessGroup process_name&lt;br /&gt;
  &lt;br /&gt;
    Alias /robots.txt /path/if/necessary/robots.txt&lt;br /&gt;
    Alias /favicon.ico /path/if/necessary/favicon.ico&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;Directory /path/to/your/wsgi/script&amp;gt;&lt;br /&gt;
      &amp;lt;Files wsgi.py&amp;gt;&lt;br /&gt;
        Require all granted&lt;br /&gt;
      &amp;lt;/Files&amp;gt;&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3822</id>
		<title>Web Hosting</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3822"/>
		<updated>2015-09-03T03:58:10Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* uwaterloo.ca domain Names */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CSC offers web hosting for [[Club Hosting|clubs]] and [http://csclub.uwaterloo.ca/about/ our members] in accordance with our [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. This is a quick guide for the kinds of hosting we offer on our webserver, &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;, also known as [[Machine List#caffeine|caffeine]].&lt;br /&gt;
&lt;br /&gt;
We run an Apache httpd webserver and we offer you the use of a [[MySQL|MySQL database]].&lt;br /&gt;
&lt;br /&gt;
== What can I host on my website? ==&lt;br /&gt;
&lt;br /&gt;
Web hosting is provided in accordance with the CSC [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. As a reminder, you are &#039;&#039;&#039;not permitted&#039;&#039;&#039; to host any of the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ads.&#039;&#039;&#039; Advertisements are not permitted because using our machines for commercial purposes is forbidden by university policy.&lt;br /&gt;
* &#039;&#039;&#039;Your start-up&#039;s website.&#039;&#039;&#039; Again, commercial use of our hosting is not permitted.&lt;br /&gt;
* &#039;&#039;&#039;Unauthorized copyrighted materials.&#039;&#039;&#039; Violating the law is a violation of our Machine Usage Agreement.&lt;br /&gt;
&lt;br /&gt;
Please note that &#039;&#039;&#039;this is not an exhaustive list. Websites may be taken down &#039;&#039;without notice&#039;&#039;&#039;&#039;&#039; at the discretion of the Systems Committee.&lt;br /&gt;
&lt;br /&gt;
Some great examples of things members host on our webserver:&lt;br /&gt;
&lt;br /&gt;
* Academic projects!&lt;br /&gt;
* A personal website or blog!&lt;br /&gt;
* [[Club Hosting|Club websites!]]&lt;br /&gt;
&lt;br /&gt;
== DNS and Your Domain Name ==&lt;br /&gt;
&lt;br /&gt;
You can serve files without any additional configuration by placing them in your &amp;lt;tt&amp;gt;www&amp;lt;/tt&amp;gt; directory and accessing them at &amp;lt;tt&amp;gt;http://csclub.uwaterloo.ca/~userid&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;userid&amp;lt;/tt&amp;gt; is your CSC user ID. However, many of our members and clubs prefer to use a custom domain name.&lt;br /&gt;
&lt;br /&gt;
=== uwaterloo.ca domain Names ===&lt;br /&gt;
&lt;br /&gt;
If you represent a UWaterloo organization, you may be eligible for a custom &amp;lt;tt&amp;gt;uwaterloo.ca&amp;lt;/tt&amp;gt; domain name, such as &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;. We can request this on your behalf.&lt;br /&gt;
&lt;br /&gt;
In order to do so, we must have verified that the organization is a legitimate UWaterloo-affiliated group, and that you, the representative, are authorized to request a domain name on their behalf. This all takes place when you request [[club hosting]] with the Computer Science Club.&lt;br /&gt;
&lt;br /&gt;
Once you register as a club representative of your particular organization, you can send an email from your official club account to syscom@csclub.uwaterloo.ca to request the domain &amp;lt;tt&amp;gt;yourdomain.uwaterloo.ca&amp;lt;/tt&amp;gt;. Assuming it is available, we will file a ticket and request the domain in your name.&lt;br /&gt;
&lt;br /&gt;
=== Your personal domain name ===&lt;br /&gt;
&lt;br /&gt;
These virtual hosts must be approved by the Executive and Systems Committee. If interested, send syscom@csclub.uwaterloo.ca an email. If your request is approved, the Systems Committee will direct you to create a CNAME record for your domain and point it at &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Static Sites ==&lt;br /&gt;
&lt;br /&gt;
You can place all your static content into your web directory, &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have been approved for a virtual host, you can access this content using your personal domain once the Systems Committee makes the appropriate configuration changes. Here is an example configuration file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName foobar.uwaterloo.ca&lt;br /&gt;
  	ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
  	ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
  	DocumentRoot /users/userid/www/&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
  	CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dynamic Sites ==&lt;br /&gt;
&lt;br /&gt;
If you require use of a database, we offer you the sole choice of MySQL. See [[MySQL|this guide]] for how to create your database and connect to MySQL.&lt;br /&gt;
&lt;br /&gt;
=== ***NOTICE*** ===&lt;br /&gt;
&lt;br /&gt;
  We &#039;&#039;&#039;STRONGLY&#039;&#039;&#039; discourage the use of content management systems such as&lt;br /&gt;
  WordPress. These packages are notorious for the number of security&lt;br /&gt;
  vulnerabilities they contain and pose a threat to our systems if they are not&lt;br /&gt;
  kept up to date. The Systems Committee &#039;&#039;&#039;WILL,&#039;&#039;&#039; at its discretion, disable&lt;br /&gt;
  any website using a package such as WordPress that is not updated to the latest&lt;br /&gt;
  version or that is found to contain exploitable security flaws. In such a case,&lt;br /&gt;
  the member or club serving that site will be notified of the termination; the&lt;br /&gt;
  site will not be re-enabled until the issues are addressed.&lt;br /&gt;
&lt;br /&gt;
=== Using PHP ===&lt;br /&gt;
&lt;br /&gt;
Because we use Apache, it&#039;s as simple as placing your &amp;lt;tt&amp;gt;index.php&amp;lt;/tt&amp;gt; file in your &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;. That&#039;s it!&lt;br /&gt;
&lt;br /&gt;
You can even include rewrite rules in an &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; file in your web directory.&lt;br /&gt;
&lt;br /&gt;
=== Using FCGI ===&lt;br /&gt;
&lt;br /&gt;
We support the use of &amp;lt;tt&amp;gt;mod_fcgid&amp;lt;/tt&amp;gt;, which runs all of our PHP applications and more. If you&#039;ve set up your PHP application as above, it is very unlikely this will need further configuration. However, we can and may tweak &amp;lt;tt&amp;gt;Fcgid*&amp;lt;/tt&amp;gt; directives to ensure optimal performance of our hosting across websites.&lt;br /&gt;
&lt;br /&gt;
=== Using WSGI ===&lt;br /&gt;
&lt;br /&gt;
We newly support &amp;lt;tt&amp;gt;mod_wsgi&amp;lt;/tt&amp;gt; for dynamic frameworks you may not want to run through FCGI, such as Django. If you&#039;d like to set up one of these sites, you&#039;ll need Systems Committee approval and assistance with the configuration. You will be responsible for setting up the site in your home directory and all the associated WSGI scripts.&lt;br /&gt;
&lt;br /&gt;
Here is a sample configuration file for a Django site:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName foobar.uwaterloo.ca&lt;br /&gt;
    ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
    ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
    ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
    CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &lt;br /&gt;
    WSGIDaemonProcess process_name python-path=your/path/here/:possibly:/users/userid/site:/users/userid/.env/...&lt;br /&gt;
    WSGIScriptAlias / /path/to/your/wsgi/script&lt;br /&gt;
    WSGIProcessGroup process_name&lt;br /&gt;
  &lt;br /&gt;
    Alias /robots.txt /path/if/necessary/robots.txt&lt;br /&gt;
    Alias /favicon.ico /path/if/necessary/favicon.ico&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;Directory /path/to/your/wsgi/script&amp;gt;&lt;br /&gt;
      &amp;lt;Files wsgi.py&amp;gt;&lt;br /&gt;
        Require all granted&lt;br /&gt;
      &amp;lt;/Files&amp;gt;&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3821</id>
		<title>Web Hosting</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Web_Hosting&amp;diff=3821"/>
		<updated>2015-09-03T03:53:58Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Initial draft of page to replace &amp;quot;Member hosting&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CSC offers web hosting for [[Club Hosting|clubs]] and [http://csclub.uwaterloo.ca/about/ our members] in accordance with our [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. This is a quick guide for the kinds of hosting we offer on our webserver, &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;, also known as [[Machine List#caffeine|caffeine]].&lt;br /&gt;
&lt;br /&gt;
We run an Apache httpd webserver and we offer you the use of a [[MySQL|MySQL database]].&lt;br /&gt;
&lt;br /&gt;
== What can I host on my website? ==&lt;br /&gt;
&lt;br /&gt;
Web hosting is provided in accordance with the CSC [http://csclub.uwaterloo.ca/services/machine_usage Machine Usage Agreement]. As a reminder, you are &#039;&#039;&#039;not permitted&#039;&#039;&#039; to host any of the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ads.&#039;&#039;&#039; Advertisements are not permitted because using our machines for commercial purposes is forbidden by university policy.&lt;br /&gt;
* &#039;&#039;&#039;Your start-up&#039;s website.&#039;&#039;&#039; Again, commercial use of our hosting is not permitted.&lt;br /&gt;
* &#039;&#039;&#039;Unauthorized copyrighted materials.&#039;&#039;&#039; Violating the law is a violation of our Machine Usage Agreement.&lt;br /&gt;
&lt;br /&gt;
Please note that &#039;&#039;&#039;this is not an exhaustive list. Websites may be taken down &#039;&#039;without notice&#039;&#039;&#039;&#039;&#039; at the discretion of the Systems Committee.&lt;br /&gt;
&lt;br /&gt;
Some great examples of things members host on our webserver:&lt;br /&gt;
&lt;br /&gt;
* Academic projects!&lt;br /&gt;
* A personal website or blog!&lt;br /&gt;
* [[Club Hosting|Club websites!]]&lt;br /&gt;
&lt;br /&gt;
== DNS and Your Domain Name ==&lt;br /&gt;
&lt;br /&gt;
You can serve files without any additional configuration by placing them in your &amp;lt;tt&amp;gt;www&amp;lt;/tt&amp;gt; directory and accessing them at &amp;lt;tt&amp;gt;http://csclub.uwaterloo.ca/~userid&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;userid&amp;lt;/tt&amp;gt; is your CSC user ID. However, many of our members and clubs prefer to use a custom domain name.&lt;br /&gt;
&lt;br /&gt;
=== uwaterloo.ca domain Names ===&lt;br /&gt;
&lt;br /&gt;
If you represent a UWaterloo organization, you may be eligible for a custom &amp;lt;tt&amp;gt;uwaterloo.ca&amp;lt;/tt&amp;gt; domain name, such as &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;. We can request this on your behalf.&lt;br /&gt;
&lt;br /&gt;
In order to do so, we must have verified that the organization is a legitimate UWaterloo-affiliated group, and that you, the representative, is authorized to request a domain name on their behalf. This all takes place when you request [[club hosting]] with the Computer Science Club.&lt;br /&gt;
&lt;br /&gt;
Once you register as a club representative of your particular organization, you can send an email from your official club account to syscom@csclub.uwaterloo.ca to request the domain &amp;lt;tt&amp;gt;yourdomain.uwaterloo.ca&amp;lt;/tt&amp;gt;. Assuming it is available, we will file a ticket and request the domain in your name.&lt;br /&gt;
&lt;br /&gt;
=== Your personal domain name ===&lt;br /&gt;
&lt;br /&gt;
These virtual hosts must be approved by the Executive and Systems Committee. If interested, send syscom@csclub.uwaterloo.ca an email. If your request is approved, the Systems Committee will direct you to create a CNAME record for your domain and point it at &amp;lt;tt&amp;gt;csclub.uwaterloo.ca&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Static Sites ==&lt;br /&gt;
&lt;br /&gt;
You can place all your static content into your web directory, &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have been approved for a virtual host, you can access this content using your personal domain once the Systems Committee makes the appropriate configuration changes. Here is an example configuration file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName foobar.uwaterloo.ca&lt;br /&gt;
  	ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
  	ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
  	DocumentRoot /users/userid/www/&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
  	CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dynamic Sites ==&lt;br /&gt;
&lt;br /&gt;
If you require use of a database, we offer you the sole choice of MySQL. See [[MySQL|this guide]] for how to create your database and connect to MySQL.&lt;br /&gt;
&lt;br /&gt;
=== ***NOTICE*** ===&lt;br /&gt;
&lt;br /&gt;
  We &#039;&#039;&#039;STRONGLY&#039;&#039;&#039; discourage the use of content management systems such as&lt;br /&gt;
  WordPress. These packages are notorious for the number of security&lt;br /&gt;
  vulnerabilities they contain and pose a threat to our systems if they are not&lt;br /&gt;
  kept up to date. The Systems Committee &#039;&#039;&#039;WILL,&#039;&#039;&#039; at its discretion, disable&lt;br /&gt;
  any website using a package such as WordPress that is not updated to the latest&lt;br /&gt;
  version or that is found to contain exploitable security flaws. In such a case,&lt;br /&gt;
  the member or club serving that site will be notified of the termination; the&lt;br /&gt;
  site will not be re-enabled until the issues are addressed.&lt;br /&gt;
&lt;br /&gt;
=== Using PHP ===&lt;br /&gt;
&lt;br /&gt;
Because we use Apache, it&#039;s as simple as placing your &amp;lt;tt&amp;gt;index.php&amp;lt;/tt&amp;gt; file in your &amp;lt;tt&amp;gt;/users/userid/www&amp;lt;/tt&amp;gt;. That&#039;s it!&lt;br /&gt;
&lt;br /&gt;
You can even include rewrite rules in an &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; file in your web directory.&lt;br /&gt;
&lt;br /&gt;
=== Using FCGI ===&lt;br /&gt;
&lt;br /&gt;
We support the use of &amp;lt;tt&amp;gt;mod_fcgid&amp;lt;/tt&amp;gt;, which runs all of our PHP applications and more. If you&#039;ve set up your PHP application as above, it is very unlikely this will need further configuration. However, we can and may tweak &amp;lt;tt&amp;gt;Fcgid*&amp;lt;/tt&amp;gt; directives to ensure optimal performance of our hosting across websites.&lt;br /&gt;
&lt;br /&gt;
=== Using WSGI ===&lt;br /&gt;
&lt;br /&gt;
We newly support &amp;lt;tt&amp;gt;mod_wsgi&amp;lt;/tt&amp;gt; for dynamic frameworks you may not want to run through FCGI, such as Django. If you&#039;d like to set up one of these sites, you&#039;ll need Systems Committee approval and assistance with the configuration. You will be responsible for setting up the site in your home directory and all the associated WSGI scripts.&lt;br /&gt;
&lt;br /&gt;
Here is a sample configuration file for a Django site:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName foobar.uwaterloo.ca&lt;br /&gt;
    ServerAlias *.foobar.uwaterloo.ca foobar&lt;br /&gt;
    ServerAdmin your@email.here.tld&lt;br /&gt;
  &lt;br /&gt;
    ErrorLog /var/log/apache2/luser-userid-error.log&lt;br /&gt;
    CustomLog /var/log/apache2/luser-userid-access.log combined&lt;br /&gt;
  &lt;br /&gt;
    WSGIDaemonProcess process_name python-path=your/path/here/:possibly:/users/userid/site:/users/userid/.env/...&lt;br /&gt;
    WSGIScriptAlias / /path/to/your/wsgi/script&lt;br /&gt;
    WSGIProcessGroup process_name&lt;br /&gt;
  &lt;br /&gt;
    Alias /robots.txt /path/if/necessary/robots.txt&lt;br /&gt;
    Alias /favicon.ico /path/if/necessary/favicon.ico&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;Directory /path/to/your/wsgi/script&amp;gt;&lt;br /&gt;
      &amp;lt;Files wsgi.py&amp;gt;&lt;br /&gt;
        Require all granted&lt;br /&gt;
      &amp;lt;/Files&amp;gt;&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=New_CSC_Machine&amp;diff=3817</id>
		<title>New CSC Machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=New_CSC_Machine&amp;diff=3817"/>
		<updated>2015-07-28T21:00:52Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* apt */ Remove emdebian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Booting =&lt;br /&gt;
&lt;br /&gt;
* Put the TFTP image in place (if dist-arch pair installed before, you may skip this).&lt;br /&gt;
e.g. extract http://mirror.csclub.uwaterloo.ca/ubuntu/dists/oneiric/main/installer-amd64/current/images/netboot/netboot.tar.gz to caffeine:/srv/tftp/oneiric-amd64&lt;br /&gt;
&lt;br /&gt;
* Force network boot in the BIOS. This may be called &amp;quot;Legacy LAN&amp;quot; or other such cryptic things. If this doesn&#039;t work, boot from CD or USB instead.&lt;br /&gt;
&lt;br /&gt;
It is preferred to use the &amp;quot;alternate&amp;quot; Ubuntu installer image, based on debian-installer, instead of the Ubiquity installer. This installer supports software RAID and LVM out of the box, and will generally make your life easier. If installing Debian, this is the usual installer, so don&#039;t sweat it.&lt;br /&gt;
&lt;br /&gt;
= Installing =&lt;br /&gt;
&lt;br /&gt;
== debian-installer ==&lt;br /&gt;
&lt;br /&gt;
At least in expert mode, you can choose a custom mirror (top of the countries list) and give the path for mirror directly. This will make installation super-fast compared to installing from anywhere else.&lt;br /&gt;
&lt;br /&gt;
Please install to LVM volumes, as this is our standard configuration on all machines where possible. It allows more flexible partitioning across available volumes. Since GRUB 2, even /boot may be on LVM; this is the preferred configuration for simplicity, except when legacy partitioning setups make this inconvenient.&lt;br /&gt;
&lt;br /&gt;
You may enable unattended upgrades, but do not enable Canonical&#039;s remote management service or any such nonsense. This is mostly a straightforward Debian/Ubuntu install.&lt;br /&gt;
&lt;br /&gt;
== Ubiquity ==&lt;br /&gt;
&lt;br /&gt;
Ubiquity is the Ubuntu GUI installer. For it to have lvm support, run:&lt;br /&gt;
 apt-get install lvm2&lt;br /&gt;
&lt;br /&gt;
If you still can&#039;t see the partitions (even if lvscan sees them, but no devices exist), run &amp;lt;tt&amp;gt;vgscan&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;vgchange -ay&amp;lt;/tt&amp;gt; as root. Now the partitioner should be able to see them. We prefer to use LVM for partitions. Since GRUB 2, even /boot may be on LVM; this is the preferred configuration for simplicity, except when legacy partitioning setups make this inconvenient.&lt;br /&gt;
&lt;br /&gt;
After installing with Ubiquity, you must also add LVM support to the newly installed system, and in particular its initramfs.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/vg0/root /mnt&lt;br /&gt;
 mount /dev/sda1 /mnt/boot&lt;br /&gt;
 chroot /mnt&lt;br /&gt;
 apt-get install lvm2&lt;br /&gt;
&lt;br /&gt;
You should see an update-initramfs update. Reboot.&lt;br /&gt;
&lt;br /&gt;
= After Installing =&lt;br /&gt;
&lt;br /&gt;
Add the new machine&#039;s ip to /etc/hosts and propagate to all other machines (~syscom/bin/alldist).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== apt ==&lt;br /&gt;
&lt;br /&gt;
If you did not during installation, change all references in &amp;lt;tt&amp;gt;/etc/apt/sources.list&amp;lt;/tt&amp;gt; to use &amp;lt;tt&amp;gt;mirror&amp;lt;/tt&amp;gt; instead of the usual mirrors.&lt;br /&gt;
&lt;br /&gt;
Also add support for the CSC packages. Add the following to &amp;lt;tt&amp;gt;/etc/apt/sources.list.d/csclub.list&amp;lt;/tt&amp;gt; (or copy from another host):&lt;br /&gt;
&lt;br /&gt;
 deb http://debian.csclub.uwaterloo.ca/ &amp;lt;distribution&amp;gt; main contrib non-free&lt;br /&gt;
 deb-src http://debian.csclub.uwaterloo.ca/ &amp;lt;distribution&amp;gt; main contrib non-free&lt;br /&gt;
&lt;br /&gt;
You&#039;ll also need the CSC archive signing key (if &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; is not installed, install it).&lt;br /&gt;
 curl -s http://debian.csclub.uwaterloo.ca/csclub.asc | apt-key add -&lt;br /&gt;
&lt;br /&gt;
You should now run &amp;lt;tt&amp;gt;apt-get update&amp;lt;/tt&amp;gt; to reflect these changes.&lt;br /&gt;
&lt;br /&gt;
Next, install &amp;lt;tt&amp;gt;inapt&amp;lt;/tt&amp;gt; (it is in the CSC Debian archive). If it hasn&#039;t previously been built for the current platform, clone and build it (TODO: describe how to do this).&lt;br /&gt;
&lt;br /&gt;
Clone &amp;lt;tt&amp;gt;~git/public/packages.git&amp;lt;/tt&amp;gt;, update it if necessary (notably updating &amp;lt;tt&amp;gt;nodes.ia&amp;lt;/tt&amp;gt; to reflect the distribution and role of the machine), then run:&lt;br /&gt;
 inapt *.ia&lt;br /&gt;
&lt;br /&gt;
(Due to a bug, if a warning is thrown, this will segfault. Until fixed, just temporarily remove whatever packages it complains about from the list.)&lt;br /&gt;
&lt;br /&gt;
Warning: this will take a long time due to the large number of packages being installed. Some of the below can be done once the relevant packages are installed, but while other packages are still being installed.&lt;br /&gt;
&lt;br /&gt;
Note that inapt current uninstalls NetworkManager, which is what Ubuntu uses by default to configure the network. Once this completes, open &amp;lt;tt&amp;gt;/etc/network/interfaces&amp;lt;/tt&amp;gt; and set up a static networking configuration (otherwise, networking will not come back up on reboot). It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 # This file describes the network interfaces available on your system&lt;br /&gt;
 # and how to activate them. For more information, see interfaces(5).&lt;br /&gt;
 &lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 auto eth0&lt;br /&gt;
 iface eth0 inet static&lt;br /&gt;
         address 129.97.134.xxx&lt;br /&gt;
         netmask 255.255.255.0&lt;br /&gt;
         gateway 129.97.134.1&lt;br /&gt;
         network 129.97.134.0&lt;br /&gt;
         broadcast 129.97.134.255&lt;br /&gt;
         dns-nameservers 129.97.2.1 129.97.47.5 129.97.47.6&lt;br /&gt;
         dns-search csclub.uwaterloo.ca uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
For unattended upgrades in the future, install the &amp;lt;tt&amp;gt;unattended-upgrades&amp;lt;/tt&amp;gt; package and copy &amp;lt;tt&amp;gt;/etc/apt/apt.conf&amp;lt;/tt&amp;gt; from another host.&lt;br /&gt;
&lt;br /&gt;
== Keys ==&lt;br /&gt;
&lt;br /&gt;
If this is a reinstall of an existing host, copy back the SSH host keys and &amp;lt;tt&amp;gt;/etc/krb5.keytab&amp;lt;/tt&amp;gt; from its former incarnation. Otherwise, create a new Kerberos principal and copy the keytab over, as follows (run from the host in question):&lt;br /&gt;
 kadmin -p sysadmin/admin   # or any other admin principal; the password for this one is the usual root password&lt;br /&gt;
 addprinc -randkey host/[hostname].csclub.uwaterloo.ca&lt;br /&gt;
 ktadd host/[hostname].csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
This will generate a new principal (you can skip this step if one already exists) and add it to the local Kerberos keytab.&lt;br /&gt;
&lt;br /&gt;
Also copy &amp;lt;tt&amp;gt;/etc/ssl/certs/GlobalSign_Intermediate_Root_SHA256_G2.pem&amp;lt;/tt&amp;gt; from another host, as many of our services use a certificate issued by this CA.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
The following config files are needed to work in the CSC environment (examples given below for an office terminal; perhaps refer to another host if preferred).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/nsswitch.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
 # /etc/nsswitch.conf&lt;br /&gt;
 #&lt;br /&gt;
 # Example configuration of GNU Name Service Switch functionality.&lt;br /&gt;
 # If you have the `glibc-doc-reference&#039; and `info&#039; packages installed, try:&lt;br /&gt;
 # `info libc &amp;quot;Name Service Switch&amp;quot;&#039; for information about this file.&lt;br /&gt;
 &lt;br /&gt;
 passwd:         files ldap&lt;br /&gt;
 group:          files ldap&lt;br /&gt;
 shadow:         files ldap&lt;br /&gt;
 sudoers:        files ldap&lt;br /&gt;
 &lt;br /&gt;
 hosts:          files dns&lt;br /&gt;
 networks:       files&lt;br /&gt;
 &lt;br /&gt;
 protocols:      db files&lt;br /&gt;
 services:       db files&lt;br /&gt;
 ethers:         db files&lt;br /&gt;
 rpc:            db files&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/ldap/ldap.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $&lt;br /&gt;
 #&lt;br /&gt;
 # LDAP Defaults&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 # See ldap.conf(5) for details&lt;br /&gt;
 # This file should be world readable but not world writable.&lt;br /&gt;
 &lt;br /&gt;
 BASE   dc=csclub, dc=uwaterloo, dc=ca&lt;br /&gt;
 URI     ldap://ldap1.csclub.uwaterloo.ca ldap://ldap2.csclub.uwaterloo.ca&lt;br /&gt;
 &lt;br /&gt;
 SIZELIMIT      0&lt;br /&gt;
 &lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/GlobalSign_Intermediate_Root.pem&lt;br /&gt;
 TLS_CACERTFILE /etc/ssl/certs/GlobalSign_Intermediate_Root.pem&lt;br /&gt;
 &lt;br /&gt;
 SUDOERS_BASE    ou=SUDOers,dc=csclub,dc=uwaterloo,dc=ca&lt;br /&gt;
&lt;br /&gt;
Also make &amp;lt;tt&amp;gt;/etc/sudo-ldap.conf&amp;lt;/tt&amp;gt; a symlink to the above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/nslcd.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
 # /etc/nslcd.conf&lt;br /&gt;
 # nslcd configuration file. See nslcd.conf(5)&lt;br /&gt;
 # for details.&lt;br /&gt;
 &lt;br /&gt;
 # The user and group nslcd should run as.&lt;br /&gt;
 uid nslcd&lt;br /&gt;
 gid nslcd&lt;br /&gt;
 &lt;br /&gt;
 # The location at which the LDAP server(s) should be reachable.&lt;br /&gt;
 uri ldap://ldap1.csclub.uwaterloo.ca&lt;br /&gt;
 uri ldap://ldap2.csclub.uwaterloo.ca&lt;br /&gt;
 &lt;br /&gt;
 # The search base that will be used for all queries.&lt;br /&gt;
 base dc=csclub,dc=uwaterloo,dc=ca&lt;br /&gt;
 &lt;br /&gt;
 # use the uniqueMember attribute for group membership&lt;br /&gt;
 # (not applicable on Debian squeeze)&lt;br /&gt;
 map group member uniqueMember&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/krb5.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
 [libdefaults]&lt;br /&gt;
         default_realm = CSCLUB.UWATERLOO.CA&lt;br /&gt;
         forwardable = true&lt;br /&gt;
         proxiable = true&lt;br /&gt;
         dns_lookup_kdc = false&lt;br /&gt;
         dns_lookup_realm = false&lt;br /&gt;
 &lt;br /&gt;
 [realms]&lt;br /&gt;
         CSCLUB.UWATERLOO.CA = {&lt;br /&gt;
                 kdc = kdc1.csclub.uwaterloo.ca&lt;br /&gt;
                 kdc = kdc2.csclub.uwaterloo.ca&lt;br /&gt;
                 admin_server = kadmin.csclub.uwaterloo.ca&lt;br /&gt;
         }&lt;br /&gt;
 (rest omitted for brevity)&lt;br /&gt;
&lt;br /&gt;
Update: &amp;lt;tt&amp;gt;allow_weak_crypto&amp;lt;/tt&amp;gt; is basically a no-op in recent Kerberos versions - but this is not a problem as any linux kernel with version &amp;gt;= 2.6.38.2 can use any cipher available to the kernel to grab tickets from the KDC for the purpose of NFS sec=krb5. Notably, this means you can use ciphersuites less craptastic than des-cbc-crc (the only one that used to work prior to this kernel revision) for NFS sec=krb5 mounts. Therefore, &amp;lt;tt&amp;gt;allow_weak_crypto&amp;lt;/tt&amp;gt; has been removed from /etc/krb5.conf on all our machines.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the lines &amp;lt;tt&amp;gt;dns_lookup_kdc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;dns_lookup_realm&amp;lt;/tt&amp;gt; have been added - they are needed to stop the KDC from throwing its arms in the air and giving up if IST&#039;s DNS servers ever explode - an event that has happened in the recent past far more often than I&#039;d like it to.&lt;br /&gt;
&lt;br /&gt;
Notably, &amp;lt;tt&amp;gt;allow_weak_crypto&amp;lt;/tt&amp;gt; is currently needed to mount &amp;lt;tt&amp;gt;/users&amp;lt;/tt&amp;gt; (/music and &amp;lt;tt&amp;gt;/scratch&amp;lt;/tt&amp;gt; is sec=sys and thus will always mount, even when krb5 is down and/or broken). Otherwise, you will get a mysterious &amp;quot;permission denied&amp;quot; error (even though the server claims to have authenticated the mount successfully).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/pam.d/common-account&amp;lt;/tt&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # /etc/pam.d/common-account - authorization settings common to all services&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 # here are the per-package modules (the &amp;quot;Primary&amp;quot; block)&lt;br /&gt;
 account        [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so &lt;br /&gt;
 # here&#039;s the fallback if no module succeeds&lt;br /&gt;
 account        requisite                       pam_deny.so&lt;br /&gt;
 # prime the stack with a positive return value if there isn&#039;t one already;&lt;br /&gt;
 # this avoids us returning an error just because nothing sets a success code&lt;br /&gt;
 # since the modules above will each just jump around&lt;br /&gt;
 account        required                        pam_permit.so&lt;br /&gt;
 # and here are more per-package modules (the &amp;quot;Additional&amp;quot; block)&lt;br /&gt;
 account        required                        pam_krb5.so minimum_uid=10000&lt;br /&gt;
 # end of pam-auth-update config&lt;br /&gt;
 &lt;br /&gt;
 # Make sure the user is up to date. System accounts and syscom are exempt.&lt;br /&gt;
 account [success=2 default=ignore]     pam_succeed_if.so quiet uid &amp;lt; 10000&lt;br /&gt;
 account [success=1 default=ignore]     pam_succeed_if.so quiet user ingroup syscom&lt;br /&gt;
 account required        pam_csc.so&lt;br /&gt;
&lt;br /&gt;
This file is notably different on syscom-only hosts. Look at an existing syscom-only host to see the difference.&lt;br /&gt;
&lt;br /&gt;
Alter &amp;lt;tt&amp;gt;/etc/default/nfs-common&amp;lt;/tt&amp;gt; to enable &amp;lt;tt&amp;gt;statd&amp;lt;/tt&amp;gt;, and more importantly &amp;lt;tt&amp;gt;gssd&amp;lt;/tt&amp;gt; (needed for Kerberos NFS mounts). Start both daemons manually for now.&lt;br /&gt;
&lt;br /&gt;
Add &amp;lt;tt&amp;gt;/users&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/music&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/scratch&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;/etc/fstab&amp;lt;/tt&amp;gt; (as appropriate for the machine&#039;s role), make their mount points and mount them. Note that &amp;lt;tt&amp;gt;/music&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/scratch&amp;lt;/tt&amp;gt; are sec=sys whereas /users is sec=krb5 (with exceptions granted on a case-by-case basis for servers only, office terminals are always sec=krb5 for security reasons).&lt;br /&gt;
&lt;br /&gt;
To allow single sign-on as &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt; (primarily useful for pushing files to all machines simultaneously), put the following in &amp;lt;tt&amp;gt;/root/.k5login&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 sysadmin/admin@CSCLUB.UWATERLOO.CA&lt;br /&gt;
&lt;br /&gt;
Also copy the following files from another CSC host:&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/ssh/ssh_config&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/etc/ssh/sshd_config&amp;lt;/tt&amp;gt; (for single sign-on)&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/ssh/ssh_known_hosts&amp;lt;/tt&amp;gt; (to remove hostkey warnings within our network)&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/hosts&amp;lt;/tt&amp;gt; (for host tab completion and emergency name resolution)&lt;br /&gt;
&lt;br /&gt;
=== Display Manager ===&lt;br /&gt;
&lt;br /&gt;
LightDM (with unity-greeter) is the current display manager of choice for CSC office terminals. Copy &amp;lt;tt&amp;gt;/etc/lightdm/lightdm.conf&amp;lt;/tt&amp;gt; from another CSC machine to configure it properly. If kdm or another display manager gets installed, please ensure that you continue to choose LightDM as the default display manager.&lt;br /&gt;
&lt;br /&gt;
Please leave AccountsService enabled, as LightDM and certain parts of the GNOME packages work better when it is available.&lt;br /&gt;
&lt;br /&gt;
The Unity greeter configuration is now in gsettings. We currently have a novelty wallpaper configured. To configure this, copy &amp;lt;tt&amp;gt;/usr/local/share/backgrounds/tarkin.png&amp;lt;/tt&amp;gt; from another machine and run:&lt;br /&gt;
&lt;br /&gt;
 sudo -u lightdm dbus-launch gsettings set com.canonical.unity-greeter background /usr/local/share/backgrounds/tarkin.png&lt;br /&gt;
&lt;br /&gt;
=== User-Defined Session ===&lt;br /&gt;
&lt;br /&gt;
For some reason, ubuntu does not install a session file for a session that just launches whatever&#039;s in the user&#039;s ~/.xsession. To fix this, put the following into &amp;lt;tt&amp;gt;/usr/share/xsessions/xsession.desktop&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Name=User-defined session&lt;br /&gt;
 Exec=/etc/X11/Xsession&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
On an office terminal, copy &amp;lt;tt&amp;gt;/etc/pulse/default.pa&amp;lt;/tt&amp;gt; from another office terminal.&lt;br /&gt;
&lt;br /&gt;
If this is to be the machine that actually plays audio (currently &amp;lt;tt&amp;gt;nullsleep&amp;lt;/tt&amp;gt;), the setup is slightly more complicated. You&#039;ll need to set up MPD and PulseAudio to receive connections, and store the PulseAudio cookie in &amp;lt;tt&amp;gt;~audio&amp;lt;/tt&amp;gt;, with appropriate permissions so that only the &amp;lt;tt&amp;gt;audio&amp;lt;/tt&amp;gt; group can access it. If this is a new audio machine, you&#039;ll also need to change &amp;lt;tt&amp;gt;default.pa&amp;lt;/tt&amp;gt; on all office terminals to point to it.&lt;br /&gt;
&lt;br /&gt;
=== Tweaks ===&lt;br /&gt;
&lt;br /&gt;
On Ubuntu precise, even when &amp;lt;tt&amp;gt;gnome-keyring&amp;lt;/tt&amp;gt; is uninstalled, it leaves a config file behind that causes error messages. Remove &amp;lt;tt&amp;gt;/etc/pkcs11/modules/gnome-keyring-module&amp;lt;/tt&amp;gt; to fix this.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu saucy or newer, edit &amp;lt;tt&amp;gt;/etc/sysctl.d/10-magic-sysrq&amp;lt;/tt&amp;gt; at change the value 244.&lt;br /&gt;
&lt;br /&gt;
== Records ==&lt;br /&gt;
&lt;br /&gt;
You probably already created the host in the University IPAM system beforehand. If not, please do so.&lt;br /&gt;
&lt;br /&gt;
Please also add the host to the [[Machine List]] here on the Wiki, and to &amp;lt;tt&amp;gt;/users/syscom/csc-machines&amp;lt;/tt&amp;gt; (and &amp;lt;tt&amp;gt;csc-office-machines&amp;lt;/tt&amp;gt;, if applicable).&lt;br /&gt;
&lt;br /&gt;
== Munin (System Monitoring) ==&lt;br /&gt;
&lt;br /&gt;
If the new machine is not a container, you probably want to have it participate in the Munin cluster. Run &amp;lt;tt&amp;gt;apt-get install munin-node&amp;lt;/tt&amp;gt; to install the monitoring client, then&lt;br /&gt;
edit the file /etc/munin/munin-node.conf. Look for a line that says &amp;lt;tt&amp;gt;allow ^127\.0\.0\.1$&amp;lt;/tt&amp;gt; and add the following on a new line immediately below it:&lt;br /&gt;
&amp;lt;tt&amp;gt;allow ^129\.97\.134\.51$&amp;lt;/tt&amp;gt; (this is the IP address for munin.csclub). Save the file, then &amp;lt;tt&amp;gt;/etc/init.d/munin-node restart&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;update-rc.d munin-node defaults&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then, ssh into munin.csclub and edit the file /etc/munin/munin.conf and add the following lines to the end:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[NEW-MACHINE-NAME.csclub] &amp;lt;br/&amp;gt;&lt;br /&gt;
addr 129.97.134.### &amp;lt;br /&amp;gt;&lt;br /&gt;
use_node_name yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= New Distribution =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re adding a new distribution, there a couple of steps you&#039;ll need to take in updating the CSClub Debian repository on [[Machine_List#sodium_benzoate|sodium-benzoate/mirror]]. &lt;br /&gt;
&lt;br /&gt;
The steps to add a new Debian release (in the examples, jessie) is as follows, modify as necessary:&lt;br /&gt;
&lt;br /&gt;
=== Step 0: Create a GPG key ===&lt;br /&gt;
&lt;br /&gt;
Use &amp;quot;gpg --gen-key&amp;quot; or something like that. Skip this if you already have one.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Add to Uploaders ===&lt;br /&gt;
&lt;br /&gt;
The /srv/debian/conf/uploaders file on mirror contains the list of people who can upload. Add your GPG key id to this file.  Use &amp;quot;gpg --list-secret-keys&amp;quot; to find out the key ID. You also need to import your key into the mirror&#039;s gpg homedir as follows:&lt;br /&gt;
&lt;br /&gt;
 gpg --export $KEYID | sudo env GNUPGHOME=/srv/debian/gpg gpg --import&lt;br /&gt;
&lt;br /&gt;
You only need to do this step once.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Add Distro ===&lt;br /&gt;
&lt;br /&gt;
Add a new section to /srv/debian/conf/distributions:&lt;br /&gt;
&lt;br /&gt;
 Origin: CSC&lt;br /&gt;
 Label: Debian&lt;br /&gt;
 Codename: &#039;&#039;&#039;jessie&#039;&#039;&#039;&lt;br /&gt;
 Architectures: alpha amd64 i386 mips mipsel sparc powerpc armel source&lt;br /&gt;
 Components: main contrib non-free&lt;br /&gt;
 Uploaders: uploaders&lt;br /&gt;
 Update: dell chrome&lt;br /&gt;
 SignWith: yes&lt;br /&gt;
 Log: jessie.log&lt;br /&gt;
  --changes notifier&lt;br /&gt;
&lt;br /&gt;
And update the &#039;&#039;&#039;Allow&#039;&#039;&#039; line in /srv/debian/conf/incoming:&lt;br /&gt;
&lt;br /&gt;
 Allow: &#039;&#039;&#039;jessie&amp;gt;jessie&#039;&#039;&#039; oldstable&amp;gt;squeeze stable&amp;gt;wheezy lucid&amp;gt;lucid maverick&amp;gt;maverick oneiric&amp;gt;oneiric precise&amp;gt;precise quantal&amp;gt;quantal&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Update from Sources ===&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 sudo env GNUPGHOME=/srv/debian/gpg rrr-update&lt;br /&gt;
&lt;br /&gt;
If all went well you should see the new distribution listed at http://debian.csclub.uwaterloo.ca/dists/&lt;br /&gt;
&lt;br /&gt;
=== Step 4: CSC Packages ===&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve got our new distribution set up we need to generate our packages and have them uploaded. Namely, ceo, libpam-csc &amp;amp; inapt. Using libpam-csc as an example:&lt;br /&gt;
&lt;br /&gt;
Get the package:&lt;br /&gt;
&lt;br /&gt;
 git clone ~git/public/libpam-csc.git&lt;br /&gt;
 cd libpam-csc&lt;br /&gt;
&lt;br /&gt;
Update change log:&lt;br /&gt;
&lt;br /&gt;
 EMAIL=[you]@csclub.uwaterloo.ca NAME=&amp;quot;Your Name&amp;quot; dch -i&lt;br /&gt;
&lt;br /&gt;
Update as necessary, i.e:&lt;br /&gt;
&lt;br /&gt;
 libpam-csc (1.10&#039;&#039;&#039;jessie0&#039;&#039;&#039;) &#039;&#039;&#039;jessie&#039;&#039;&#039;; urgency=low&lt;br /&gt;
 &lt;br /&gt;
   * Packaging for jessie.&lt;br /&gt;
 &lt;br /&gt;
  -- Your Name &amp;lt;[you]@csclub.uwaterloo.ca&amp;gt;  Thu, 10 Oct 2013 22:08:48 -0400&lt;br /&gt;
&lt;br /&gt;
Build! (You may need to install various dependencies, which it will yell at you if you don&#039;t have.)&lt;br /&gt;
&lt;br /&gt;
 debuild -k&#039;&#039;&#039;YOURKEYID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yay, it built now let&#039;s upload it to the repo. The build process which create a PACKAGE.changes file in the parent directory (replace PACKAGE with the actual package name).&lt;br /&gt;
&lt;br /&gt;
 dupload libpam-csc_1.10jessie0_amd64.changes&lt;br /&gt;
&lt;br /&gt;
Finally, log into mirror and type &amp;quot;sudo rrr-incoming&amp;quot;. This is supposed to happen once every few minutes however it is always faster to run it manually.&lt;br /&gt;
&lt;br /&gt;
And you&#039;re done. Just repeat the previous bit for other csc packages.&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=3816</id>
		<title>Virtualization (LXC Containers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=3816"/>
		<updated>2015-07-28T20:59:38Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Fix New CSC Machine link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2009, we use [http://lxc.sourceforge.net/ Linux containers] to maintain virtual machines, most notably [[Machine_List#caffeine|caffeine]], which is hosted on [[Machine_List#glomag|glomag]]. The various commands to manipulate Linux containers are prefixed with &amp;quot;lxc-&amp;quot;; see their individual manpages for usage.&lt;br /&gt;
&lt;br /&gt;
= Creating a new container =&lt;br /&gt;
&lt;br /&gt;
Create a new container using `lxc-create`:&lt;br /&gt;
&lt;br /&gt;
 # Create new container &amp;quot;containername&amp;quot; with root fs located at /vm/containername&lt;br /&gt;
 lxc-create --dir=/vm/containername -n containername --template download&lt;br /&gt;
&lt;br /&gt;
This will prompt you for distribution, release, and architecture. (Architecture *must* match host machine.)&lt;br /&gt;
&lt;br /&gt;
 # List containers&lt;br /&gt;
 lxc-ls&lt;br /&gt;
&lt;br /&gt;
to ensure that your container has been successfully created; it should be listed. You can also list its root directory if you like. To start it in the background and obtain a root shell, do&lt;br /&gt;
&lt;br /&gt;
 # Start and attach a root shell&lt;br /&gt;
 lxc-start -d -n containername&lt;br /&gt;
 lxc-attach -n containername&lt;br /&gt;
&lt;br /&gt;
Now you&#039;re ready to [[New CSC Machine#After Installing|configure your machine]].&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&lt;br /&gt;
Networking might not be enabled on your container by default. If this is the case (easily checked with `ifconfig`), you&#039;ll need to modify its config file, located at /var/lib/lxc/containername/config:&lt;br /&gt;
&lt;br /&gt;
 # Network configuration&lt;br /&gt;
 lxc.network.type = veth&lt;br /&gt;
 lxc.network.flags = up&lt;br /&gt;
 &lt;br /&gt;
 # that&#039;s the interface defined above in host&#039;s interfaces file&lt;br /&gt;
 lxc.network.link = br0&lt;br /&gt;
 &lt;br /&gt;
 # name of network device inside the container,&lt;br /&gt;
 # defaults to eth0, you could choose a name freely&lt;br /&gt;
 # lxc.network.name = lxcnet0&lt;br /&gt;
 &lt;br /&gt;
 lxc.network.hwaddr = DE:AD:BE:EF:70:10 # your favourite fake MAC&lt;br /&gt;
 &lt;br /&gt;
 # the ip may be set to 0.0.0.0/24 or skip this line&lt;br /&gt;
 # if you like to use a dhcp client inside the container&lt;br /&gt;
 lxc.network.ipv4 = 129.97.134.XXX/24&lt;br /&gt;
 &lt;br /&gt;
 # define a gateway to have access to the internet&lt;br /&gt;
 lxc.network.ipv4.gateway = 129.97.134.1&lt;br /&gt;
&lt;br /&gt;
= Management Quick Guide =&lt;br /&gt;
&lt;br /&gt;
To manage containers, use the &amp;lt;tt&amp;gt;lxc-*&amp;lt;/tt&amp;gt; tools, which require root privilege. Some examples (replace &amp;lt;tt&amp;gt;caffeine&amp;lt;/tt&amp;gt; with the appropriate container name):&lt;br /&gt;
&lt;br /&gt;
 # check if caffeine is running&lt;br /&gt;
 lxc-info -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # start caffeine in the background&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine gracefully&lt;br /&gt;
 lxc-halt -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine forcefully&lt;br /&gt;
 lxc-stop -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # launch a TTY console for the container&lt;br /&gt;
 lxc-console -n caffeine&lt;br /&gt;
&lt;br /&gt;
To install Linux container support on a recent Debian (squeeze or newer) system:&lt;br /&gt;
* Install the &amp;lt;tt&amp;gt;lxc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;bridge-utils&amp;lt;/tt&amp;gt; packages.&lt;br /&gt;
* Create a bridged network interface (this can be configured in &amp;lt;tt&amp;gt;/etc/network/interfaces&amp;lt;/tt&amp;gt; as though it were a normal Ethernet device, with the additional &amp;lt;tt&amp;gt;bridge_ports&amp;lt;/tt&amp;gt; parameter. This is usually called &amp;lt;tt&amp;gt;br0&amp;lt;/tt&amp;gt; (can be created manually with &amp;lt;tt&amp;gt;brctl&amp;lt;/tt&amp;gt;). LXC will create a virtual Ethernet device and add it to the bridge when each container starts.&lt;br /&gt;
&lt;br /&gt;
To start caffeine, run the following command as root on glomag:&lt;br /&gt;
&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
&lt;br /&gt;
Containers are stored on the host filesystem in /var/lib/lxc (root filesystems are symlinked to the appropriate directory on /vm).&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=3815</id>
		<title>Virtualization (LXC Containers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Virtualization_(LXC_Containers)&amp;diff=3815"/>
		<updated>2015-07-28T20:58:50Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Major LXC update, remove linux vserver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of Fall 2009, we use [http://lxc.sourceforge.net/ Linux containers] to maintain virtual machines, most notably [[Machine_List#caffeine|caffeine]], which is hosted on [[Machine_List#glomag|glomag]]. The various commands to manipulate Linux containers are prefixed with &amp;quot;lxc-&amp;quot;; see their individual manpages for usage.&lt;br /&gt;
&lt;br /&gt;
= Creating a new container =&lt;br /&gt;
&lt;br /&gt;
Create a new container using `lxc-create`:&lt;br /&gt;
&lt;br /&gt;
 # Create new container &amp;quot;containername&amp;quot; with root fs located at /vm/containername&lt;br /&gt;
 lxc-create --dir=/vm/containername -n containername --template download&lt;br /&gt;
&lt;br /&gt;
This will prompt you for distribution, release, and architecture. (Architecture *must* match host machine.)&lt;br /&gt;
&lt;br /&gt;
 # List containers&lt;br /&gt;
 lxc-ls&lt;br /&gt;
&lt;br /&gt;
to ensure that your container has been successfully created; it should be listed. You can also list its root directory if you like. To start it in the background and obtain a root shell, do&lt;br /&gt;
&lt;br /&gt;
 # Start and attach a root shell&lt;br /&gt;
 lxc-start -d -n containername&lt;br /&gt;
 lxc-attach -n containername&lt;br /&gt;
&lt;br /&gt;
Now you&#039;re ready to [[New CSC Machine|configure your machine]].&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&lt;br /&gt;
Networking might not be enabled on your container by default. If this is the case (easily checked with `ifconfig`), you&#039;ll need to modify its config file, located at /var/lib/lxc/containername/config:&lt;br /&gt;
&lt;br /&gt;
 # Network configuration&lt;br /&gt;
 lxc.network.type = veth&lt;br /&gt;
 lxc.network.flags = up&lt;br /&gt;
 &lt;br /&gt;
 # that&#039;s the interface defined above in host&#039;s interfaces file&lt;br /&gt;
 lxc.network.link = br0&lt;br /&gt;
 &lt;br /&gt;
 # name of network device inside the container,&lt;br /&gt;
 # defaults to eth0, you could choose a name freely&lt;br /&gt;
 # lxc.network.name = lxcnet0&lt;br /&gt;
 &lt;br /&gt;
 lxc.network.hwaddr = DE:AD:BE:EF:70:10 # your favourite fake MAC&lt;br /&gt;
 &lt;br /&gt;
 # the ip may be set to 0.0.0.0/24 or skip this line&lt;br /&gt;
 # if you like to use a dhcp client inside the container&lt;br /&gt;
 lxc.network.ipv4 = 129.97.134.XXX/24&lt;br /&gt;
 &lt;br /&gt;
 # define a gateway to have access to the internet&lt;br /&gt;
 lxc.network.ipv4.gateway = 129.97.134.1&lt;br /&gt;
&lt;br /&gt;
= Management Quick Guide =&lt;br /&gt;
&lt;br /&gt;
To manage containers, use the &amp;lt;tt&amp;gt;lxc-*&amp;lt;/tt&amp;gt; tools, which require root privilege. Some examples (replace &amp;lt;tt&amp;gt;caffeine&amp;lt;/tt&amp;gt; with the appropriate container name):&lt;br /&gt;
&lt;br /&gt;
 # check if caffeine is running&lt;br /&gt;
 lxc-info -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # start caffeine in the background&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine gracefully&lt;br /&gt;
 lxc-halt -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # stop caffeine forcefully&lt;br /&gt;
 lxc-stop -n caffeine&lt;br /&gt;
 &lt;br /&gt;
 # launch a TTY console for the container&lt;br /&gt;
 lxc-console -n caffeine&lt;br /&gt;
&lt;br /&gt;
To install Linux container support on a recent Debian (squeeze or newer) system:&lt;br /&gt;
* Install the &amp;lt;tt&amp;gt;lxc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;bridge-utils&amp;lt;/tt&amp;gt; packages.&lt;br /&gt;
* Create a bridged network interface (this can be configured in &amp;lt;tt&amp;gt;/etc/network/interfaces&amp;lt;/tt&amp;gt; as though it were a normal Ethernet device, with the additional &amp;lt;tt&amp;gt;bridge_ports&amp;lt;/tt&amp;gt; parameter. This is usually called &amp;lt;tt&amp;gt;br0&amp;lt;/tt&amp;gt; (can be created manually with &amp;lt;tt&amp;gt;brctl&amp;lt;/tt&amp;gt;). LXC will create a virtual Ethernet device and add it to the bridge when each container starts.&lt;br /&gt;
&lt;br /&gt;
To start caffeine, run the following command as root on glomag:&lt;br /&gt;
&lt;br /&gt;
 lxc-start -d -n caffeine&lt;br /&gt;
&lt;br /&gt;
Containers are stored on the host filesystem in /var/lib/lxc (root filesystems are symlinked to the appropriate directory on /vm).&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3814</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3814"/>
		<updated>2015-07-22T23:09:45Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Configuration */  re-ordered and clarified some directions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
The private IP is 10.15.134.130, only available from aspartame on the interface with IP 10.15.134.1. You may have to remove the default route from the routing table in order to successfully contact the machine with ssh.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
====One-time Configuration====&lt;br /&gt;
&lt;br /&gt;
Enable iSCSI and configure default authentication.&lt;br /&gt;
&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
====Setting up a new disk aggregate, volume, and LUN====&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a smaller number due to hidden size constraints and rounding. If you can&#039;t seem to find the right size, pick one much smaller, and then use the command &lt;br /&gt;
&lt;br /&gt;
  vol size volNfoo +XXX&lt;br /&gt;
&lt;br /&gt;
to grow the volume. This command will tell you how much available space remains, unlike `vol create`, so you don&#039;t need to keep guessing.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
9. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
10. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently disconnected, could be connected to psilodump or directly to another machine.&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr_users&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Old users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID4&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3813</id>
		<title>Syscom Todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3813"/>
		<updated>2015-07-16T19:22:36Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* When in the Machine Room */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are things that syscom should do eventually:&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
* Prepare for `sodium-benzoate` upgrades/replacement.&lt;br /&gt;
** new-mirror has like 30 disk shelves so we can just do a live sync on the 2TB disks and then insert the 4TB ones&lt;br /&gt;
* Establish remote syslog&lt;br /&gt;
* Get UPS monitoring working across multiple systems&lt;br /&gt;
* `/users` backups&lt;br /&gt;
* Disaster recovery plan&lt;br /&gt;
* &#039;&#039;&#039;Put backup container for authentication onto cobalamin&#039;&#039;&#039;&lt;br /&gt;
* Get an IP/KVM for the machine room which doesn&#039;t suck?&lt;br /&gt;
* Sort through keyboards in the office&lt;br /&gt;
* Clean up wiki vandalism&lt;br /&gt;
* Fix debian.csclub, aka our personal Debian repo which serves the CEO package&lt;br /&gt;
** Fix ceo versioning, which seems to be different on every machine it&#039;s installed on...&lt;br /&gt;
* Fix audio auth: audio is both a system group and an LDAP group and this has bad consequences for audio authorization&lt;br /&gt;
* Centralized repo for various configs: NFS, PAM auth with kerb, /etc/hosts/, LDAP and Kerb5, routing/interfaces files&lt;br /&gt;
** LDAP login is currently broken on glomag, it is password with root only&lt;br /&gt;
** Private subnet routing is broken on every machine &#039;&#039;except&#039;&#039; corn-syrup (see &#039;ethcrazy&#039;)&lt;br /&gt;
* Update hosts list (10.15.134.WTF?)&lt;br /&gt;
&lt;br /&gt;
== Wiki Updates ==&lt;br /&gt;
&lt;br /&gt;
* Update the following wiki pages&lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Ceo]], also related to &amp;quot;debian.csclub is broken&amp;quot;&lt;br /&gt;
** somehow merge [[Conserver]]/[[Serial Connections]]/[[Console Configuration]]&lt;br /&gt;
** [[Cscbot]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
** [[Hardware]]&lt;br /&gt;
** [[Machine List]]&lt;br /&gt;
** [[Mirror]]&lt;br /&gt;
** [[Music]] and possibly link to [[Pulseaudio]]&lt;br /&gt;
** [[MySQL]] mentions a-f replica&lt;br /&gt;
** [[NFS/Kerberos]] should probably by merged with an existing page&lt;br /&gt;
** [[NetApp]]&lt;br /&gt;
** [[Netboot]] (might want to merge with [[New CSC Machine]])&lt;br /&gt;
** [[OID Assignment]] and [[UID/GID Assignment]] should be merged with LDAP and replaced with a redirect&lt;br /&gt;
** Merge [[Point Of Sale]] and [[Point of Sale System]]&lt;br /&gt;
** [[Projects]]&lt;br /&gt;
** [[Scratch]]&lt;br /&gt;
** Merge [[Sun 2900]] and [[Sun 2900 Strategy Guide]]&lt;br /&gt;
** Add more info to [[Switches]]&lt;br /&gt;
** [[Virtualization]]&lt;br /&gt;
** [[Webcams]] needs a serious update&lt;br /&gt;
** [[Wireless]]&lt;br /&gt;
&lt;br /&gt;
==When in the Machine Room==&lt;br /&gt;
* Set up binaerpilot.&lt;br /&gt;
* Set up rainbowdragoneyes&lt;br /&gt;
* Pick up paperclip to install a new OS&lt;br /&gt;
* Locate electrons?&lt;br /&gt;
* Make sure that the IPMI/console connections are correct, up-to-date, and working.&lt;br /&gt;
* Fix psilodump&#039;s and aspartame&#039;s IPs and routing&lt;br /&gt;
** psilodump should not be routable outside aspartame. This is currently accomplished by fuckery. This *should* be fixed to use the net.ipv4.conf.all.arp_filter sysctl.&lt;br /&gt;
* Look into expanding /scratch and using RAID using spare disks in the office.&lt;br /&gt;
&lt;br /&gt;
==Science Machine Room==&lt;br /&gt;
* Set up remote syslog2&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Serial_Connections&amp;diff=3812</id>
		<title>Serial Connections</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Serial_Connections&amp;diff=3812"/>
		<updated>2015-07-16T19:21:06Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* MC 3015 */  update serial configs from server room reconnaissance mission&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article documents the physical serial ports on each machine and the connections between them. These connections are used for console access using [[Conserver]].&lt;br /&gt;
&lt;br /&gt;
==== MC 3015 ====&lt;br /&gt;
&lt;br /&gt;
 corn-syrup           ttyS1 LOM &amp;lt;- corn-syrup-ipmi      -          57600&lt;br /&gt;
 mirror               ttyS1 LOM &amp;lt;- sodium-benzoate-ipmi -          57600&lt;br /&gt;
 taurine              ttyS1 LOM &amp;lt;- taurine-ilo          -         115200&lt;br /&gt;
 glomag               ttyS0 LOM &amp;lt;- glomag-ipmi          -         115200&lt;br /&gt;
 binaerpilot          ttyUSB0   &amp;lt;- ascorbic-acid        ttyUSB0   115200&lt;br /&gt;
 goto80               ttyS0     &amp;lt;- corn-syrup           N/A       115200&lt;br /&gt;
 goto80               ttyS1     &amp;lt;- corn-syrup           N/A       115200&lt;br /&gt;
 goto80               power     &amp;lt;- corn-syrup           N/A       115200&lt;br /&gt;
 potassium-citrate    ttyS0     &amp;lt;- corn-syrup:ttyUSB2   hub3      115200&lt;br /&gt;
 aspartame            ttyS0     &amp;lt;- corn-syrup:ttyUSB4   hub5      115200    &lt;br /&gt;
 electrons            -         &amp;lt;- corn-syrup           hub8        9600&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;hubN&amp;quot; ports are on the 8-port serial hub. To access, look in /dev/csc.&lt;br /&gt;
&lt;br /&gt;
== Machine Ports ==&lt;br /&gt;
&lt;br /&gt;
Most machines either have no serial ports, or one [[Serial_Pin-outs#RS-232_over_DE-9|DE-9]] serial port. Details of other configurations are listed here. We do not have any modems (DCE), so all connections should be crossed (i.e., use null modem cables or compatible).&lt;br /&gt;
&lt;br /&gt;
==== taurine ====&lt;br /&gt;
&lt;br /&gt;
taurine has a virtual serial port that can be accessed via telnet or SSH&lt;br /&gt;
&lt;br /&gt;
 ttyS0 physical DE-9&lt;br /&gt;
 ttyS1 virtual&lt;br /&gt;
&lt;br /&gt;
==== ascorbic-acid ====&lt;br /&gt;
&lt;br /&gt;
ascorbic-acid has two [[Serial_Pin-outs#RS-232_over_8P8C_.28Sun.29|Sun 8P8C]] serial ports stacked vertically, with the first port on top. The first port may be used to access LOM, and probably has to be set to 9600 baud.&lt;br /&gt;
&lt;br /&gt;
 A (ttyS0, LOM)&lt;br /&gt;
 B (ttyS1)&lt;br /&gt;
&lt;br /&gt;
These ports should be connected to another system&#039;s DE-9 using a DE-9&amp;lt;-&amp;gt;8P8C modular adapter and an [[Serial_Pin-outs#Almost_Rollover_Cable|Almost Rollover]] or standard rollover.&lt;br /&gt;
&lt;br /&gt;
==== potassium-citrate ====&lt;br /&gt;
&lt;br /&gt;
potassium-citrate has two DE-9 serial ports side by side, with the second port on the left&lt;br /&gt;
&lt;br /&gt;
 101102 (ttyS1) 101101 (ttyS0)&lt;br /&gt;
&lt;br /&gt;
==== sodium-citrate ====&lt;br /&gt;
&lt;br /&gt;
sodium-citrate has two DE-9 serial ports side by side, with the second port on the left&lt;br /&gt;
&lt;br /&gt;
 ttyS1 ttyS0&lt;br /&gt;
&lt;br /&gt;
==== dumbterm ====&lt;br /&gt;
&lt;br /&gt;
dumbterm has one DB-25 serial port. It is currently connected to a black [[Serial_Pin-outs#Grey_DB-25_Female_to_8P8C_Adapter|nonstandard DB-25&amp;lt;-&amp;gt;8P8C adapter]], to a [[Serial_Pin-outs#Dumbterm_Cable|special twisted pair cable]], to a [[Serial_Pin-outs#Black_DE-9_Female_to_8P8C_Adapter|nonstandard 8P8C&amp;lt;-&amp;gt;DE-9 adapter]]. All of these pieces are labeled &amp;quot;dumbterm&amp;quot;. The dumbterm cable is not symmetric; the end labeled &amp;quot;DE-9&amp;quot; must be plugged into the DE-9 adapter.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3811</id>
		<title>Syscom Todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3811"/>
		<updated>2015-07-16T04:59:04Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Add wiki pages to be edited&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are things that syscom should do eventually:&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
* Prepare for `sodium-benzoate` upgrades/replacement.&lt;br /&gt;
** new-mirror has like 30 disk shelves so we can just do a live sync on the 2TB disks and then insert the 4TB ones&lt;br /&gt;
* Establish remote syslog&lt;br /&gt;
* Get UPS monitoring working across multiple systems&lt;br /&gt;
* `/users` backups&lt;br /&gt;
* Disaster recovery plan&lt;br /&gt;
* &#039;&#039;&#039;Put backup container for authentication onto cobalamin&#039;&#039;&#039;&lt;br /&gt;
* Get an IP/KVM for the machine room which doesn&#039;t suck?&lt;br /&gt;
* Sort through keyboards in the office&lt;br /&gt;
* Clean up wiki vandalism&lt;br /&gt;
* Fix debian.csclub, aka our personal Debian repo which serves the CEO package&lt;br /&gt;
** Fix ceo versioning, which seems to be different on every machine it&#039;s installed on...&lt;br /&gt;
* Fix audio auth: audio is both a system group and an LDAP group and this has bad consequences for audio authorization&lt;br /&gt;
* Centralized repo for various configs: NFS, PAM auth with kerb, /etc/hosts/, LDAP and Kerb5, routing/interfaces files&lt;br /&gt;
** LDAP login is currently broken on glomag, it is password with root only&lt;br /&gt;
** Private subnet routing is broken on every machine &#039;&#039;except&#039;&#039; corn-syrup (see &#039;ethcrazy&#039;)&lt;br /&gt;
* Update hosts list (10.15.134.WTF?)&lt;br /&gt;
&lt;br /&gt;
== Wiki Updates ==&lt;br /&gt;
&lt;br /&gt;
* Update the following wiki pages&lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Ceo]], also related to &amp;quot;debian.csclub is broken&amp;quot;&lt;br /&gt;
** somehow merge [[Conserver]]/[[Serial Connections]]/[[Console Configuration]]&lt;br /&gt;
** [[Cscbot]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
** [[Hardware]]&lt;br /&gt;
** [[Machine List]]&lt;br /&gt;
** [[Mirror]]&lt;br /&gt;
** [[Music]] and possibly link to [[Pulseaudio]]&lt;br /&gt;
** [[MySQL]] mentions a-f replica&lt;br /&gt;
** [[NFS/Kerberos]] should probably by merged with an existing page&lt;br /&gt;
** [[NetApp]]&lt;br /&gt;
** [[Netboot]] (might want to merge with [[New CSC Machine]])&lt;br /&gt;
** [[OID Assignment]] and [[UID/GID Assignment]] should be merged with LDAP and replaced with a redirect&lt;br /&gt;
** Merge [[Point Of Sale]] and [[Point of Sale System]]&lt;br /&gt;
** [[Projects]]&lt;br /&gt;
** [[Scratch]]&lt;br /&gt;
** Merge [[Sun 2900]] and [[Sun 2900 Strategy Guide]]&lt;br /&gt;
** Add more info to [[Switches]]&lt;br /&gt;
** [[Virtualization]]&lt;br /&gt;
** [[Webcams]] needs a serious update&lt;br /&gt;
** [[Wireless]]&lt;br /&gt;
&lt;br /&gt;
==When in the Machine Room==&lt;br /&gt;
* Set up binaerpilot.&lt;br /&gt;
* Make sure that the IPMI/console connections are correct, up-to-date, and working.&lt;br /&gt;
* Fix psilodump&#039;s and aspartame&#039;s IPs and routing&lt;br /&gt;
** psilodump should not be routable outside aspartame. This is currently accomplished by fuckery. This *should* be fixed to use the net.ipv4.conf.all.arp_filter sysctl.&lt;br /&gt;
* Look into expanding /scratch and using RAID using spare disks in the office.&lt;br /&gt;
&lt;br /&gt;
==Science Machine Room==&lt;br /&gt;
* Set up remote syslog2&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Exec_Todo&amp;diff=3810</id>
		<title>Exec Todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Exec_Todo&amp;diff=3810"/>
		<updated>2015-07-16T04:58:11Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Created page with &amp;quot;Update wiki pages: * Alumni Project * Budget Guide * Clothing Ideas * Enhancement Project * History * Library * Meetings which is kind of worthless...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Update wiki pages:&lt;br /&gt;
* [[Alumni Project]]&lt;br /&gt;
* [[Budget Guide]]&lt;br /&gt;
* [[Clothing Ideas]]&lt;br /&gt;
* [[Enhancement Project]]&lt;br /&gt;
* [[History]]&lt;br /&gt;
* [[Library]]&lt;br /&gt;
* [[Meetings]] which is kind of worthless&lt;br /&gt;
* [[Mentorship]]&lt;br /&gt;
* [[New Member Guide]]&lt;br /&gt;
* [[Office Staff]] should probably be merged with [[Office Policies]]&lt;br /&gt;
* [[Other Clubs]] should get a look&lt;br /&gt;
* Merge [[Propaganda]] and [[Publicity Guide]]&lt;br /&gt;
* [[SCS Guide]]&lt;br /&gt;
* [[Security Workshops]] &amp;lt;-- might wanna tag that as F13&lt;br /&gt;
* Merge [[Space Project]] and [[Space plan]]&lt;br /&gt;
* [[Talk Archive]] &amp;lt;-- [[User:Ehashman]] should probably update this&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3809</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3809"/>
		<updated>2015-07-16T04:56:09Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Miscellaneous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Wiki of the [[Computer Science Club]]. Feel free to start adding pages and information.&lt;br /&gt;
&lt;br /&gt;
[[Special:AllPages]]&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[ New Member Guide]]&lt;br /&gt;
* [[Budget Guide]]&lt;br /&gt;
* [[Club Hosting]]&lt;br /&gt;
* [[Member Hosting]]&lt;br /&gt;
* [[Exec Manual]]&lt;br /&gt;
* [[Imapd Guide]]&lt;br /&gt;
* [[MEF Guide]]&lt;br /&gt;
* [[Office Policies]]&lt;br /&gt;
* [[Office Staff]]&lt;br /&gt;
* [[How to IRC]]&lt;br /&gt;
* [[Talks Guide]]&lt;br /&gt;
* [[SCS Guide]]&lt;br /&gt;
* [[Kerberos | Password Reset ]]&lt;br /&gt;
* [[Disk Drive RMA Process]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Meetings]]&lt;br /&gt;
* [[Talks]]&lt;br /&gt;
* [[Projects]]&lt;br /&gt;
* [[Industry Opportunities]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Machine/System Documentation ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Backups]]&lt;br /&gt;
* [[ceo]]&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[Debian Repository]]&lt;br /&gt;
* [[Digital Cutter]]&lt;br /&gt;
* [[Directory Services]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Hardware]]&lt;br /&gt;
* [[Kerberos]]&lt;br /&gt;
* [[Machine List]]&lt;br /&gt;
* [[Mail]]&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Mirror]]&lt;br /&gt;
* [[Music]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[NetApp]]&lt;br /&gt;
* [[New CSC Machine]]&lt;br /&gt;
* [[NFS/Kerberos]]&lt;br /&gt;
* [[OID Assignment]]&lt;br /&gt;
* [[Printing]]&lt;br /&gt;
* [[Pulseaudio]]&lt;br /&gt;
* [[Robot Arm]]&lt;br /&gt;
* [[Scratch]]&lt;br /&gt;
* [[SNMP]]&lt;br /&gt;
* [[Serial Connections]]&lt;br /&gt;
* [[SSL]]&lt;br /&gt;
* [[Switches]]&lt;br /&gt;
* [[Syscom Todo]]&lt;br /&gt;
* [[Systems Committee]]&lt;br /&gt;
* [[UID/GID Assignment]]&lt;br /&gt;
* [[Webcams]]&lt;br /&gt;
* [[Webmail]]&lt;br /&gt;
* [[Website]]&lt;br /&gt;
* [[Virtualization]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Budget]]&lt;br /&gt;
* [[Executive]]&lt;br /&gt;
* [[Past Executive]]&lt;br /&gt;
* [[Frosh]]&lt;br /&gt;
* [[History]]&lt;br /&gt;
* [[Library]]&lt;br /&gt;
* [[MEF Proposals]]&lt;br /&gt;
* [[Term Notes]]&lt;br /&gt;
&amp;lt;/div&amp;gt; __NOTOC__&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3808</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Main_Page&amp;diff=3808"/>
		<updated>2015-07-16T04:55:55Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Machine/System Documentation */  broken links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Wiki of the [[Computer Science Club]]. Feel free to start adding pages and information.&lt;br /&gt;
&lt;br /&gt;
[[Special:AllPages]]&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[ New Member Guide]]&lt;br /&gt;
* [[Budget Guide]]&lt;br /&gt;
* [[Club Hosting]]&lt;br /&gt;
* [[Member Hosting]]&lt;br /&gt;
* [[Exec Manual]]&lt;br /&gt;
* [[Imapd Guide]]&lt;br /&gt;
* [[MEF Guide]]&lt;br /&gt;
* [[Office Policies]]&lt;br /&gt;
* [[Office Staff]]&lt;br /&gt;
* [[How to IRC]]&lt;br /&gt;
* [[Talks Guide]]&lt;br /&gt;
* [[SCS Guide]]&lt;br /&gt;
* [[Kerberos | Password Reset ]]&lt;br /&gt;
* [[Disk Drive RMA Process]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Meetings]]&lt;br /&gt;
* [[Talks]]&lt;br /&gt;
* [[Projects]]&lt;br /&gt;
* [[Industry Opportunities]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Machine/System Documentation ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Backups]]&lt;br /&gt;
* [[ceo]]&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[Debian Repository]]&lt;br /&gt;
* [[Digital Cutter]]&lt;br /&gt;
* [[Directory Services]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Hardware]]&lt;br /&gt;
* [[Kerberos]]&lt;br /&gt;
* [[Machine List]]&lt;br /&gt;
* [[Mail]]&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Mirror]]&lt;br /&gt;
* [[Music]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[NetApp]]&lt;br /&gt;
* [[New CSC Machine]]&lt;br /&gt;
* [[NFS/Kerberos]]&lt;br /&gt;
* [[OID Assignment]]&lt;br /&gt;
* [[Printing]]&lt;br /&gt;
* [[Pulseaudio]]&lt;br /&gt;
* [[Robot Arm]]&lt;br /&gt;
* [[Scratch]]&lt;br /&gt;
* [[SNMP]]&lt;br /&gt;
* [[Serial Connections]]&lt;br /&gt;
* [[SSL]]&lt;br /&gt;
* [[Switches]]&lt;br /&gt;
* [[Syscom Todo]]&lt;br /&gt;
* [[Systems Committee]]&lt;br /&gt;
* [[UID/GID Assignment]]&lt;br /&gt;
* [[Webcams]]&lt;br /&gt;
* [[Webmail]]&lt;br /&gt;
* [[Website]]&lt;br /&gt;
* [[Virtualization]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;-webkit-column-count:3; -moz-column-count:3; column-count:3;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Budget]]&lt;br /&gt;
* [[Executive]]&lt;br /&gt;
* [[Past Executive]]&lt;br /&gt;
* [[Frosh]]&lt;br /&gt;
* [[History]]&lt;br /&gt;
* [[Library]]&lt;br /&gt;
* [[MEF Proposals]]&lt;br /&gt;
* [[Office Cleanup]]&lt;br /&gt;
* [[Projector]]&lt;br /&gt;
* [[Term Notes]]&lt;br /&gt;
&amp;lt;/div&amp;gt; __NOTOC__&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Pop_Run&amp;diff=3807</id>
		<title>Pop Run</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Pop_Run&amp;diff=3807"/>
		<updated>2015-07-16T04:36:33Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Redirected page to Imapd Guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Imapd_Guide]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Phone_numbers&amp;diff=3806</id>
		<title>Phone numbers</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Phone_numbers&amp;diff=3806"/>
		<updated>2015-07-16T04:33:26Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Important Phone Numbers for the CSC===&lt;br /&gt;
&lt;br /&gt;
* Main university phone number: (519) 888-4567&lt;br /&gt;
** Real Time Lab:  &lt;br /&gt;
** Graphics Lab: 36560&lt;br /&gt;
** Mathsoc: 32324&lt;br /&gt;
** Hallway phone next to CSC bathroom: 32391&lt;br /&gt;
** MEF office: 35757&lt;br /&gt;
** Crysp lab: 31337&lt;br /&gt;
** WiCS office: 30295&lt;br /&gt;
&lt;br /&gt;
[[Category:Administration]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Ident&amp;diff=3805</id>
		<title>Ident</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Ident&amp;diff=3805"/>
		<updated>2015-07-16T04:29:46Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Machine List#taurine|taurine]] needs to provide ident services to raise the IRC connection cap. A small ident daemon written by m4burns in Racket lives in &amp;lt;tt&amp;gt;/home/ident&amp;lt;/tt&amp;gt; on taurine.&lt;br /&gt;
&lt;br /&gt;
To get it running, run it as the `indent` user and add an iptables rule sending port 113 to port 1113.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  iptables -t nat -A PREROUTING -p tcp --dport 113 -j REDIRECT --to-port 1113&lt;br /&gt;
&lt;br /&gt;
[[Category:Systems]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3801</id>
		<title>Syscom Todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3801"/>
		<updated>2015-07-16T03:36:44Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are things that syscom should do eventually:&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
* Prepare for `sodium-benzoate` upgrades/replacement.&lt;br /&gt;
** new-mirror has like 30 disk shelves so we can just do a live sync on the 2TB disks and then insert the 4TB ones&lt;br /&gt;
* Establish remote syslog&lt;br /&gt;
* Get UPS monitoring working across multiple systems&lt;br /&gt;
* `/users` backups&lt;br /&gt;
* Disaster recovery plan&lt;br /&gt;
* &#039;&#039;&#039;Put backup container for authentication onto cobalamin&#039;&#039;&#039;&lt;br /&gt;
* Get an IP/KVM for the machine room which doesn&#039;t suck?&lt;br /&gt;
* Update the wiki&lt;br /&gt;
** somehow merge conserver/serial connections/console configuration&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* Sort through keyboards in the office&lt;br /&gt;
* Clean up wiki vandalism&lt;br /&gt;
* Fix debian.csclub, aka our personal Debian repo which serves the CEO package&lt;br /&gt;
** Fix ceo versioning, which seems to be different on every machine it&#039;s installed on...&lt;br /&gt;
* Fix audio auth: audio is both a system group and an LDAP group and this has bad consequences for audio authorization&lt;br /&gt;
* Centralized repo for various configs: NFS, PAM auth with kerb, /etc/hosts/, LDAP and Kerb5, routing/interfaces files&lt;br /&gt;
** LDAP login is currently broken on glomag, it is password with root only&lt;br /&gt;
** Private subnet routing is broken on every machine &#039;&#039;except&#039;&#039; corn-syrup (see &#039;ethcrazy&#039;)&lt;br /&gt;
* Update hosts list (10.15.134.WTF?)&lt;br /&gt;
&lt;br /&gt;
==When in the Machine Room==&lt;br /&gt;
* Set up binaerpilot.&lt;br /&gt;
* Make sure that the IPMI/console connections are correct, up-to-date, and working.&lt;br /&gt;
* Fix psilodump&#039;s and aspartame&#039;s IPs and routing&lt;br /&gt;
** psilodump should not be routable outside aspartame. This is currently accomplished by fuckery. This *should* be fixed to use the net.ipv4.conf.all.arp_filter sysctl.&lt;br /&gt;
* Look into expanding /scratch and using RAID using spare disks in the office.&lt;br /&gt;
&lt;br /&gt;
==Science Machine Room==&lt;br /&gt;
* Set up remote syslog2&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Mirror_Stats&amp;diff=3798</id>
		<title>Mirror Stats</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Mirror_Stats&amp;diff=3798"/>
		<updated>2015-07-16T03:17:23Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: Ehashman moved page Cacti to Mirror Stats without leaving a redirect: Page name is unintelligible.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We used to run Cacti, but we no longer do. Mirror stats are available at http://mirror.csclub.uwaterloo.ca/stats.png (generated by pbarfuss&#039; RRDTool script).&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Mirror_Stats&amp;diff=3797</id>
		<title>Mirror Stats</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Mirror_Stats&amp;diff=3797"/>
		<updated>2015-07-16T03:16:48Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We used to run Cacti, but we no longer do. Mirror stats are available at http://mirror.csclub.uwaterloo.ca/stats.png (generated by pbarfuss&#039; RRDTool script).&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3796</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3796"/>
		<updated>2015-07-16T03:08:10Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Terminology */  this is wrong&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
The private IP is 10.15.134.130, only available from aspartame on the interface with IP 10.15.134.1. You may have to remove the default route from the routing table in order to successfully contact the machine with ssh.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a slightly smaller number due to hidden size constraints and rounding.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Enable iSCSI and configure default authentication.&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
9. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
10. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
11. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently disconnected, could be connected to psilodump or directly to another machine.&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr_users&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Old users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID4&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3795</id>
		<title>Syscom Todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Syscom_Todo&amp;diff=3795"/>
		<updated>2015-07-15T17:44:23Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are things that syscom should do eventually:&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
* Prepare for `sodium-benzoate` upgrades/replacement.&lt;br /&gt;
** new-mirror has like 30 disk shelves so we can just do a live sync on the 2TB disks and then insert the 4TB ones&lt;br /&gt;
* Establish remote syslog&lt;br /&gt;
* Get UPS monitoring working across multiple systems&lt;br /&gt;
* `/users` backups&lt;br /&gt;
* Disaster recovery plan&lt;br /&gt;
* Put backup containers onto cobalamin (auth2)&lt;br /&gt;
* Get an IP/KVM for the machine room which doesn&#039;t suck?&lt;br /&gt;
* Update the wiki.&lt;br /&gt;
* Sort through keyboards in the office&lt;br /&gt;
* Clean up wiki vandalism&lt;br /&gt;
* Fix debian.csclub, aka our personal Debian repo which serves the CEO package&lt;br /&gt;
** Fix ceo versioning, which seems to be different on every machine it&#039;s installed on...&lt;br /&gt;
* Fix audio auth: audio is both a system group and an LDAP group and this has bad consequences for audio authorization&lt;br /&gt;
* Centralized repo for various configs: NFS, PAM auth with kerb, /etc/hosts/, LDAP and Kerb5, routing/interfaces files&lt;br /&gt;
** LDAP login is currently broken on glomag, it is password with root only&lt;br /&gt;
** Private subnet routing is broken on every machine &#039;&#039;except&#039;&#039; corn-syrup (see &#039;ethcrazy&#039;)&lt;br /&gt;
* Update hosts list (10.15.134.WTF?)&lt;br /&gt;
&lt;br /&gt;
==When in the Machine Room==&lt;br /&gt;
* Set up binaerpilot.&lt;br /&gt;
* Make sure that the IPMI/console connections are correct, up-to-date, and working.&lt;br /&gt;
* Fix psilodump&#039;s and aspartame&#039;s IPs and routing&lt;br /&gt;
** psilodump should not be routable outside aspartame. This is currently accomplished by fuckery. This *should* be fixed to use the net.ipv4.conf.all.arp_filter sysctl.&lt;br /&gt;
* Look into expanding /scratch and using RAID using spare disks in the office.&lt;br /&gt;
&lt;br /&gt;
==Science Machine Room==&lt;br /&gt;
* Set up remote syslog2&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3634</id>
		<title>Printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3634"/>
		<updated>2014-09-23T23:14:26Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* MathSoc Printer (new) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Setting up printers =&lt;br /&gt;
&lt;br /&gt;
We usually support the MathSoc and MFCF printers on our office terminals.&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (new) ==&lt;br /&gt;
&lt;br /&gt;
The new MathSoc Printer is an HP LaserJet Pro MFP M476dn, and requires the HPLIP v3.14.4 drivers. This model is not supported by the default version of HPLIP in Ubuntu 14.04 (3.14.3); therefore, you will need to run the installation scripts.&lt;br /&gt;
&lt;br /&gt;
# Go to [http://hplipopensource.com/hplip-web/install/install/index.html the HP Linux Imaging and Printing site] and download hplip, version &amp;gt;= 3.14.4.&lt;br /&gt;
# Follow the installation walkthrough; make sure you put the run script in &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; to avoid NFS permissions problems. Then execute &amp;lt;pre&amp;gt;sh hplip-x.xx.x.run&amp;lt;/pre&amp;gt;&lt;br /&gt;
#* All the default options are fine. You can select the automatic setup process.&lt;br /&gt;
#** This is &#039;&#039;&#039;not&#039;&#039;&#039; true for &amp;lt;tt&amp;gt;maltodextrin&amp;lt;/tt&amp;gt;, which had some issues with the scanner group during the setup process. We don&#039;t actually need scanner support, so I fixed this by selecting a subset of features (that excluded scanning) in the &amp;quot;custom&amp;quot; install.&lt;br /&gt;
#* This will take a while and install all your dependencies; you need to supply it your sudo password.&lt;br /&gt;
#* When prompted about USB-conncted printers, you can select &amp;quot;i=ignore&amp;quot;.&lt;br /&gt;
# Now you should be able to add the printer through the Ubuntu GUI: &amp;lt;pre&amp;gt;gksudo /usr/share/system-config-printer/system-config-printer.py&amp;lt;/pre&amp;gt; Follow the wizard step-by-step:&lt;br /&gt;
## URI: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Choose &amp;quot;Select Printer from Database&amp;quot;, and select details:&lt;br /&gt;
##* Brand: HP&lt;br /&gt;
##* Make: Color LaserJet Pro MFP m476dn&lt;br /&gt;
## Fill in printer info:&lt;br /&gt;
##* Name: MathSoc&lt;br /&gt;
##* Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 35 cents per colour side.&lt;br /&gt;
##* Location: MC 3038&lt;br /&gt;
## Set default options: make sure that Job Options &amp;gt; print-color-mode: is set to &#039;&#039;&#039;monochrome&#039;&#039;&#039; and Printer Options &amp;gt; Two-sided: is set to &#039;&#039;&#039;Long-Edge Binding&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== ljp_3016 printer ==&lt;br /&gt;
&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://print.cs.uwaterloo.ca/printers/ljp_3016&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: ljp_3016&lt;br /&gt;
# Description: Main Math Printers&lt;br /&gt;
# Location: MC 3016&lt;br /&gt;
# Brand: HP&lt;br /&gt;
# Make: LaserJet 4250 Foomatic/Postscript&lt;br /&gt;
# Default options: make sure that two-sided printing is set to long-edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: If the brand/make is not available for selection, don&#039;t download any third-party drivers. These drivers are available in apt. Find them there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Print quota is done via IST&#039;s XAS system, which can be accessed here: [http://strobe.uwaterloo.ca/ist/services/index.php?service=62] or [https://ist-xas.uwaterloo.ca/xas/]&lt;br /&gt;
&lt;br /&gt;
= Setting up CUPS, the printing subsystem =&lt;br /&gt;
# Install &amp;lt;tt&amp;gt;cups&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Go to &amp;lt;tt&amp;gt;http://localhost:631/&amp;lt;/tt&amp;gt;. Go to &#039;Add Printer&#039;. You may need to supply the root username/password.&lt;br /&gt;
# Click &#039;Internet Printing Protocol (ipp)&#039;. CSC doesn&#039;t have any local printers, chances are all printers are connected via LAN. If it is LAN, then it is ipp.&lt;br /&gt;
# Enter connection, name, and description of the printer.&lt;br /&gt;
&lt;br /&gt;
If there is a machine with printing already properly set up, you may copy the file /etc/cups/printers.conf to the corresponding location on machines that aren&#039;t set up. Ensure that you stop CUPS (sudo service cups stop) on the fresh machine before copying over printers.conf (and don&#039;t forget to start it again afterward).&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3633</id>
		<title>Printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3633"/>
		<updated>2014-09-23T22:48:17Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* MathSoc Printer (new) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Setting up printers =&lt;br /&gt;
&lt;br /&gt;
We usually support the MathSoc and MFCF printers on our office terminals.&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (new) ==&lt;br /&gt;
&lt;br /&gt;
The new MathSoc Printer is an HP LaserJet Pro MFP M476dn, and requires the HPLIP v3.14.4 drivers. This model is not supported by the default version of HPLIP in Ubuntu 14.04 (3.14.3); therefore, you will need to run the installation scripts.&lt;br /&gt;
&lt;br /&gt;
# Go to [http://hplipopensource.com/hplip-web/install/install/index.html the HP Linux Imaging and Printing site] and download hplip, version &amp;gt;= 3.14.4.&lt;br /&gt;
# Follow the installation walkthrough; make sure you put the run script in &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; to avoid NFS permissions problems. Then execute &amp;lt;pre&amp;gt;sh hplip-x.xx.x.run&amp;lt;/pre&amp;gt;&lt;br /&gt;
#* All the default options are fine. You can select the automatic setup process.&lt;br /&gt;
#* This will take a while and install all your dependencies; you need to supply it your sudo password.&lt;br /&gt;
#* When prompted about USB-conncted printers, you can select &amp;quot;i=ignore&amp;quot;.&lt;br /&gt;
# Now you should be able to add the printer through the Ubuntu GUI: &amp;lt;pre&amp;gt;gksudo /usr/share/system-config-printer/system-config-printer.py&amp;lt;/pre&amp;gt; Follow the wizard step-by-step:&lt;br /&gt;
## URI: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Choose &amp;quot;Select Printer from Database&amp;quot;, and select details:&lt;br /&gt;
##* Brand: HP&lt;br /&gt;
##* Make: Color LaserJet Pro MFP m476dn&lt;br /&gt;
## Fill in printer info:&lt;br /&gt;
##* Name: MathSoc&lt;br /&gt;
##* Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 35 cents per colour side.&lt;br /&gt;
##* Location: MC 3038&lt;br /&gt;
## Set default options: make sure that Job Options &amp;gt; print-color-mode: is set to &#039;&#039;&#039;monochrome&#039;&#039;&#039; and Printer Options &amp;gt; Two-sided: is set to &#039;&#039;&#039;Long-Edge Binding&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== ljp_3016 printer ==&lt;br /&gt;
&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://print.cs.uwaterloo.ca/printers/ljp_3016&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: ljp_3016&lt;br /&gt;
# Description: Main Math Printers&lt;br /&gt;
# Location: MC 3016&lt;br /&gt;
# Brand: HP&lt;br /&gt;
# Make: LaserJet 4250 Foomatic/Postscript&lt;br /&gt;
# Default options: make sure that two-sided printing is set to long-edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: If the brand/make is not available for selection, don&#039;t download any third-party drivers. These drivers are available in apt. Find them there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Print quota is done via IST&#039;s XAS system, which can be accessed here: [http://strobe.uwaterloo.ca/ist/services/index.php?service=62] or [https://ist-xas.uwaterloo.ca/xas/]&lt;br /&gt;
&lt;br /&gt;
= Setting up CUPS, the printing subsystem =&lt;br /&gt;
# Install &amp;lt;tt&amp;gt;cups&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Go to &amp;lt;tt&amp;gt;http://localhost:631/&amp;lt;/tt&amp;gt;. Go to &#039;Add Printer&#039;. You may need to supply the root username/password.&lt;br /&gt;
# Click &#039;Internet Printing Protocol (ipp)&#039;. CSC doesn&#039;t have any local printers, chances are all printers are connected via LAN. If it is LAN, then it is ipp.&lt;br /&gt;
# Enter connection, name, and description of the printer.&lt;br /&gt;
&lt;br /&gt;
If there is a machine with printing already properly set up, you may copy the file /etc/cups/printers.conf to the corresponding location on machines that aren&#039;t set up. Ensure that you stop CUPS (sudo service cups stop) on the fresh machine before copying over printers.conf (and don&#039;t forget to start it again afterward).&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3632</id>
		<title>Printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3632"/>
		<updated>2014-09-23T18:30:10Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Setting up printers =&lt;br /&gt;
&lt;br /&gt;
We usually support the MathSoc and MFCF printers on our office terminals.&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (new) ==&lt;br /&gt;
&lt;br /&gt;
The new MathSoc Printer is an HP LaserJet Pro MFP M476dn, and requires the HPLIP v3.14.4 drivers. This model is not supported by the default version of HPLIP in Ubuntu 14.04 (3.14.3); therefore, you will need to run the installation scripts.&lt;br /&gt;
&lt;br /&gt;
# Go to [http://hplipopensource.com/hplip-web/install/install/index.html the HP Linux Imaging and Printing site] and download hplip, version &amp;gt;= 3.14.4.&lt;br /&gt;
# Follow the installation walkthrough; make sure you put the run script in &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; to avoid NFS permissions problems. Then execute &amp;lt;pre&amp;gt;sh hplip-x.xx.x.run&amp;lt;/pre&amp;gt;&lt;br /&gt;
#* This will take a while and install all your dependencies.&lt;br /&gt;
# Now you should be able to add the printer through the Ubuntu GUI: &amp;lt;pre&amp;gt;gksudo /usr/share/system-config-printer/system-config-printer.py&amp;lt;/pre&amp;gt; Follow the wizard step-by-step:&lt;br /&gt;
## URI: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Choose &amp;quot;Select Printer from Database&amp;quot;, and select details:&lt;br /&gt;
##* Brand: HP&lt;br /&gt;
##* Make: Color LaserJet Pro MFP m476dn&lt;br /&gt;
## Fill in printer info:&lt;br /&gt;
##* Name: MathSoc&lt;br /&gt;
##* Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 35 cents per colour side.&lt;br /&gt;
##* Location: MC 3038&lt;br /&gt;
## Set default options: make sure that Job Options &amp;gt; print-color-mode: is set to &#039;&#039;&#039;monochrome&#039;&#039;&#039; and Printer Options &amp;gt; Two-sided: is set to &#039;&#039;&#039;Long-Edge Binding&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== ljp_3016 printer ==&lt;br /&gt;
&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://print.cs.uwaterloo.ca/printers/ljp_3016&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: ljp_3016&lt;br /&gt;
# Description: Main Math Printers&lt;br /&gt;
# Location: MC 3016&lt;br /&gt;
# Brand: HP&lt;br /&gt;
# Make: LaserJet 4250 Foomatic/Postscript&lt;br /&gt;
# Default options: make sure that two-sided printing is set to long-edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: If the brand/make is not available for selection, don&#039;t download any third-party drivers. These drivers are available in apt. Find them there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Print quota is done via IST&#039;s XAS system, which can be accessed here: [http://strobe.uwaterloo.ca/ist/services/index.php?service=62] or [https://ist-xas.uwaterloo.ca/xas/]&lt;br /&gt;
&lt;br /&gt;
= Setting up CUPS, the printing subsystem =&lt;br /&gt;
# Install &amp;lt;tt&amp;gt;cups&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Go to &amp;lt;tt&amp;gt;http://localhost:631/&amp;lt;/tt&amp;gt;. Go to &#039;Add Printer&#039;. You may need to supply the root username/password.&lt;br /&gt;
# Click &#039;Internet Printing Protocol (ipp)&#039;. CSC doesn&#039;t have any local printers, chances are all printers are connected via LAN. If it is LAN, then it is ipp.&lt;br /&gt;
# Enter connection, name, and description of the printer.&lt;br /&gt;
&lt;br /&gt;
If there is a machine with printing already properly set up, you may copy the file /etc/cups/printers.conf to the corresponding location on machines that aren&#039;t set up. Ensure that you stop CUPS (sudo service cups stop) on the fresh machine before copying over printers.conf (and don&#039;t forget to start it again afterward).&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3631</id>
		<title>Printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3631"/>
		<updated>2014-09-23T18:29:34Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* Setting up CUPS, the printing subsystem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MathSoc Printer (new) ==&lt;br /&gt;
&lt;br /&gt;
The new MathSoc Printer is an HP LaserJet Pro MFP M476dn, and requires the HPLIP v3.14.4 drivers. This model is not supported by the default version of HPLIP in Ubuntu 14.04 (3.14.3); therefore, you will need to run the installation scripts.&lt;br /&gt;
&lt;br /&gt;
# Go to [http://hplipopensource.com/hplip-web/install/install/index.html the HP Linux Imaging and Printing site] and download hplip, version &amp;gt;= 3.14.4.&lt;br /&gt;
# Follow the installation walkthrough; make sure you put the run script in &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; to avoid NFS permissions problems. Then execute &amp;lt;pre&amp;gt;sh hplip-x.xx.x.run&amp;lt;/pre&amp;gt;&lt;br /&gt;
#* This will take a while and install all your dependencies.&lt;br /&gt;
# Now you should be able to add the printer through the Ubuntu GUI: &amp;lt;pre&amp;gt;gksudo /usr/share/system-config-printer/system-config-printer.py&amp;lt;/pre&amp;gt; Follow the wizard step-by-step:&lt;br /&gt;
## URI: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Choose &amp;quot;Select Printer from Database&amp;quot;, and select details:&lt;br /&gt;
##* Brand: HP&lt;br /&gt;
##* Make: Color LaserJet Pro MFP m476dn&lt;br /&gt;
## Fill in printer info:&lt;br /&gt;
##* Name: MathSoc&lt;br /&gt;
##* Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 35 cents per colour side.&lt;br /&gt;
##* Location: MC 3038&lt;br /&gt;
## Set default options: make sure that Job Options &amp;gt; print-color-mode: is set to &#039;&#039;&#039;monochrome&#039;&#039;&#039; and Printer Options &amp;gt; Two-sided: is set to &#039;&#039;&#039;Long-Edge Binding&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== ljp_3016 printer ==&lt;br /&gt;
&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://print.cs.uwaterloo.ca/printers/ljp_3016&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: ljp_3016&lt;br /&gt;
# Description: Main Math Printers&lt;br /&gt;
# Location: MC 3016&lt;br /&gt;
# Brand: HP&lt;br /&gt;
# Make: LaserJet 4250 Foomatic/Postscript&lt;br /&gt;
# Default options: make sure that two-sided printing is set to long-edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: If the brand/make is not available for selection, don&#039;t download any third-party drivers. These drivers are available in apt. Find them there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Print quota is done via IST&#039;s XAS system, which can be accessed here: [http://strobe.uwaterloo.ca/ist/services/index.php?service=62] or [https://ist-xas.uwaterloo.ca/xas/]&lt;br /&gt;
&lt;br /&gt;
= Setting up CUPS, the printing subsystem =&lt;br /&gt;
# Install &amp;lt;tt&amp;gt;cups&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Go to &amp;lt;tt&amp;gt;http://localhost:631/&amp;lt;/tt&amp;gt;. Go to &#039;Add Printer&#039;. You may need to supply the root username/password.&lt;br /&gt;
# Click &#039;Internet Printing Protocol (ipp)&#039;. CSC doesn&#039;t have any local printers, chances are all printers are connected via LAN. If it is LAN, then it is ipp.&lt;br /&gt;
# Enter connection, name, and description of the printer.&lt;br /&gt;
&lt;br /&gt;
If there is a machine with printing already properly set up, you may copy the file /etc/cups/printers.conf to the corresponding location on machines that aren&#039;t set up. Ensure that you stop CUPS (sudo service cups stop) on the fresh machine before copying over printers.conf (and don&#039;t forget to start it again afterward).&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3630</id>
		<title>Printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3630"/>
		<updated>2014-09-23T18:28:55Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* MathSoc Printer (old) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Setting up CUPS, the printing subsystem =&lt;br /&gt;
# Install &amp;lt;tt&amp;gt;cups&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Go to &amp;lt;tt&amp;gt;http://localhost:631/&amp;lt;/tt&amp;gt;. Go to &#039;Add Printer&#039;. You may need to supply the root username/password.&lt;br /&gt;
# Click &#039;Internet Printing Protocol (ipp)&#039;. CSC doesn&#039;t have any local printers, chances are all printers are connected via LAN. If it is LAN, then it is ipp.&lt;br /&gt;
# Enter connection, name, and description of the printer.&lt;br /&gt;
&lt;br /&gt;
If there is a machine with printing already properly set up, you may copy the file /etc/cups/printers.conf to the corresponding location on machines that aren&#039;t set up. Ensure that you stop CUPS (sudo service cups stop) on the fresh machine before copying over printers.conf (and don&#039;t forget to start it again afterward).&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (new) ==&lt;br /&gt;
&lt;br /&gt;
The new MathSoc Printer is an HP LaserJet Pro MFP M476dn, and requires the HPLIP v3.14.4 drivers. This model is not supported by the default version of HPLIP in Ubuntu 14.04 (3.14.3); therefore, you will need to run the installation scripts.&lt;br /&gt;
&lt;br /&gt;
# Go to [http://hplipopensource.com/hplip-web/install/install/index.html the HP Linux Imaging and Printing site] and download hplip, version &amp;gt;= 3.14.4.&lt;br /&gt;
# Follow the installation walkthrough; make sure you put the run script in &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; to avoid NFS permissions problems. Then execute &amp;lt;pre&amp;gt;sh hplip-x.xx.x.run&amp;lt;/pre&amp;gt;&lt;br /&gt;
#* This will take a while and install all your dependencies.&lt;br /&gt;
# Now you should be able to add the printer through the Ubuntu GUI: &amp;lt;pre&amp;gt;gksudo /usr/share/system-config-printer/system-config-printer.py&amp;lt;/pre&amp;gt; Follow the wizard step-by-step:&lt;br /&gt;
## URI: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Choose &amp;quot;Select Printer from Database&amp;quot;, and select details:&lt;br /&gt;
##* Brand: HP&lt;br /&gt;
##* Make: Color LaserJet Pro MFP m476dn&lt;br /&gt;
## Fill in printer info:&lt;br /&gt;
##* Name: MathSoc&lt;br /&gt;
##* Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 35 cents per colour side.&lt;br /&gt;
##* Location: MC 3038&lt;br /&gt;
## Set default options: make sure that Job Options &amp;gt; print-color-mode: is set to &#039;&#039;&#039;monochrome&#039;&#039;&#039; and Printer Options &amp;gt; Two-sided: is set to &#039;&#039;&#039;Long-Edge Binding&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== ljp_3016 printer ==&lt;br /&gt;
&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://print.cs.uwaterloo.ca/printers/ljp_3016&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: ljp_3016&lt;br /&gt;
# Description: Main Math Printers&lt;br /&gt;
# Location: MC 3016&lt;br /&gt;
# Brand: HP&lt;br /&gt;
# Make: LaserJet 4250 Foomatic/Postscript&lt;br /&gt;
# Default options: make sure that two-sided printing is set to long-edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: If the brand/make is not available for selection, don&#039;t download any third-party drivers. These drivers are available in apt. Find them there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Print quota is done via IST&#039;s XAS system, which can be accessed here: [http://strobe.uwaterloo.ca/ist/services/index.php?service=62] or [https://ist-xas.uwaterloo.ca/xas/]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3629</id>
		<title>Printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3629"/>
		<updated>2014-09-23T18:28:39Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* MathSoc Printer (new) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Setting up CUPS, the printing subsystem =&lt;br /&gt;
# Install &amp;lt;tt&amp;gt;cups&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Go to &amp;lt;tt&amp;gt;http://localhost:631/&amp;lt;/tt&amp;gt;. Go to &#039;Add Printer&#039;. You may need to supply the root username/password.&lt;br /&gt;
# Click &#039;Internet Printing Protocol (ipp)&#039;. CSC doesn&#039;t have any local printers, chances are all printers are connected via LAN. If it is LAN, then it is ipp.&lt;br /&gt;
# Enter connection, name, and description of the printer.&lt;br /&gt;
&lt;br /&gt;
If there is a machine with printing already properly set up, you may copy the file /etc/cups/printers.conf to the corresponding location on machines that aren&#039;t set up. Ensure that you stop CUPS (sudo service cups stop) on the fresh machine before copying over printers.conf (and don&#039;t forget to start it again afterward).&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (new) ==&lt;br /&gt;
&lt;br /&gt;
The new MathSoc Printer is an HP LaserJet Pro MFP M476dn, and requires the HPLIP v3.14.4 drivers. This model is not supported by the default version of HPLIP in Ubuntu 14.04 (3.14.3); therefore, you will need to run the installation scripts.&lt;br /&gt;
&lt;br /&gt;
# Go to [http://hplipopensource.com/hplip-web/install/install/index.html the HP Linux Imaging and Printing site] and download hplip, version &amp;gt;= 3.14.4.&lt;br /&gt;
# Follow the installation walkthrough; make sure you put the run script in &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; to avoid NFS permissions problems. Then execute &amp;lt;pre&amp;gt;sh hplip-x.xx.x.run&amp;lt;/pre&amp;gt;&lt;br /&gt;
#* This will take a while and install all your dependencies.&lt;br /&gt;
# Now you should be able to add the printer through the Ubuntu GUI: &amp;lt;pre&amp;gt;gksudo /usr/share/system-config-printer/system-config-printer.py&amp;lt;/pre&amp;gt; Follow the wizard step-by-step:&lt;br /&gt;
## URI: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Choose &amp;quot;Select Printer from Database&amp;quot;, and select details:&lt;br /&gt;
##* Brand: HP&lt;br /&gt;
##* Make: Color LaserJet Pro MFP m476dn&lt;br /&gt;
## Fill in printer info:&lt;br /&gt;
##* Name: MathSoc&lt;br /&gt;
##* Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 35 cents per colour side.&lt;br /&gt;
##* Location: MC 3038&lt;br /&gt;
## Set default options: make sure that Job Options &amp;gt; print-color-mode: is set to &#039;&#039;&#039;monochrome&#039;&#039;&#039; and Printer Options &amp;gt; Two-sided: is set to &#039;&#039;&#039;Long-Edge Binding&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (old) ==&lt;br /&gt;
&lt;br /&gt;
# Go to [http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/download_prn.html#MFC-9970CDW the Brother site] and grab the cupswrapper and lpr drivers.&lt;br /&gt;
# Install the drivers with &amp;lt;tt&amp;gt;dpkg&amp;lt;/tt&amp;gt;. You may need to use &amp;lt;tt&amp;gt;--force architecture&amp;lt;/tt&amp;gt; on a 64-bit machine; don&#039;t worry, the package is actually arch-independent. &amp;lt;pre&amp;gt;sudo dpkg --force-architecture -i mfc9970*.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# On a 64-bit machine, install &amp;lt;tt&amp;gt;ia32-libs&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: MathSoc&lt;br /&gt;
# Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 30 cents per colour side.&lt;br /&gt;
# Location: MC 3038&lt;br /&gt;
# Brand: Brother&lt;br /&gt;
# Make: MFC 9770CDW&lt;br /&gt;
# Default options: make sure that Color is set to Mono and Two-sided printing is set to Long-edge.&lt;br /&gt;
&lt;br /&gt;
== ljp_3016 printer ==&lt;br /&gt;
&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://print.cs.uwaterloo.ca/printers/ljp_3016&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: ljp_3016&lt;br /&gt;
# Description: Main Math Printers&lt;br /&gt;
# Location: MC 3016&lt;br /&gt;
# Brand: HP&lt;br /&gt;
# Make: LaserJet 4250 Foomatic/Postscript&lt;br /&gt;
# Default options: make sure that two-sided printing is set to long-edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: If the brand/make is not available for selection, don&#039;t download any third-party drivers. These drivers are available in apt. Find them there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Print quota is done via IST&#039;s XAS system, which can be accessed here: [http://strobe.uwaterloo.ca/ist/services/index.php?service=62] or [https://ist-xas.uwaterloo.ca/xas/]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3628</id>
		<title>Printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Printing&amp;diff=3628"/>
		<updated>2014-09-23T18:04:52Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* MathSoc Printer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Setting up CUPS, the printing subsystem =&lt;br /&gt;
# Install &amp;lt;tt&amp;gt;cups&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Go to &amp;lt;tt&amp;gt;http://localhost:631/&amp;lt;/tt&amp;gt;. Go to &#039;Add Printer&#039;. You may need to supply the root username/password.&lt;br /&gt;
# Click &#039;Internet Printing Protocol (ipp)&#039;. CSC doesn&#039;t have any local printers, chances are all printers are connected via LAN. If it is LAN, then it is ipp.&lt;br /&gt;
# Enter connection, name, and description of the printer.&lt;br /&gt;
&lt;br /&gt;
If there is a machine with printing already properly set up, you may copy the file /etc/cups/printers.conf to the corresponding location on machines that aren&#039;t set up. Ensure that you stop CUPS (sudo service cups stop) on the fresh machine before copying over printers.conf (and don&#039;t forget to start it again afterward).&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (new) ==&lt;br /&gt;
&lt;br /&gt;
# Go to [http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/download_prn.html#MFC-9970CDW the Brother site] and grab the cupswrapper and lpr drivers.&lt;br /&gt;
# Install the drivers with &amp;lt;tt&amp;gt;dpkg&amp;lt;/tt&amp;gt;. You may need to use &amp;lt;tt&amp;gt;--force architecture&amp;lt;/tt&amp;gt; on a 64-bit machine; don&#039;t worry, the package is actually arch-independent. &amp;lt;pre&amp;gt;sudo dpkg --force-architecture -i mfc9970*.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# On a 64-bit machine, install &amp;lt;tt&amp;gt;ia32-libs&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: MathSoc&lt;br /&gt;
# Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 30 cents per colour side.&lt;br /&gt;
# Location: MC 3038&lt;br /&gt;
# Brand: Brother&lt;br /&gt;
# Make: MFC 9770CDW&lt;br /&gt;
# Default options: make sure that Color is set to Mono and Two-sided printing is set to Long-edge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MathSoc Printer (old) ==&lt;br /&gt;
&lt;br /&gt;
# Go to [http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/download_prn.html#MFC-9970CDW the Brother site] and grab the cupswrapper and lpr drivers.&lt;br /&gt;
# Install the drivers with &amp;lt;tt&amp;gt;dpkg&amp;lt;/tt&amp;gt;. You may need to use &amp;lt;tt&amp;gt;--force architecture&amp;lt;/tt&amp;gt; on a 64-bit machine; don&#039;t worry, the package is actually arch-independent. &amp;lt;pre&amp;gt;sudo dpkg --force-architecture -i mfc9970*.deb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# On a 64-bit machine, install &amp;lt;tt&amp;gt;ia32-libs&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://lp-mc3038.mathsoc.uwaterloo.ca/ipp&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: MathSoc&lt;br /&gt;
# Description: The colour printer in MathSoc. Printing is 10 cents per double-sided black and white sheet, and 30 cents per colour side.&lt;br /&gt;
# Location: MC 3038&lt;br /&gt;
# Brand: Brother&lt;br /&gt;
# Make: MFC 9770CDW&lt;br /&gt;
# Default options: make sure that Color is set to Mono and Two-sided printing is set to Long-edge.&lt;br /&gt;
&lt;br /&gt;
== ljp_3016 printer ==&lt;br /&gt;
&lt;br /&gt;
# Printer Connection: &amp;lt;pre&amp;gt;ipp://print.cs.uwaterloo.ca/printers/ljp_3016&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Name: ljp_3016&lt;br /&gt;
# Description: Main Math Printers&lt;br /&gt;
# Location: MC 3016&lt;br /&gt;
# Brand: HP&lt;br /&gt;
# Make: LaserJet 4250 Foomatic/Postscript&lt;br /&gt;
# Default options: make sure that two-sided printing is set to long-edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: If the brand/make is not available for selection, don&#039;t download any third-party drivers. These drivers are available in apt. Find them there.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Print quota is done via IST&#039;s XAS system, which can be accessed here: [http://strobe.uwaterloo.ca/ist/services/index.php?service=62] or [https://ist-xas.uwaterloo.ca/xas/]&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3574</id>
		<title>Past Executive</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3574"/>
		<updated>2013-12-15T03:17:35Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Data sources for this exec list have been: CSC records, MathNEWS.&lt;br /&gt;
According to the warrior wiki dudes, there was an article about the CSC being founded in the chevron: &#039;&#039;This week on campus&#039;&#039;. The Chevron. January 5 1968. Page 16. -- somebody should get a copy of that.&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
 #define PR President&lt;br /&gt;
 #define VP Vice-president&lt;br /&gt;
 #define TR Treasurer&lt;br /&gt;
 #define SE Secretary&lt;br /&gt;
 #define SA Sysadmin&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define LI Librarian&lt;br /&gt;
 #define FL Flasher&lt;br /&gt;
 #define DE Deity&lt;br /&gt;
 #define WW Webmaster&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define SE-TR Secretary-Treasurer (Position was split)&lt;br /&gt;
&lt;br /&gt;
=Founding 1967=&lt;br /&gt;
&lt;br /&gt;
 Sponsor - J. Peter Sprung&lt;br /&gt;
 PR: K. Rugger&lt;br /&gt;
 VP: R. Jaques&lt;br /&gt;
 SE-TR: G. Sutherland&lt;br /&gt;
&lt;br /&gt;
 Founding Members:&lt;br /&gt;
 B. Kindree&lt;br /&gt;
 R. Melen&lt;br /&gt;
 V. Neglia&lt;br /&gt;
 R. Charney&lt;br /&gt;
 R. Truman&lt;br /&gt;
 Glenn Berry&lt;br /&gt;
 D. Meek&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Bill Kindred&lt;br /&gt;
 VP: Rick Jacques&lt;br /&gt;
 SE-TR: Graham Sutherland&lt;br /&gt;
&lt;br /&gt;
Committee members: R. Stallwerthy, C. de Vries&lt;br /&gt;
&lt;br /&gt;
=1968=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Bill Kindred&lt;br /&gt;
 VP: Rick Jacques&lt;br /&gt;
 SE-TR: Graham Sutherland&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 SE-TR: Glenn Berry&lt;br /&gt;
&lt;br /&gt;
=1969=&lt;br /&gt;
&lt;br /&gt;
Unknown, only one letter found in the folder &#039;ACM History&#039; addressed to Glenn Berry, which makes it likely that he was SE-TR once again. May be indicated in membership lists. The club appears to have died this academic year.&lt;br /&gt;
&lt;br /&gt;
=1970=&lt;br /&gt;
&lt;br /&gt;
===A note on ACM affiliation===&lt;br /&gt;
&lt;br /&gt;
The first attempt at joining the ACM was started with an informal inquiry Dec 5, 1967. This lead to a series of constitution edits (working towards affiliation) in Winter 1968. There was a break for the spring (no correspondence found, I presume we were waiting on a reply). In the fall records indicate that our constitution and chartering was rejected, further correspondence was sent in Fall 1968 by Glenn Berry. A new inquiry, seemingly unaware of the first was sent Dec 7, 1970&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Rick Beach&lt;br /&gt;
 VP: Lee Santon&lt;br /&gt;
 TR: Randy Melen&lt;br /&gt;
 SE: Vic Neglia&lt;br /&gt;
&lt;br /&gt;
=1971=&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 VP: James H. &amp;quot;Jim&amp;quot; Finch and James W. Welch both signed letters as VP.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 VP: James W. Welch&lt;br /&gt;
&lt;br /&gt;
=1972=&lt;br /&gt;
&lt;br /&gt;
It appears we visited Western and Western visited us this year (there is some reference to a similar occurrence the year previous). Documents from 1973 indicate a termly exec structure, this probably goes back to 1972.&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Mike Campbell&lt;br /&gt;
 VP: Edgar Hew&lt;br /&gt;
 SE-TR: Doug Lacy&lt;br /&gt;
&lt;br /&gt;
There is also stuff from James W. Welch without a position.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Ian McIntosh&lt;br /&gt;
&lt;br /&gt;
=1973=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 SE: Douglas E. Lacy&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Parry&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Parry&lt;br /&gt;
 VP: Ray Walden&lt;br /&gt;
 TR: Slavko Stemberger&lt;br /&gt;
 SE: Mario Festival&lt;br /&gt;
&lt;br /&gt;
=1974=&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Russell Crook&lt;br /&gt;
&lt;br /&gt;
=1975-1977=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman??&lt;br /&gt;
&lt;br /&gt;
 Peter Raynham reports (first hand account): president for at least 2 or 3 terms in this period.&lt;br /&gt;
 Sylvia Eng: 1975/6 as some position.&lt;br /&gt;
 Dave Buckingham: a VP at some point&lt;br /&gt;
 Allison Nolan: 1977 time&lt;br /&gt;
 Peter Stevens: 1977&lt;br /&gt;
 Russel Crook???&lt;br /&gt;
&lt;br /&gt;
Dennis Ritchie came. So did Jeffrey D. Ullman.&lt;br /&gt;
&lt;br /&gt;
=1976=&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
Progcom: Peter Stevens&lt;br /&gt;
&lt;br /&gt;
=1977=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 Progcom: Allison Nowlan&lt;br /&gt;
&lt;br /&gt;
===Spring=== &lt;br /&gt;
&lt;br /&gt;
 PR: Peter Stevens&lt;br /&gt;
 Progcom: Allison Nowlan&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Andrzej Jan Taramina&lt;br /&gt;
 Progcom: Allison Nowlan&lt;br /&gt;
&lt;br /&gt;
=1978=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Peter Stevens&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 TR: K.G. Dykes&lt;br /&gt;
 SE: Kandry Mutheardy&lt;br /&gt;
&lt;br /&gt;
Brian Kernighan gave a talk this term. So did Ken Thompson.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
=1979=&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Robert Biddle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1987=&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Boritz&lt;br /&gt;
 VP: Ted Timar&lt;br /&gt;
 TR: Gayla Boritz&lt;br /&gt;
 SE: Edwin Hoogerbeets&lt;br /&gt;
&lt;br /&gt;
=1988=&lt;br /&gt;
&lt;br /&gt;
Jim Boritz was president in Winter 1988. (Source: http://csclub.uwaterloo.ca/misc/procedure.pdf)&lt;br /&gt;
Tim Timar - cc&#039;d on memos/mentioned on mathsoc minutes in 1987/88.&lt;br /&gt;
The Sysadmin and Office Manager positions seem to have been created somewhere in here. The &#039;Record Management Profile&#039; that Robyn Stewart did as an assignment in 1991-1992 for some class at UBC&lt;br /&gt;
indicates the existence of both positions. We acquired an HP-9000 in the summer of 1988 and as this was out first &amp;quot;real&amp;quot; computer (previously we had an IBM PC and terminal), the sysadmin position was created, starting with the Fall 1988 term.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 SA: Wade Richards&lt;br /&gt;
&lt;br /&gt;
=1989=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989-big.jpg&lt;br /&gt;
&lt;br /&gt;
Left to right:  Jim Boritz (bottom), Wade Richards (top), Ted Timar, ???, Keven Smith, Bill Gates (not exec), Angela Chambers, Ross Ridge (top), Sean Goggin (bottom), ??? &lt;br /&gt;
&lt;br /&gt;
 PR: Barry W. Smith&lt;br /&gt;
 VP: Angela Chambers&lt;br /&gt;
 TR:&lt;br /&gt;
 SE: Sean Goggin&lt;br /&gt;
 SA: Wade Richards / Ross Ridge&lt;br /&gt;
&lt;br /&gt;
(President Kevin Smith confirmed: http://csclub.uwaterloo.ca/misc/procedure.pdf)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Thornton&lt;br /&gt;
 VP: Gayla Boritz&lt;br /&gt;
 TR: David Fenger&lt;br /&gt;
 SE: Kivi Shapiro&lt;br /&gt;
 SA: Reid Pinchback&lt;br /&gt;
&lt;br /&gt;
Assistance to sysadmin: Jim Boritz.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: James Boritz&lt;br /&gt;
 VP: Edmond Bourne&lt;br /&gt;
 SA: Ross Ridge&lt;br /&gt;
&lt;br /&gt;
=1990=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 TR: Jim Thornton&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 TR: Karen Smith&lt;br /&gt;
 SE: Robyn Steward&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Wade Richards&lt;br /&gt;
 TR: Carolyn Duke&lt;br /&gt;
 SE: Robyn Stewart - attended mathsoc meeting on our behalf.&lt;br /&gt;
 Kivi Shapiro - attended mathsoc meeting on our behalf.&lt;br /&gt;
              - Censured by mathsoc for his actions during the election.&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
&lt;br /&gt;
=1991=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 VP: Edmond Bourne&lt;br /&gt;
 TR: Carolyn Duke&lt;br /&gt;
 SE: Robyn Stewart&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
&lt;br /&gt;
John McCarthy came this term.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Rob Leitman&lt;br /&gt;
 Jason Knell - attended mathsoc meeting on our and PMC&#039;s behalf.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 TR: Mike Van Lingen&lt;br /&gt;
 Wiktor Wiewiorowski - attended mathsoc meeting on our behalf this term.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1992=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 TR: Norm Ross&lt;br /&gt;
 SE: Brent Williams&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick&lt;br /&gt;
 TR: Stephen A. Mills&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 TR: Mark Plumb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1993=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 TR: Rob Leitman&lt;br /&gt;
 VP: Tim Prime&lt;br /&gt;
 OF: Dave Ebbo&lt;br /&gt;
 LI: Norm Ross&lt;br /&gt;
&lt;br /&gt;
Other exec for this term: Ellen Hsiang, Sam Coulombe, Peter Gray&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Mark Tompsett &lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Ian Goldberg&lt;br /&gt;
&lt;br /&gt;
=1994=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Ian Goldberg&lt;br /&gt;
 TR: Mark Tompsett&lt;br /&gt;
 SE: Tom Rathbourne&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
 Norm Ross assisted with finances.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick (?)&lt;br /&gt;
 TR: Steve Mills&lt;br /&gt;
 SA: Ian Goldberg (?)&lt;br /&gt;
 Norm Ross assisted with finances.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Ross Ridge&lt;br /&gt;
 VP: Tom Rathbourne (?)&lt;br /&gt;
 TR: Rob Leitman&lt;br /&gt;
 SA: Zygo Blaxell&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1995=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 TR: Sharlene Schmeichel&lt;br /&gt;
 Amy Brown and Rob Ridge purchased books.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Steve Mills&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Amy Brown (arbrown) &lt;br /&gt;
 VP: Christina Norman (cbnorman)&lt;br /&gt;
 TR: Steven Mills (samills)&lt;br /&gt;
 SE: Allyson Graham (akgraham)&lt;br /&gt;
 SA: Gavin Peters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1996=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Nikita Borisov (nborisov)&lt;br /&gt;
 VP: Joseph Deu Ngoc (dtdeungo) &lt;br /&gt;
 TR: Stephen Mills (samills)&lt;br /&gt;
 SE: Sharlene Schmeichel (saschmei)&lt;br /&gt;
 SA: Dave Brown (dagbrown)&lt;br /&gt;
 OF: Somsack Tsai (stsai)&lt;br /&gt;
 LI: Devin Carless (dccarles)&lt;br /&gt;
 FL: Allyson Graham (akgraham)&lt;br /&gt;
 DE: Ian Goldberg (iagoldbe)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Blake Winton (bwinton)&lt;br /&gt;
 VP: Nick Harvey (njaharve)&lt;br /&gt;
 TR: Nikita Borisov (nborisov)&lt;br /&gt;
 SE: Viet-Trung Luu (vluu)&lt;br /&gt;
 SA: Drew Hamilton (awhamilt)&lt;br /&gt;
 OF: Jillian Arnott (jarnott)&lt;br /&gt;
 LI: Ross Ridge (rridge)&lt;br /&gt;
 FL: Devin Carless (dccarles)&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Shannon Mann (sjbmann) &lt;br /&gt;
 VP: Joe &amp;quot;Frosh&amp;quot; Deu Ngoc (jtdeungo)    resigned (heavy workload)&lt;br /&gt;
 TR: Michal Van Biesbrouck (mlvanbie) &lt;br /&gt;
 SE: Nikita Borisov (nborisov) &lt;br /&gt;
 SA: Chris Rovers &lt;br /&gt;
 OF: Dax Hutcheon (ddhutche)            became VP upon jtduengo&#039;s resignation&lt;br /&gt;
 LI: Aliz Csenki (acsenki) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel) &lt;br /&gt;
 DE: Skuld (no uwuserid yet...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1997=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Dima Brodsky &lt;br /&gt;
 VP: Nikita Borisov (nborisov)&lt;br /&gt;
 TR: Stephen Mills (samills)&lt;br /&gt;
 SE: Evan Jones (ejones)&lt;br /&gt;
 SA: Alex Brodsky&lt;br /&gt;
 OF: Chris Doherty&lt;br /&gt;
 LI: Matt Corks &lt;br /&gt;
 FL: Paul Prescod&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Chris Rovers (cdrovers) &lt;br /&gt;
 VP: Michael van Biesbrouck (mlvanbie) &lt;br /&gt;
 TR: Somsack Tsai (stsai) &lt;br /&gt;
 SE: Matt Corks (mvcorks)&lt;br /&gt;
 SA: Lennart Sorensen (lsorense) &lt;br /&gt;
 LI: Chmielowiec (archmiel) &lt;br /&gt;
 OF: Devin Carless (dccarles) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 1998 =&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Suresh Naidu  &lt;br /&gt;
 VP: Viet-Trung Luu &lt;br /&gt;
 TR: Tim Coleman &lt;br /&gt;
 SE: Dax Hutcheon &lt;br /&gt;
 Librarian: Dax Hutcheon &lt;br /&gt;
 Flasher: Dax Hutcheon &lt;br /&gt;
 Webmaster: Dax Hutcheon &lt;br /&gt;
 SA: Robin Powell&lt;br /&gt;
 OF: Aaron Chmielowiec&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
 Position	Name	You might call them...&lt;br /&gt;
 President	roconnor	Russell O&#039;Connor&lt;br /&gt;
 Vice-president	trwcolem	Tim Coleman&lt;br /&gt;
 Treasurer	knzarysk	Karl Zaryski&lt;br /&gt;
 Secretary	(bwinton)	(Blake Winton)&lt;br /&gt;
 Sysadmin	wbiggs	Billy Biggs&lt;br /&gt;
 Librarian	snaidu	Suresh Naidu&lt;br /&gt;
 Flasher	pechrysl	Paul Chrysler&lt;br /&gt;
 Office Manager	dccarles	Devin Carless&lt;br /&gt;
 WWWW	trwcolem	Tim Coleman&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
 President	Joe Deu Ngoc	jtdeungo&lt;br /&gt;
 Vice-President	Wai Ling Yee	wlyee&lt;br /&gt;
 Treasurer	Fjord	j2lynn&lt;br /&gt;
 Secretary	Matt Corks	mvcorks&lt;br /&gt;
 Sysadmin	Andrew Hamilton	awhamilt&lt;br /&gt;
&lt;br /&gt;
 World Wide Web Wench	Dax Hutcheon	ddhutche&lt;br /&gt;
 Office Manager	Richard Bell	rlbell&lt;br /&gt;
 Librarian	Damian Gryski	dgryski&lt;br /&gt;
 Flasher	Paul Chrysler	pechrysl&lt;br /&gt;
 Official Deity	Ian Goldberg	iagoldbe&lt;br /&gt;
 Official Chairbeing	Calum T. Dalek	calum&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1999=&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2000=&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Will Chartrand (wgchartr)&lt;br /&gt;
 VP: Gavin Duggan (geduggan)&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: Lennart Sorensen (lsorense)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP: &lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: bioster&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2001=&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2002=&lt;br /&gt;
&lt;br /&gt;
http://www.mathnews.uwaterloo.ca/Issues/mn8902/cscflash.php&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Billy Biggs&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: Melissa Basinger&lt;br /&gt;
 SE: James Perry&lt;br /&gt;
 SA: Barry Genova&lt;br /&gt;
 Librarian: Ryan Golbeck&lt;br /&gt;
 Webmaster: Jonathan Beverley&lt;br /&gt;
 Office Manager: Sayan Li&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: Alex Pop&lt;br /&gt;
 VP: Melissa Basinger&lt;br /&gt;
 TR: Siyan Li&lt;br /&gt;
 SE: James A Morrison&lt;br /&gt;
 SA: Jonathan Beverley&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: James A. Morrison&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: James Perry&lt;br /&gt;
 SE: Michael Biggs&lt;br /&gt;
 SA: Ryan Golbeck&lt;br /&gt;
 Librarian: Mark Sherry, Cassandra Schopf&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2003=&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Kannan Vijayan (kvijayan)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: James Perry (jeperry)&lt;br /&gt;
 SE: Wojciech Kosnik (wkosnik)&lt;br /&gt;
 SA: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 LI: Simon Law (sfllaw)&lt;br /&gt;
 WM: Julie Lavoie (jlavoie)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: Tor Myklebust (tmyklebu)&lt;br /&gt;
 SE: James Perry (jeperry)&lt;br /&gt;
 SA: Simon Law (sfllaw)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2004=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Simon Law (sfllaw)&lt;br /&gt;
 VP: fspacek&lt;br /&gt;
 TR: ljain&lt;br /&gt;
 SE: Julie Lavoie (jlavoie)&lt;br /&gt;
 SA: Tor Myklebust(tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: dnmorton ?&lt;br /&gt;
 VP: Tim Loach (tloach)&lt;br /&gt;
 TR: Michael Biggs (mbiggs)&lt;br /&gt;
 SE: Lesley Northam (lanortha)&lt;br /&gt;
 SA: &lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: jeperry&lt;br /&gt;
 VP: mtsay&lt;br /&gt;
 TR: Mark Sherry (mdsherry)&lt;br /&gt;
 SE: Tor Myklebust (tmyklebu)&lt;br /&gt;
 SA: jlavoie&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2005=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: mtsay&lt;br /&gt;
 VP: Lesley Northam (lanortha)&lt;br /&gt;
 TR: Holden Karau (hkarau)&lt;br /&gt;
 SE: domorton&lt;br /&gt;
 SA: Tor Myklebust (tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Mark Sherry (mdsherry)&lt;br /&gt;
 VP: Martin Kess (mdkess)&lt;br /&gt;
 TR: Ali Piccioni (apiccion)&lt;br /&gt;
 SE: Michael Biggs (mbiggs)&lt;br /&gt;
 SA: Tor Myklebust (tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Tim Loach (tloach)&lt;br /&gt;
 VP: Lesley Northam (lanortha)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: The Professor&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2006=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Tor Myklebust (tmyklebu)&lt;br /&gt;
 VP: Michael Druker (mdruker)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: Mark Sherry (mdsherry)&lt;br /&gt;
 SA: William O&#039;Connor (woconnor)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: David Bartley (dtbartle)&lt;br /&gt;
 VP: David Belanger (dbelange)&lt;br /&gt;
 TR: David Tenty (daltenty)&lt;br /&gt;
 SE: Chris Evensen (cevensen)&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Martin Kess (mdkess)&lt;br /&gt;
 VP: Mark Sherry (mdsherry)&lt;br /&gt;
 TR: Sylvan L. Mably (slmably)&lt;br /&gt;
 SE: Caelyn McAulay (cmcaulay) &lt;br /&gt;
 SA: William O&#039;Connor (woconnor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2007=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: David Bartley (dtbartle)&lt;br /&gt;
 VP: David Belanger (dbelange)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: David Tenty (daltenty)&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 Webmaster: jnopporn&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Gaelan D&#039;costa (gdcosta)&lt;br /&gt;
 VP: Kyle Larose (kmlarose)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Erik Louie (elouie)&lt;br /&gt;
 SA: Michael Spang (mspang)&lt;br /&gt;
 Librarian: David Tenty (daltenty)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: Holden Karau (hkarau)&lt;br /&gt;
 VP: Alex McCausland (amccausl)&lt;br /&gt;
 TR: Dominik Chlobowski (dchlobow)&lt;br /&gt;
 SE: Sean Cumming (sgcummin)&lt;br /&gt;
 SA: David Tenty (daltenty)&lt;br /&gt;
 OF:&lt;br /&gt;
 WW: dtbartle / jnopporn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2008=&lt;br /&gt;
&lt;br /&gt;
===Winter ===&lt;br /&gt;
 PR: Sean Cumming (sgcummin)&lt;br /&gt;
 VP: Matt Lawrence (m3lawren)&lt;br /&gt;
 TR: Mateusz Tarkowski (mtarkows)&lt;br /&gt;
 SE: Edgar Bering (ebering)&lt;br /&gt;
 SA: Jordan Saunders (jmsaunde)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Summer ===&lt;br /&gt;
 PR: Brennan Taylor (b4taylor)&lt;br /&gt;
 VP: Qifan Xi (qxi)&lt;br /&gt;
 TR: Matt Lawrence (m3lawren)&lt;br /&gt;
 SE: Nick Guenther (nguenthe)&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: Matthew Lawrence (m3lawren)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Gregson (mgregson)&lt;br /&gt;
 SE: James Simpson (j2simpso) resigned for medical reasons, replaced by Dominik &#039;Domo&#039; Chłobowski&lt;br /&gt;
 SA: Kyle Spaans (kspaans)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2009=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Michael Gregson (mgregson)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Brennan Taylor (b4taylor)&lt;br /&gt;
 SE: James Simpson (j2simpso)  resigned for business reasons, replaced by Rebecca Putinski (rjputins) &lt;br /&gt;
 SA: Jacob Parker (j3parker) &lt;br /&gt;
 OF: XinChi Yang / Sapphyre Gervais (x23yang / sagervai) (both)&lt;br /&gt;
&lt;br /&gt;
===Spring ===&lt;br /&gt;
 PR: Michael Spang (mspang)&lt;br /&gt;
 VP: Jacob Parker (j3parker)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Anthony Brennan (a2brenna)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Spang (mspang)&lt;br /&gt;
 SE: Brennan Taylor (b4taylor)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Rebecca Putinski (rjputins)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2010=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Kyle Spaans (kspaans)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Ajnu Jacob (ajacob)&lt;br /&gt;
 SA: Matthew Thiffault (mthiffau)&lt;br /&gt;
 OF: Jacob Parker (j3parker)&lt;br /&gt;
&lt;br /&gt;
 Keyed office staffers: j3camero,jdonland,m2ellis,mimcpher,nsasherr&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Jeff Cameron (j3camero)&lt;br /&gt;
 VP: Brennan Taylor (b4taylor)&lt;br /&gt;
 TR: Vardhan Mudunuru (vmudunur)&lt;br /&gt;
 SE: Matthew Lawrence (m3lawren)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Edgar Bering (ebering)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Rebecca Putinski (rjputins)&lt;br /&gt;
 SE: Kyle Spaans (kspaans)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Amir Sayed Khader (askhader)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2011=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Edgar Bering (ebering)&lt;br /&gt;
 VP: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Elana &amp;quot;Alana&amp;quot; Hashman (ehashman)&lt;br /&gt;
 SA: Peter &amp;quot;Bofh&amp;quot; Barfuss (pbarfuss)&lt;br /&gt;
 OF: Marc Burns (Marc Burns)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Matthew Thiffault (mthiffau)&lt;br /&gt;
 VP: Matthew McPherrin (mimcpher)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Kwame Andrew Ansong (kansong)&lt;br /&gt;
 SA: Jeremy Brandon Roman (jbroman)&lt;br /&gt;
 OF: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Katharine Hyatt (kshyatt)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Elana Hashman (ehashman)&lt;br /&gt;
 SA: Anthony &amp;quot;hatguy/hotgay&amp;quot; Brennan (a2brenna)&lt;br /&gt;
 OF: Kyle Spaans (kspaans)&lt;br /&gt;
 LIB: Edgar Bering (ebering)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2012=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Elana Hashman (ehashman)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Luqman Aden (laden)&lt;br /&gt;
 LIB: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
&lt;br /&gt;
===Summer===&lt;br /&gt;
 PR: Anthony Brennan (a2brenna)&lt;br /&gt;
 VP: Luqman Aden (laden)&lt;br /&gt;
 TR: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SE: Elana Hashman (ehashman)&lt;br /&gt;
 SA: Sarah Harvey (sharvey)&lt;br /&gt;
 OF: Marc Burns (m4burns)&lt;br /&gt;
 LIB: John Ladan (jladan)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Salem Talha (satalha)&lt;br /&gt;
 TR: Jennifer Wong (jy2wong)&lt;br /&gt;
 SE: Elana Hashman (ehashman), resigned&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Luqman Aden (laden)&lt;br /&gt;
 LIB: John Ladan (jladan)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2013=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Anthony Brennan (a2brenna)&lt;br /&gt;
 VP: Marc Burns (m4burns)&lt;br /&gt;
 TR: John Mumford (jsmumfor)&lt;br /&gt;
 SE: Matt Olechnowicz (mgolechn)&lt;br /&gt;
 SA: Sarah Harvey (sharvey)&lt;br /&gt;
 OF: Bryan Coutts (b2coutts)&lt;br /&gt;
 LIB: Matthew McPherrin (mimcpher)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Shane Robert Creighton-Young (srcreigh)&lt;br /&gt;
 VP: Visishta Vijayanand (vvijayan)&lt;br /&gt;
 TR: Dominik Chlobowski (dchlobow)&lt;br /&gt;
 SE: Youn Jin Kim (yj7kim)&lt;br /&gt;
 SA: Anthony Brennan (a2brenna)&lt;br /&gt;
 OF: Marc Burns (m4burns)&lt;br /&gt;
 IMAPD: Dominik Chlobowski (dchlobow)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Elana Hashman (ehashman)&lt;br /&gt;
 VP: Marc Burns (m4burns)&lt;br /&gt;
 TR: Dominik Chlobowski (dchlobow)&lt;br /&gt;
 SE: Edward Lee (e45lee)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Sean Hunt (scshunt)&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3573</id>
		<title>Past Executive</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3573"/>
		<updated>2013-12-15T02:55:25Z</updated>

		<summary type="html">&lt;p&gt;Ehashman: /* 1970 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Data sources for this exec list have been: CSC records, MathNEWS.&lt;br /&gt;
According to the warrior wiki dudes, there was an article about the CSC being founded in the chevron: &#039;&#039;This week on campus&#039;&#039;. The Chevron. January 5 1968. Page 16. -- somebody should get a copy of that.&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
 #define PR President&lt;br /&gt;
 #define VP Vice-president&lt;br /&gt;
 #define TR Treasurer&lt;br /&gt;
 #define SE Secretary&lt;br /&gt;
 #define SA Sysadmin&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define LI Librarian&lt;br /&gt;
 #define FL Flasher&lt;br /&gt;
 #define DE Deity&lt;br /&gt;
 #define WW Webmaster&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define SE-TR Secretary-Treasurer (Position was split)&lt;br /&gt;
&lt;br /&gt;
=Founding 1967=&lt;br /&gt;
&lt;br /&gt;
 Sponsor - J. Peter Sprung&lt;br /&gt;
 PR: K. Rugger&lt;br /&gt;
 VP: R. Jaques&lt;br /&gt;
 SE-TR: G. Sutherland&lt;br /&gt;
&lt;br /&gt;
 Founding Members:&lt;br /&gt;
 B. Kindree&lt;br /&gt;
 R. Melen&lt;br /&gt;
 V. Neglia&lt;br /&gt;
 R. Charney&lt;br /&gt;
 R. Truman&lt;br /&gt;
 Glenn Berry&lt;br /&gt;
 D. Meek&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Bill Kindred&lt;br /&gt;
 VP: Rick Jacques&lt;br /&gt;
 SE-TR: Graham Sutherland&lt;br /&gt;
&lt;br /&gt;
Committee members: R. Stallwerthy, C. de Vries&lt;br /&gt;
&lt;br /&gt;
=1968=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Bill Kindred&lt;br /&gt;
 VP: Rick Jacques&lt;br /&gt;
 SE-TR: Graham Sutherland&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 SE-TR: Glenn Berry&lt;br /&gt;
&lt;br /&gt;
=1969=&lt;br /&gt;
&lt;br /&gt;
Unknown, only one letter found in the folder &#039;ACM History&#039; addressed to Glenn Berry, which makes it likely that he was SE-TR once again. May be indicated in membership lists. The club appears to have died this academic year.&lt;br /&gt;
&lt;br /&gt;
=1970=&lt;br /&gt;
&lt;br /&gt;
===A note on ACM affiliation===&lt;br /&gt;
&lt;br /&gt;
The first attempt at joining the ACM was started with an informal inquiry Dec 5, 1967. This lead to a series of constitution edits (working towards affiliation) in Winter 1968. There was a break for the spring (no correspondence found, I presume we were waiting on a reply). In the fall records indicate that our constitution and chartering was rejected, further correspondence was sent in Fall 1968 by Glenn Berry. A new inquiry, seemingly unaware of the first was sent Dec 7, 1970&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Rick Beach&lt;br /&gt;
 VP: Lee Santon&lt;br /&gt;
 TR: Randy Melen&lt;br /&gt;
 SE: Vic Neglia&lt;br /&gt;
&lt;br /&gt;
=1971=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 VP: James H. &amp;quot;Jim&amp;quot; Finch and James W. Welch both signed letters as VP.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 VP: James W. Welch&lt;br /&gt;
&lt;br /&gt;
=1972=&lt;br /&gt;
&lt;br /&gt;
It appears we visited Western and Western visited us this year (there is some reference to a similar occurrence the year previous). Documents from 1973 indicate a termly exec structure, this probably goes back to 1972.&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Mike Campbell&lt;br /&gt;
 VP: Edgar Hew&lt;br /&gt;
 SE-TR: Doug Lacy&lt;br /&gt;
&lt;br /&gt;
There is also stuff from James W. Welch without a position.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Ian McIntosh&lt;br /&gt;
&lt;br /&gt;
=1973=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 SE: Douglas E. Lacy&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Parry&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Parry&lt;br /&gt;
 VP: Ray Walden&lt;br /&gt;
 TR: Slavko Stemberger&lt;br /&gt;
 SE: Mario Festival&lt;br /&gt;
&lt;br /&gt;
=1974=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Russell Crook&lt;br /&gt;
&lt;br /&gt;
=1975-1977=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman??&lt;br /&gt;
&lt;br /&gt;
 Peter Raynham reports (first hand account): president for at least 2 or 3 terms in this period.&lt;br /&gt;
 Sylvia Eng: 1975/6 as some position.&lt;br /&gt;
 Dave Buckingham: a VP at some point&lt;br /&gt;
 Allison Nolan: 1977 time&lt;br /&gt;
 Peter Stevens: 1977&lt;br /&gt;
 Russel Crook???&lt;br /&gt;
&lt;br /&gt;
Dennis Ritchie came. So did Jeffrey D. Ullman.&lt;br /&gt;
&lt;br /&gt;
=1976=&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
Progcom: Peter Stevens&lt;br /&gt;
&lt;br /&gt;
=1977=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 Progcom: Allison Nowlan&lt;br /&gt;
&lt;br /&gt;
===Spring=== &lt;br /&gt;
&lt;br /&gt;
 PR: Peter Stevens&lt;br /&gt;
 Progcom: Allison Nowlan&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Andrzej Jan Taramina&lt;br /&gt;
 Progcom: Allison Nowlan&lt;br /&gt;
&lt;br /&gt;
=1978=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Peter Stevens&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 TR: K.G. Dykes&lt;br /&gt;
 SE: Kandry Mutheardy&lt;br /&gt;
&lt;br /&gt;
Brian Kernighan gave a talk this term. So did Ken Thompson.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
=1979=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Robert Biddle&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1987=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Boritz&lt;br /&gt;
 VP: Ted Timar&lt;br /&gt;
 TR: Gayla Boritz&lt;br /&gt;
 SE: Edwin Hoogerbeets&lt;br /&gt;
&lt;br /&gt;
=1988=&lt;br /&gt;
&lt;br /&gt;
Jim Boritz was president in Winter 1988. (Source: http://csclub.uwaterloo.ca/misc/procedure.pdf)&lt;br /&gt;
Tim Timar - cc&#039;d on memos/mentioned on mathsoc minutes in 1987/88.&lt;br /&gt;
The Sysadmin and Office Manager positions seem to have been created somewhere in here. The &#039;Record Management Profile&#039; that Robyn Stewart did as an assignment in 1991-1992 for some class at UBC&lt;br /&gt;
indicates the existence of both positions. We acquired an HP-9000 in the summer of 1988 and as this was out first &amp;quot;real&amp;quot; computer (previously we had an IBM PC and terminal), the sysadmin position was created, starting with the Fall 1988 term.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 SA: Wade Richards&lt;br /&gt;
&lt;br /&gt;
=1989=&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989-big.jpg&lt;br /&gt;
&lt;br /&gt;
Left to right:  Jim Boritz (bottom), Wade Richards (top), Ted Timar, ???, Keven Smith, Bill Gates (not exec), Angela Chambers, Ross Ridge (top), Sean Goggin (bottom), ??? &lt;br /&gt;
&lt;br /&gt;
 PR: Barry W. Smith&lt;br /&gt;
 VP: Angela Chambers&lt;br /&gt;
 TR:&lt;br /&gt;
 SE: Sean Goggin&lt;br /&gt;
 SA: Wade Richards / Ross Ridge&lt;br /&gt;
&lt;br /&gt;
(President Kevin Smith confirmed: http://csclub.uwaterloo.ca/misc/procedure.pdf)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Thornton&lt;br /&gt;
 VP: Gayla Boritz&lt;br /&gt;
 TR: David Fenger&lt;br /&gt;
 SE: Kivi Shapiro&lt;br /&gt;
 SA: Reid Pinchback&lt;br /&gt;
&lt;br /&gt;
Assistance to sysadmin: Jim Boritz.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: James Boritz&lt;br /&gt;
 VP: Edmond Bourne&lt;br /&gt;
 SA: Ross Ridge&lt;br /&gt;
&lt;br /&gt;
=1990=&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 TR: Jim Thornton&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 TR: Karen Smith&lt;br /&gt;
 SE: Robyn Steward&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Wade Richards&lt;br /&gt;
 TR: Carolyn Duke&lt;br /&gt;
 SE: Robyn Stewart - attended mathsoc meeting on our behalf.&lt;br /&gt;
 Kivi Shapiro - attended mathsoc meeting on our behalf.&lt;br /&gt;
              - Censured by mathsoc for his actions during the election.&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
&lt;br /&gt;
=1991=&lt;br /&gt;
===Winter===&lt;br /&gt;
 VP: Edmond Bourne&lt;br /&gt;
 TR: Carolyn Duke&lt;br /&gt;
 SE: Robyn Stewart&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
&lt;br /&gt;
John McCarthy came this term.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Rob Leitman&lt;br /&gt;
 Jason Knell - attended mathsoc meeting on our and PMC&#039;s behalf.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 TR: Mike Van Lingen&lt;br /&gt;
 Wiktor Wiewiorowski - attended mathsoc meeting on our behalf this term.&lt;br /&gt;
&lt;br /&gt;
=1992=&lt;br /&gt;
===Winter===&lt;br /&gt;
 TR: Norm Ross&lt;br /&gt;
 SE: Brent Williams&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick&lt;br /&gt;
 TR: Stephen A. Mills&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 TR: Mark Plumb&lt;br /&gt;
&lt;br /&gt;
=1993=&lt;br /&gt;
===Winter===&lt;br /&gt;
 TR: Rob Leitman&lt;br /&gt;
 VP: Tim Prime&lt;br /&gt;
 OF: Dave Ebbo&lt;br /&gt;
 LI: Norm Ross&lt;br /&gt;
&lt;br /&gt;
Other exec for this term: Ellen Hsiang, Sam Coulombe, Peter Gray&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Mark Tompsett &lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Ian Goldberg&lt;br /&gt;
&lt;br /&gt;
=1994=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Ian Goldberg&lt;br /&gt;
 TR: Mark Tompsett&lt;br /&gt;
 SE: Tom Rathbourne&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
 Norm Ross assisted with finances.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick (?)&lt;br /&gt;
 TR: Steve Mills&lt;br /&gt;
 SA: Ian Goldberg (?)&lt;br /&gt;
 Norm Ross assisted with finances.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Ross Ridge&lt;br /&gt;
 VP: Tom Rathbourne (?)&lt;br /&gt;
 TR: Rob Leitman&lt;br /&gt;
 SA: Zygo Blaxell&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
&lt;br /&gt;
=1995=&lt;br /&gt;
===Winter===&lt;br /&gt;
 TR: Sharlene Schmeichel&lt;br /&gt;
 Amy Brown and Rob Ridge purchased books.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Steve Mills&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Amy Brown (arbrown) &lt;br /&gt;
 VP: Christina Norman (cbnorman)&lt;br /&gt;
 TR: Steven Mills (samills)&lt;br /&gt;
 SE: Allyson Graham (akgraham)&lt;br /&gt;
 SA: Gavin Peters&lt;br /&gt;
&lt;br /&gt;
=1996=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Nikita Borisov (nborisov)&lt;br /&gt;
 VP: Joseph Deu Ngoc (dtdeungo) &lt;br /&gt;
 TR: Stephen Mills (samills)&lt;br /&gt;
 SE: Sharlene Schmeichel (saschmei)&lt;br /&gt;
 SA: Dave Brown (dagbrown)&lt;br /&gt;
 OF: Somsack Tsai (stsai)&lt;br /&gt;
 LI: Devin Carless (dccarles)&lt;br /&gt;
 FL: Allyson Graham (akgraham)&lt;br /&gt;
 DE: Ian Goldberg (iagoldbe)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Blake Winton (bwinton)&lt;br /&gt;
 VP: Nick Harvey (njaharve)&lt;br /&gt;
 TR: Nikita Borisov (nborisov)&lt;br /&gt;
 SE: Viet-Trung Luu (vluu)&lt;br /&gt;
 SA: Drew Hamilton (awhamilt)&lt;br /&gt;
 OF: Jillian Arnott (jarnott)&lt;br /&gt;
 LI: Ross Ridge (rridge)&lt;br /&gt;
 FL: Devin Carless (dccarles)&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Shannon Mann (sjbmann) &lt;br /&gt;
 VP: Joe &amp;quot;Frosh&amp;quot; Deu Ngoc (jtdeungo)    resigned (heavy workload)&lt;br /&gt;
 TR: Michal Van Biesbrouck (mlvanbie) &lt;br /&gt;
 SE: Nikita Borisov (nborisov) &lt;br /&gt;
 SA: Chris Rovers &lt;br /&gt;
 OF: Dax Hutcheon (ddhutche)            became VP upon jtduengo&#039;s resignation&lt;br /&gt;
 LI: Aliz Csenki (acsenki) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel) &lt;br /&gt;
 DE: Skuld (no uwuserid yet...)&lt;br /&gt;
&lt;br /&gt;
=1997 =&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Dima Brodsky &lt;br /&gt;
 VP: Nikita Borisov (nborisov)&lt;br /&gt;
 TR: Stephen Mills (samills)&lt;br /&gt;
 SE: Evan Jones (ejones)&lt;br /&gt;
 SA: Alex Brodsky&lt;br /&gt;
 OF: Chris Doherty&lt;br /&gt;
 LI: Matt Corks &lt;br /&gt;
 FL: Paul Prescod&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Chris Rovers (cdrovers) &lt;br /&gt;
 VP: Michael van Biesbrouck (mlvanbie) &lt;br /&gt;
 TR: Somsack Tsai (stsai) &lt;br /&gt;
 SE: Matt Corks (mvcorks)&lt;br /&gt;
 SA: Lennart Sorensen (lsorense) &lt;br /&gt;
 LI: Chmielowiec (archmiel) &lt;br /&gt;
 OF: Devin Carless (dccarles) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel)&lt;br /&gt;
&lt;br /&gt;
= 1998 =&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Suresh Naidu  &lt;br /&gt;
 VP: Viet-Trung Luu &lt;br /&gt;
 TR: Tim Coleman &lt;br /&gt;
 SE: Dax Hutcheon &lt;br /&gt;
 Librarian: Dax Hutcheon &lt;br /&gt;
 Flasher: Dax Hutcheon &lt;br /&gt;
 Webmaster: Dax Hutcheon &lt;br /&gt;
 SA: Robin Powell&lt;br /&gt;
 OF: Aaron Chmielowiec&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
 Position	Name	You might call them...&lt;br /&gt;
 President	roconnor	Russell O&#039;Connor&lt;br /&gt;
 Vice-president	trwcolem	Tim Coleman&lt;br /&gt;
 Treasurer	knzarysk	Karl Zaryski&lt;br /&gt;
 Secretary	(bwinton)	(Blake Winton)&lt;br /&gt;
 Sysadmin	wbiggs	Billy Biggs&lt;br /&gt;
 Librarian	snaidu	Suresh Naidu&lt;br /&gt;
 Flasher	pechrysl	Paul Chrysler&lt;br /&gt;
 Office Manager	dccarles	Devin Carless&lt;br /&gt;
 WWWW	trwcolem	Tim Coleman&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
 President	Joe Deu Ngoc	jtdeungo&lt;br /&gt;
 Vice-President	Wai Ling Yee	wlyee&lt;br /&gt;
 Treasurer	Fjord	j2lynn&lt;br /&gt;
 Secretary	Matt Corks	mvcorks&lt;br /&gt;
 Sysadmin	Andrew Hamilton	awhamilt&lt;br /&gt;
&lt;br /&gt;
 World Wide Web Wench	Dax Hutcheon	ddhutche&lt;br /&gt;
 Office Manager	Richard Bell	rlbell&lt;br /&gt;
 Librarian	Damian Gryski	dgryski&lt;br /&gt;
 Flasher	Paul Chrysler	pechrysl&lt;br /&gt;
 Official Deity	Ian Goldberg	iagoldbe&lt;br /&gt;
 Official Chairbeing	Calum T. Dalek	calum&lt;br /&gt;
&lt;br /&gt;
=1999=&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
=2000=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Will Chartrand (wgchartr)&lt;br /&gt;
 VP: Gavin Duggan (geduggan)&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: Lennart Sorensen (lsorense)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP: &lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: bioster&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2001=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
=2002=&lt;br /&gt;
http://www.mathnews.uwaterloo.ca/Issues/mn8902/cscflash.php&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Billy Biggs&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: Melissa Basinger&lt;br /&gt;
 SE: James Perry&lt;br /&gt;
 SA: Barry Genova&lt;br /&gt;
 Librarian: Ryan Golbeck&lt;br /&gt;
 Webmaster: Jonathan Beverley&lt;br /&gt;
 Office Manager: Sayan Li&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: Alex Pop&lt;br /&gt;
 VP: Melissa Basinger&lt;br /&gt;
 TR: Siyan Li&lt;br /&gt;
 SE: James A Morrison&lt;br /&gt;
 SA: Jonathan Beverley&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: James A. Morrison&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: James Perry&lt;br /&gt;
 SE: Michael Biggs&lt;br /&gt;
 SA: Ryan Golbeck&lt;br /&gt;
 Librarian: Mark Sherry, Cassandra Schopf&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
=2003=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Kannan Vijayan (kvijayan)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: James Perry (jeperry)&lt;br /&gt;
 SE: Wojciech Kosnik (wkosnik)&lt;br /&gt;
 SA: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 LI: Simon Law (sfllaw)&lt;br /&gt;
 WM: Julie Lavoie (jlavoie)&lt;br /&gt;
&lt;br /&gt;
=== Spring===&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: Tor Myklebust (tmyklebu)&lt;br /&gt;
 SE: James Perry (jeperry)&lt;br /&gt;
 SA: Simon Law (sfllaw)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2004=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Simon Law (sfllaw)&lt;br /&gt;
 VP: fspacek&lt;br /&gt;
 TR: ljain&lt;br /&gt;
 SE: Julie Lavoie (jlavoie)&lt;br /&gt;
 SA: Tor Myklebust(tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: dnmorton ?&lt;br /&gt;
 VP: Tim Loach (tloach)&lt;br /&gt;
 TR: Michael Biggs (mbiggs)&lt;br /&gt;
 SE: Lesley Northam (lanortha)&lt;br /&gt;
 SA: &lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: jeperry&lt;br /&gt;
 VP: mtsay&lt;br /&gt;
 TR: Mark Sherry (mdsherry)&lt;br /&gt;
 SE: Tor Myklebust (tmyklebu)&lt;br /&gt;
 SA: jlavoie&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2005=&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: mtsay&lt;br /&gt;
 VP: Lesley Northam (lanortha)&lt;br /&gt;
 TR: Holden Karau (hkarau)&lt;br /&gt;
 SE: domorton&lt;br /&gt;
 SA: Tor Myklebust (tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Mark Sherry (mdsherry)&lt;br /&gt;
 VP: Martin Kess (mdkess)&lt;br /&gt;
 TR: Ali Piccioni (apiccion)&lt;br /&gt;
 SE: Michael Biggs (mbiggs)&lt;br /&gt;
 SA: Tor Myklebust (tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Tim Loach (tloach)&lt;br /&gt;
 VP: Lesley Northam (lanortha)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: The Professor&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2006=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Tor Myklebust (tmyklebu)&lt;br /&gt;
 VP: Michael Druker (mdruker)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: Mark Sherry (mdsherry)&lt;br /&gt;
 SA: William O&#039;Connor (woconnor)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: David Bartley (dtbartle)&lt;br /&gt;
 VP: David Belanger (dbelange)&lt;br /&gt;
 TR: David Tenty (daltenty)&lt;br /&gt;
 SE: Chris Evensen (cevensen)&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Martin Kess (mdkess)&lt;br /&gt;
 VP: Mark Sherry (mdsherry)&lt;br /&gt;
 TR: Sylvan L. Mably (slmably)&lt;br /&gt;
 SE: Caelyn McAulay (cmcaulay) &lt;br /&gt;
 SA: William O&#039;Connor (woconnor)&lt;br /&gt;
&lt;br /&gt;
=2007=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: David Bartley (dtbartle)&lt;br /&gt;
 VP: David Belanger (dbelange)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: David Tenty (daltenty)&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 Webmaster: jnopporn&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Gaelan D&#039;costa (gdcosta)&lt;br /&gt;
 VP: Kyle Larose (kmlarose)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Erik Louie (elouie)&lt;br /&gt;
 SA: Michael Spang (mspang)&lt;br /&gt;
 Librarian: David Tenty (daltenty)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: Holden Karau (hkarau)&lt;br /&gt;
 VP: Alex McCausland (amccausl)&lt;br /&gt;
 TR: Dominik Chlobowski (dchlobow)&lt;br /&gt;
 SE: Sean Cumming (sgcummin)&lt;br /&gt;
 SA: David Tenty (daltenty)&lt;br /&gt;
 OF:&lt;br /&gt;
 WW: dtbartle / jnopporn&lt;br /&gt;
&lt;br /&gt;
=2008=&lt;br /&gt;
===Winter ===&lt;br /&gt;
 PR: Sean Cumming (sgcummin)&lt;br /&gt;
 VP: Matt Lawrence (m3lawren)&lt;br /&gt;
 TR: Mateusz Tarkowski (mtarkows)&lt;br /&gt;
 SE: Edgar Bering (ebering)&lt;br /&gt;
 SA: Jordan Saunders (jmsaunde)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Summer ===&lt;br /&gt;
 PR: Brennan Taylor (b4taylor)&lt;br /&gt;
 VP: Qifan Xi (qxi)&lt;br /&gt;
 TR: Matt Lawrence (m3lawren)&lt;br /&gt;
 SE: Nick Guenther (nguenthe)&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: Matthew Lawrence (m3lawren)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Gregson (mgregson)&lt;br /&gt;
 SE: James Simpson (j2simpso) resigned for medical reasons, replaced by Dominik &#039;Domo&#039; Chłobowski&lt;br /&gt;
 SA: Kyle Spaans (kspaans)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2009=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Michael Gregson (mgregson)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Brennan Taylor (b4taylor)&lt;br /&gt;
 SE: James Simpson (j2simpso)  resigned for business reasons, replaced by Rebecca Putinski (rjputins) &lt;br /&gt;
 SA: Jacob Parker (j3parker) &lt;br /&gt;
 OF: XinChi Yang / Sapphyre Gervais (x23yang / sagervai) (both)&lt;br /&gt;
&lt;br /&gt;
===Spring ===&lt;br /&gt;
 PR: Michael Spang (mspang)&lt;br /&gt;
 VP: Jacob Parker (j3parker)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Anthony Brennan (a2brenna)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Spang (mspang)&lt;br /&gt;
 SE: Brennan Taylor (b4taylor)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Rebecca Putinski (rjputins)&lt;br /&gt;
&lt;br /&gt;
=2010=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Kyle Spaans (kspaans)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Ajnu Jacob (ajacob)&lt;br /&gt;
 SA: Matthew Thiffault (mthiffau)&lt;br /&gt;
 OF: Jacob Parker (j3parker)&lt;br /&gt;
&lt;br /&gt;
 Keyed office staffers: j3camero,jdonland,m2ellis,mimcpher,nsasherr&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Jeff Cameron (j3camero)&lt;br /&gt;
 VP: Brennan Taylor (b4taylor)&lt;br /&gt;
 TR: Vardhan Mudunuru (vmudunur)&lt;br /&gt;
 SE: Matthew Lawrence (m3lawren)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Edgar Bering (ebering)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Rebecca Putinski (rjputins)&lt;br /&gt;
 SE: Kyle Spaans (kspaans)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Amir Sayed Khader (askhader)&lt;br /&gt;
&lt;br /&gt;
=2011=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Edgar Bering (ebering)&lt;br /&gt;
 VP: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Elana &amp;quot;Alana&amp;quot; Hashman (ehashman)&lt;br /&gt;
 SA: Peter &amp;quot;Bofh&amp;quot; Barfuss (pbarfuss)&lt;br /&gt;
 OF: Marc Burns (Marc Burns)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Matthew Thiffault (mthiffau)&lt;br /&gt;
 VP: Matthew McPherrin (mimcpher)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Kwame Andrew Ansong (kansong)&lt;br /&gt;
 SA: Jeremy Brandon Roman (jbroman)&lt;br /&gt;
 OF: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Katharine Hyatt (kshyatt)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Elana Hashman (ehashman)&lt;br /&gt;
 SA: Anthony &amp;quot;hatguy/hotgay&amp;quot; Brennan (a2brenna)&lt;br /&gt;
 OF: Kyle Spaans (kspaans)&lt;br /&gt;
 LIB: Edgar Bering (ebering)&lt;br /&gt;
&lt;br /&gt;
=2012=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Elana Hashman (ehashman)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Luqman Aden (laden)&lt;br /&gt;
 LIB: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
&lt;br /&gt;
===Summer===&lt;br /&gt;
 PR: Anthony Brennan (a2brenna)&lt;br /&gt;
 VP: Luqman Aden (laden)&lt;br /&gt;
 TR: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SE: Elana Hashman (ehashman)&lt;br /&gt;
 SA: Sarah Harvey (sharvey)&lt;br /&gt;
 OF: Marc Burns (m4burns)&lt;br /&gt;
 LIB: John Ladan (jladan)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Salem Talha (satalha)&lt;br /&gt;
 TR: Jennifer Wong (jy2wong)&lt;br /&gt;
 SE: Elana Hashman (ehashman), resigned&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Luqman Aden (laden)&lt;br /&gt;
 LIB: John Ladan (jladan)&lt;br /&gt;
&lt;br /&gt;
=2013=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Anthony Brennan (a2brenna)&lt;br /&gt;
 VP: Marc Burns (m4burns)&lt;br /&gt;
 TR: John Mumford (jsmumfor)&lt;br /&gt;
 SE: Matt Olechnowicz (mgolechn)&lt;br /&gt;
 SA: Sarah Harvey (sharvey)&lt;br /&gt;
 OF: Bryan Coutts (b2coutts)&lt;br /&gt;
 LIB: Matthew McPherrin (mimcpher)&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Shane Robert Creighton-Young (srcreigh)&lt;br /&gt;
 VP: Visishta Vijayanand (vvijayan)&lt;br /&gt;
 TR: Dominik Chlobowski (dchlobow)&lt;br /&gt;
 SE: Youn Jin Kim (yj7kim)&lt;br /&gt;
 SA: Anthony Brennan (a2brenna)&lt;br /&gt;
 OF: Marc Burns (m4burns)&lt;br /&gt;
 IMAPD: Dominik Chlobowski (dchlobow)&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Elana Hashman (ehashman)&lt;br /&gt;
 VP: Marc Burns (m4burns)&lt;br /&gt;
 TR: Dominik Chlobowski (dchlobow)&lt;br /&gt;
 SE: Edward Lee (e45lee)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Sean Hunt (scshunt)&lt;/div&gt;</summary>
		<author><name>Ehashman</name></author>
	</entry>
</feed>