aboutsummaryrefslogtreecommitdiffstats
path: root/bootstrap/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/README.md')
-rw-r--r--bootstrap/README.md150
1 files changed, 150 insertions, 0 deletions
diff --git a/bootstrap/README.md b/bootstrap/README.md
new file mode 100644
index 0000000..8301d51
--- /dev/null
+++ b/bootstrap/README.md
@@ -0,0 +1,150 @@
+Outline:
+------------------------------------------------------------------
+
+ 1. Install OS on three boxes
+ 2. Bootstrap:
+ * Install tgmanage on one, the bootstrap (tools, include, netlist.txt)
+ * Install dependencies on bootstrap
+ * Push SSH key key to the other boxes (init-sshkeys.sh)
+ * Update configuration
+ * Update netlist.txt
+ * Bootstrap the primary and secondary (make-base-requires.sh)
+ 3. Create new networks/scopes/zones Update during the party using
+ update-baseservice.sh from bootstrap
+ 4. Apply changes usling tools/apply-baseupdate.sh (reloads bind, restarts dhcpd)
+ 5. Changes to generated scopes, pools, zones are done on the primary, in the files
+ 6. If tools need patching, patch on boot and push with update-tools.sh
+ 7. Before wednesday evening, the infra.tgXX.gathering.org zone should be updated!
+
+**Only use make-base-requires.sh during bootstrap !!!!!!! :P**
+
+Detailed instructions and description:
+==================================================================
+
+1: Install Debian
+------------------------------------------------------------------
+
+The following three hosts/servers are normally used:
+ * A 'bootstrap' box. This server will be used to configure
+ the first TG-servers, and may end up hosting the switch-config and NMS.
+ * The server to use as Primary DNS and DHCP server
+ * The server to use as Secondary DNS and SMTP.
+
+2: Perform bootstrapping
+------------------------------------------------------------------
+
+Start by placing the 'tgmanage' directory as '/root/tgmanage' on the bootstrap
+box. Change into the 'tgmanage' directory. Next, run
+'bootstrap/install-dependencies.sh boot'
+
+
+Edit 'include/config.local.pm' and update for this year's TG. Use
+'bootstrap/create-shellconf.pl' to extract configuration from the perl module to
+create/update the 'include/tgmanage.cfg.sh' configuration script.
+
+Run 'bootstrap/create-hostsfile.sh' to make sure the bootstrap-box can use
+hostnames to reach the pri/sec DNS even before DNS is set up.
+
+The tools make extensive use of key-based SSH logins, to make this work
+seamlessly, run 'bootstrap/init-sshkeys.sh' to create an RSA priv/pub keypair, and
+push the pubkey to the Primary and Secondary boxes.
+
+
+The Network-list is _not_ automagically updated. A copy of last year's
+netlist.txt should be included in the goodiebag. With that as a base, update
+for this year's address plan. Remember that client nets in the hall are
+supposed to be pulled from switches.txt ...
+The rest of the information needed should be pulled from techwiki.g.o The
+format of the file is: one net per line, lines starting with # are skipped,
+format of each net-line is:
+
+ # <network adress> <prefixlen> <network-name>
+ 176.110.124.0 24 noc
+
+
+Run 'bootstrap/make-base-requires.sh'. This script will log in on the Primary and
+Secondary boxes, install dependencies and the BIND/DHCP packages, create all
+needed directories, create the initial configuration files.
+
+A short listing of the tasks of scripts called by make-base-requires (NOTE: these
+scripts are run by bootstrap/make-base-requires.sh, you should not need to run these individually):
+ * bootstrap/install-dependencies.sh
+ * Installs needed base software to boot, primary and secondary
+ * bootstrap/make-named.pl
+ * Basic BIND setup (creates named.conf et.al)
+ * bootstrap/make-first-zones.pl
+ * Creates static zone-files (tgname, infra, ipv6zone)
+ * bootstrap/make-reverse4-files.pl
+ * Creates reverse-zones for IPv4
+ * bootstrap/make-dhcpd.pl
+ * Sets up the base setup for DHCP
+
+3++: Update during the party using update-baseservice.sh from bootstrap
+------------------------------------------------------------------
+
+After 'bootstrap/make-base-requires.sh' has been run, further updating should be
+managed by the following three files:
+ * bootstrap/update-baseservice.sh
+ * Used to add/update bind and DHCP configuration
+ * bootstrap/apply-baseupdate.sh
+ * Used to reload bind and restart DHCP
+ * bootstrap/update-tools.sh
+ * Used to push changes to the tgmanage toolchain
+
+This means, after the base setup is completed, updating and managing the
+configuration is done by updating netlist.txt and running bootstrap/update-baseservice.sh
+from the bootstrap box, or from the NMS box if the toolchain gets moved there during
+the party.
+
+To create a new DHCP scope, add DNS forward and reverse zone for a new network:
+
+ * Add the network to netlist.txt
+ * Run bootstrap/update-baseservice.sh to generate new .conf and .zone files
+ * Run bootstrap/apply-baseupdate.sh to load new configuration
+
+To do changes to DHCP config after the scope .conf file has been created
+(read: later in the party), log in to the primary/dhcp server, and make
+the changes in the appropriate .conf file ..
+
+To do DNS changes to the main DNS zone or the infra-zone, make the changes
+in the appropriate zone file on the primary DNS server.
+
+To add DNS records to any other DNS zone (forward or reverse), you have
+to use 'nsupdate'. To simplify the process, use bootstrap/generate-dnsrr.pl
+Usage on this tool is documented in the "header" of the script...
+
+
+The update prosess is handled by a bunch of "sub-tools", these should typically
+not need to be run individually:
+ * bootstrap/make-bind-include.pl
+ * Run via update-baseservice, adds new net's to DNS include
+ * bootstrap/make-dhcpd-include.pl
+ * Run via update-baseservice, adds new net's to DHCP include
+ * bootstrap/make-missing-conf.pl
+ * Run via update-baseservice, adds missing net-conf to BIND/DHCP
+
+
+7: Generation of linknet dns content
+------------------------------------------------------------------
+
+Format for linknet.txt is documented in make-linknet-hosts.pl
+
+Generate IPv4 infra hostnames and IP address assignments
+by using tools/generate-dnsrr.pl
+
+Output from this shuld go in infra.tgXX.gathering.org.zone on primary:
+> cat linknet.txt | tools/make-linknet-hosts.pl | tools/generate-dnsrr.pl --domain infra.tgXX.gathering.org
+
+Output from this should go as input to nsupdate, see doc in generate-dnsrr.pl:
+> cat linknet.txt | tools/make-linknet-hosts.pl | tools/generate-dnsrr.pl --domain infra.tgXX.gathering.org -ns -rev
+
+
+Other stuff....
+------------------------------------------------------------------
+Files that are not used? Need to revisit these files...
+
+ * tools/make-switch-placements.pl
+ * Updates positions for switches in NMS map (png)?
+ * tools/make-switches.pl
+ * tools/fetch-portlist.sh
+