You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

595 lines
20 KiB

%
% forksand-it-manual.tex
% Main LaTeX document for formatting forksand-it-manual
%
% Fork Sand IT Manual
%
% Copyright (C) 2018, Fork Sand, Inc.
% Copyright (C) 2017, Jeff Moe
%
% Document template:
% Copyright (C) 2018, Fork Sand, Inc.
% Copyright (C) 2011, 2012, 2013, 2014, 2015, 2016, 2017 Aleph Objects, Inc.
% Copyright (C) 2009, 2010 Jeff Moe
%
% This document is licensed under the Creative Commons Attribution 4.0
% International Public License (CC BY-SA 4.0) by Fork Sand, Inc.
%
%%% XXX NOTE
%%% Glossaries and indices are broken:
%%% https://sharelatex.tenderapp.com/help/discussions/questions/19378-glossaries-indices-and-speed
%%% XXX NOTE
% LaTeX Docs:
% http://en.wikibooks.org/wiki/Category:LaTeX
% LaTeX Memoir Class
% Docs: /usr/share/doc/texlive-doc/latex/memoir/memman.pdf
\special{pdf:minorversion 5}
%\pdfminorversion=6 % Make pdf include minor version tolerant
%\pdfinclusioncopyfonts=1 % Make pdf include minor version tolerant
\documentclass[twoside,10pt,openright,final,english,table]{memoir}
\usepackage[table]{xcolor}
\usepackage{etoolbox}
\makeatletter
\def\gnewcommand{\g@star@or@long\gnew@command}
\def\grenewcommand{\g@star@or@long\grenew@command}
\def\g@star@or@long#1{%
\@ifstar{\let\l@ngrel@x\global#1}{\def\l@ngrel@x{\long\global}#1}}
\def\gnew@command#1{\@testopt{\@gnewcommand#1}0}
\def\@gnewcommand#1[#2]{%
\kernel@ifnextchar [{\@gxargdef#1[#2]}%
{\@argdef#1[#2]}}
\let\@gxargdef\@xargdef
\patchcmd{\@gxargdef}{\def}{\gdef}{}{}
\let\grenew@command\renew@command
\patchcmd{\grenew@command}{\new@command}{\gnew@command}{}{}
\makeatother
\usepackage{tikz}
\usetikzlibrary{shadows,shapes,arrows,chains,calc,decorations.pathmorphing,patterns,trees,positioning,automata,fit}
% This breaks things, but would be great to use
%\usepackage{tikz-qtree,tikz-qtree-compat}
\usepackage{rotating}
\usepackage{forest}
\usetikzlibrary{arrows,shapes}
\usetikzlibrary{positioning,calendar,er}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{shapes.geometric}
% Source code highlighting
\usepackage{mdframed} % /usr/share/doc/texlive-doc/latex/mdframed/mdframed.pdf
\usepackage{minted} % /usr/share/doc/texlive-doc/latex/minted/minted.pdf
\setminted{autogobble, breaklines, breakanywhere, breakautoindent, funcnamehighlighting,style=manni,fontsize=\scriptsize}
% fontsize
\setmintedinline{breaklines, breakanywhere}
\surroundwithmdframed{minted}
\mdfsetup{roundcorner=10pt,
linewidth=3pt,
linecolor=ao-light-blue,
backgroundcolor=white,
leftmargin=1cm,rightmargin=1cm
}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{datatool}
\DTLsetseparator{,}
\DTLloaddb{sharkforkorder}{resources/spreadsheets/sharkfork_order.csv}
\providecommand\includedDBName{sharkforkorder}
\newcommand{\DTLfetchrelax}[2]{ {\let\_\relax \DTLfetch{\includedDBName}{1}{#1}{#2}} }
\usepackage{smartdiagram}
%\usepackage{svg}
\usesmartdiagramlibrary{additions}
\usepackage{comment} % /usr/share/doc/texlive-doc/latex/comment/comment.pdf
\usepackage{pdfpages} % Be able to include pdf
\usepackage{pict2e}
\usepackage{graphicx} % /usr/share/doc/texlive-doc/latex/graphics/graphicx.pdf
%\usepackage{epstopdf} % /usr/share/doc/texlive-doc/latex/oberdiek/epstopdf.pdf
% http://www.tug.org/applications/hyperref/manual.html
% /usr/share/doc/texlive-doc/latex/hyperref/hyperref.pdf
\usepackage[colorlinks=true,linkcolor=ao-dark-orange,urlcolor=ao-dark-orange]{hyperref}
%\usepackage{url} % /usr/share/doc/texlive-doc/latex/url/url.pdf % Use hyperref.
\graphicspath{{./resources/}{./resources/images/}{./resources/drawings/}}
\usepackage
[
% acronym,
% %nopostdot,
% toc,
% shortcuts,
% xindy
automake
]
{glossaries-extra}
\renewcommand*{\glstextformat}[1]{\textcolor{secondary-dark-brown}{\textbf{#1}}}
%\makeindex
%\makeglossary
\makeglossaries
\usepackage{color} % Docs: /usr/share/doc/texlive-latex-base-doc/latex/graphics/grfguide.pdf
\usepackage{colortbl}
%\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
%%% PREAMBLE FONTS %%%
% For XeTeX
% http://www.ctan.org/pkg/fontspec
% http://mirrors.ctan.org/macros/latex/contrib/fontspec/fontspec.pdf
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX} % To support LaTeX quoting style
\setmainfont{lmroman12}[
Extension=.otf ,
UprightFont = *-regular ,
SmallCapsFont = *-regular ,
BoldFont = *-bold ,
BoldItalicFont = *-bold ,
BoldSlantedFont = *-italic ,
ItalicFont = *-italic ,
SlantedFont = *-italic
%,
%SmallCapsFeatures = {Letters=SmallCaps}
,
SlantedFeatures = {FakeSlant,Colour=FF0000}
]
\usepackage[normalem]{ulem} % underline
\usepackage{floatpag} % Full page figures without page numbers.
%%% END PREAMBLE FONTS %%%
%%% PAGE, STOCK, AND MARGIN SIZE %%%
% "Crown Quarto/Crown 4vo" at Lulu and Lightning Source
% 7.44 x 9.68" 18.90 x 24.58cm
%\setstocksize{24.58cm}{18.90cm} % { height }{ width }
% US Letter
% 8.50 x 11.00" 21.59 x 27.94cm
%\setstocksize{27.94cm}{21.59cm} % { height }{ width }
% A4
% 8.27 x 11.70" 21.00 x 29.70cm
%\setstocksize{29.70cm}{21.00cm} % { height }{ width }
% Lulu Largest Hardcover, 24-800 pages
% 8.25 x 10.75" 20.96 x 27.31cm
\setstocksize{27.31cm}{20.96cm} % { height }{ width }
\settrimmedsize{\stockheight}{\stockwidth}{*}
%\settypeblocksize{ height }{ width }{ ratio }
% "Crown Quarto/Crown 4vo" at Lulu and Lightning Source
%\settypeblocksize{19.0cm}{*}{*}
% US Letter
%\settypeblocksize{23.0cm}{*}{*}
% A4
%\settypeblocksize{24.0cm}{*}{*}
% Lulu Largest Hardcover, 24-800 pages
\settypeblocksize{22.0cm}{*}{*}
%\setlrmarginsandblock{ spine }{ edge }{ ratio }
% make the spine have more space than outer edge
% "Crown Quarto/Crown 4vo" at Lulu and Lightning Source
%\setlrmarginsandblock{*}{2.5cm}{1.2}
% US Letter
%\setlrmarginsandblock{*}{2.0cm}{1.4}
% A4
%\setlrmarginsandblock{*}{2.0cm}{1.4}
% Lulu Largest Hardcover, 24-800 pages
\setlrmarginsandblock{*}{2.0cm}{1.4}
% \setulmargins{ upper }{ lower }{ ratio }
\setulmargins{2.0cm}{*}{*}
% \setheadfoot{ headheight }{ footskip }
\setheadfoot{12pt}{2cm}
\checkandfixthelayout[fixed]
%%% END PAGE, STOCK, AND MARGIN SIZE %%%
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\setsecnumdepth{subsection}
\usepackage[english]{babel}
\usepackage{datetime} % Docs: /usr/share/doc/texlive-doc/latex/datetime/datetime.pdf
\usepackage{ucs}
%%% PDFLATEX %%%
\usepackage{etex}
%%% Not all features are used in XeTeX
\usepackage[protrusion,babel,final]{microtype}
%%% Conflicts with package fontspec
%\usepackage[utf8x]{inputenc}
% Docs: /usr/share/doc/texlive-humanities-doc/latex/ledmac/ledmac.pdf
%\usepackage{eledmac}
%\usepackage{jebba}
%%% forksand-it-manual PAGE STYLE %%%
\makepagestyle{aocstyle}
\pagestyle{aocstyle}
\makeevenhead{aocstyle}{}{\hspace{2em}\itshape\small\leftmark}{}
\makeoddhead{aocstyle}{}{\scshape\small\rightmark}{}
\makeevenfoot{aocstyle}{}{\hspace{2em}\thepage}{}
\makeoddfoot{aocstyle}{}{\thepage}{}
%%% END forksand-it-manual PAGE STYLE %%%
%%% forksand-it-manual SKI CHAPTER STYLE %%%
\makechapterstyle{aocski}{%
\renewcommand*{\printchaptername}{} % Clear out the chapter name (e.g. capítulo)
\renewcommand*{\printchapternum}{} % Clear out the chapter number
\renewcommand*{\chaptitlefont}{\fontspec{lmroman12-regular.otf}\fontsize{20pt}{3em}\selectfont} % Set chapter title font
\renewcommand*{\printchaptertitle}[1]{%
\hrule\vskip\onelineskip \centering \chaptitlefont{##1}\par}
% Set chapter title font
\renewcommand*{\afterchaptertitle}{\vskip\onelineskip \hrule\vskip
\afterchapskip}
}
%%% END forksand-it-manual SKI CHAPTER STYLE %%%
%%% FORMATTING... %%%
\midsloppy
\setlength{\emergencystretch}{3em}
\tolerance=5000
\hyphenpenalty=500
\setlength{\topskip}{1.6\topskip}
\checkandfixthelayout
\raggedbottom
\widowpenalty=10000
\clubpenalty=10000
%%% END FORMATTING... %%%
%%% FOOTNOTES %%%
% no horizontal rule before footnotes:
\let\oldfootnoterule\footnoterule
\renewcommand*{\footnoterule}{}
\setlength{\footmarkwidth}{3.5em}
%%% END FOOTNOTES %%%
%%% COLORS %%%
\definecolor{ao-purple}{cmyk}{0.50,0.60,0.00,0.43}
\definecolor{ao-fork}{cmyk}{1.00 0.00 0.00 0.80}
\definecolor{ao-dark-blue}{cmyk}{0.83 0.24 0.00 0.12}
\definecolor{ao-light-blue}{cmyk}{0.41 0.15 0.00 0.09}
\definecolor{ao-light-orange}{cmyk}{0.00 0.40 0.88 0.03}
\definecolor{ao-dark-orange}{cmyk}{0.00 0.51 0.83 0.11}
\definecolor{ao-gold}{cmyk}{0.00 0.18 0.75 0.00}
\definecolor{ao-greyblack}{cmyk}{0.00 0.11 0.09 0.86}
\definecolor{ao-white}{cmyk}{0.00 0.00 0.00 0.00}
\definecolor{ao-black}{cmyk}{1.00 1.00 1.00 1.00}
\definecolor{lulzbot-green}{cmyk}{0.11 0.00 0.78 0.15}
\definecolor{secondary-dark-brown}{cmyk}{0.00 0.38 0.74 0.48}
\definecolor{secondary-brown}{cmyk}{0.00 0.07 0.20 0.05}
\definecolor{primary-blue}{cmyk}{0.37 0.04 0.00 0.00}
\definecolor{primary-brown}{cmyk}{0.00 0.28 0.68 0.31}
\definecolor{nonbrand-dark-blue}{cmyk}{0.83 0.28 0.00 0.57}
%%% END COLORS %%%
%%% DEBUG %%%
%\showoutput
%\typeoutlayout
%\typeoutstandardlayout
%%% END DEBUG %%%
\newglossaryentry{cluster}{
name={Cluster},plural={Clusters},
description={, computer cluster is a set of loosely or
tightly connected computers that work together so that, in
many respects, they can be viewed as a single system.}}
\newglossaryentry{dedicatedserver}{
name={Dedicated Server},plural={Dedicated Servers},
description={, or managed hosting service
is a type of Internet hosting in which the client leases
an entire server not shared with anyone else.}}
\newglossaryentry{sharkfork}{
name={SharkFork},
description={is a SharkTech provided Colocation for a
Cluster with Fork Sand Colocation Cabinet}}
\newglossaryentry{colocation}{
name={Colocation},plural={Colocations},
description={ centre (also spelled co-location, or colo) or "carrier
hotel", is a type of data centre where equipment, space,
and bandwidth are available for rental to retail customers.}}
\newglossaryentry{cabinet}{
name={Cabinet},plural={Cabinets},
description={, inside a data center, is a locking unit
that holds a server rack.}}
\newglossaryentry{backbone}{
name={Backbone},plural={Backbones},
description={ is a part of computer network that interconnects
various pieces of network, providing a path for the exchange
of information between different LANs or subnetworks.}}
\newglossaryentry{corosynk}{
name={Corosynk},
description={ is what Proxmox uses to keep the cluster nodes in sync.
It is used for clustering besides proxmox too:
\url{https://en.wikipedia.org/wiki/Corosync_Cluster_Engine}.
Proxmox recommends applying two Corosynk instances if available.
And also a third one for migrating from host to host.
}}
\newglossaryentry{migration}{
name={Migration},
description={ see Corosynk description for details}}
\newglossaryentry{gnulinux}{
name={GNU/Linux},
description={ is a term promoted by the Free Software Foundation
(FSF) and its founder Richard Stallman. Proponents call for
the correction of the more extended term, on the grounds that it
doesn't give credit to the major contributor and the associated
free software philosophy.}}
\newglossaryentry{firewall}{
name={Firewall},plural={Firewalls},
description={ (in computing) is a network security system
that monitors and controls incoming and outgoing network traffic
based on predetermined security rules. A firewall typically
establishes a barrier between a trusted internal network and
untrusted external network, such as the Internet.}}
\newglossaryentry{coreboot}{
name={Coreboot},
description={, formerly known as LinuxBIOS, is a software
project aimed at replacing proprietary firmware (BIOS or UEFI)
found in most computers with a lightweight firmware designed to
perform only the minimum number of tasks necessary to load and
run a modern 32-bit or 64-bit operating system.}}
\newglossaryentry{ipmi}{
name={IPMI},
description={, the Intelligent Platform Management Interface
(IPMI) is a set of computer interface specifications for an
autonomous computer subsystem that provides management and
monitoring capabilities independently of the host system's CPU,
firmware (BIOS or UEFI) and operating system. IPMI defines a set
of interfaces used by system administrators for out-of-band
management of computer systems and monitoring of their operation.
For example, IPMI provides a way to manage a computer that may
be powered off or otherwise unresponsive by using a network
connection to the hardware rather than to an operating system
or login shell.}}
\newglossaryentry{openbmc}{
name={OpenBMC},
description={ project is a Linux Foundation Collaborative
open-source project whose goal is to produce an open source
implementation of the Baseboard Management Controllers (BMC)
Firmware Stack. OpenBMC is a Linux distribution for
BMCs meant to work across heterogeneous systems that include
enterprise, High-performance computing (HPC),
Telecommunications, and cloud-scale data centers.}}
\newglossaryentry{tor}{
name={Tor},
description={ is free software for enabling anonymous
communication. The name is derived from an acronym for the
original software project name "The Onion Router". Tor
directs Internet traffic through a free, worldwide,
volunteer overlay network consisting of thousands of relays
to conceal a user's location and usage from anyone
conducting network surveillance or traffic analysis.}}
\newglossaryentry{kvm}{
name={KVM}, plural={KVMs},
description={, the Kernel-based Virtual Machine is a
virtualization infrastructure for the Linux kernel that
turns it into a hypervisor. It was merged into the Linux
kernel mainline in kernel version 2.6.20, which was
released on February 5, 2007. KVM requires a processor
with hardware virtualization extensions. KVM has also been
ported to FreeBSD and illumos in the form of loadable
kernel modules.}}
\newglossaryentry{ddos}{
name={DDoS},
description={, a distributed denial-of-service (DDoS) is a
large-scale DoS attack where the perpetrator uses more than
one unique IP address, often thousands of them. Since
the incoming traffic flooding the victim originates from
many different sources, it is impossible to stop the attack
simply by using ingress filtering. It also makes it very
difficult to distinguish legitimate user traffic from
attack traffic when spread across so many points of origin.
As an alternative or augmentation of a DDoS, attacks may
involve forging of IP sender addresses (IP address spoofing)
further complicating identifying and defeating the attack.}}
\newglossaryentry{ceph}{
name={Ceph},
description={ is a free-software storage platform,
implements object storage on a single distributed computer
cluster, and provides interfaces for object-, block- and
file-level storage. Ceph aims primarily for completely
distributed operation without a single point of failure,
scalable to the exabyte level, and freely available.}}
\newglossaryentry{docker}{
name={Docker}, plural={Dockers},
description={ is a program that performs operating-system-level
virtualization also known as containerization. It is
developed by Docker, Inc. Docker is primarily developed for
Linux, where it uses the resource isolation features of the
Linux kernel such as cgroups and kernel namespaces, and a
union-capable file system such as OverlayFS and others to
allow independent "containers" to run within a single Linux
instance, avoiding the overhead of starting and maintaining
virtual machines (VMs).}}
%%% END OF PREAMBLE %%%
\begin{document}
%%% Global pdf include directives
\includepdfset{pages=-,noautoscale}
%%% BEGIN FRONT MATTER %%%
\frontmatter
% Set page numbers to lowercase roman numerals, and reset the count to 1 (no *)
\pagenumbering{roman}
%%% TITLE PAGE %%%
% We want the title to be on the right hand page.
% If we pad a page, it gives us two with openright
\include{Title}
%%% END TITLE PAGE
%%% COPYRIGHT PAGE %%%
\include{Copyright}
%%% END COPYRIGHT PAGE %%%
% Set page numbering to arabic, but don't reset numbering (*)
\pagenumbering*{arabic}
%%% TABLE OF CONTENTS %%%
{
\fontspec{lmroman12-regular.otf}[
BoldFont = lmroman12-regular.otf
]
\maxtocdepth{subsection}
\settocdepth{subsection}
%\setsecnumdepth{subsection}
% space between dots
\renewcommand{\cftchapterdotsep}{15}
% dot symbol (default is period)
\renewcommand{\cftdot}{\textperiodcentered} % centered period
% Set space between each entry in ToC
\setlength{\cftbeforechapterskip}{5pt}
\tableofcontents*}
%%% END TABLE OF CONTENTS %%%
%%% LIST OF FIGURES %%%
\renewcommand*{\lofheadstart}{\vspace{1cm}}
\clearpage
\listoffigures*
%%% END LIST OF FIGURES %%%
%%% LIST OF LISTINGS %%%
%\renewcommand*{\lofheadstart}{\vspace{1cm}}
%\clearpage
%\listoflistings
%%% END LIST OF LISTINGS %%%
%%% CHAPTER STYLE %%%
\chapterstyle{aocski} % defined in preamble
\def\topblockvspace{0.11}
%%% END CHAPTER STYLE %%%
%%% INVISIBLE CHAPTERS %%%
\newcommand{\invisiblechapter}[1]{%
\par\refstepcounter{chapter}% Increase section counter
\sectionmark{#1}% Add section mark (header)
\addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}% Add chapter to ToC
% Add more content here, if needed.
}
%%% END INVISIBLE CHAPTERS %%%
%%% CHAPTER CONFIG %%%
\newcommand{\chapterheader}{Fork Sand IT Manual}
% See \chapterconf below for examples of how this is used.
% value 1 is file to include
% value 2 is title of chapter
% value 3 is sub title of chapter
\newcommand{\chapterconf}[3]{
\includepdf[width=210mm%
,%
picturecommand*={%
\put(200,650){%
\invisiblechapter{{#2}\qquad\qquad{#3}}%
}%
\color[rgb]{0.631,0.957,1}% HEX # A1F4FF R:161 G:244 B:255 C:37 M:4 Y:0 K:0
\linethickness{30mm}
\put( 100,378){\line(1,0){397.50793}}
\color[rgb]{0.361,0.922,1}% HEX # 5CEBFF R:92 G:235 B:255 C:64 M:8 Y:0 K:0
\put( 0,378){\line(1,0){100}}
\put( 497.50793,378){\line(1,0){100}}
\color[rgb]{0,0.2,0.2}
\linethickness{0.3mm}
\put( 0,420){\line(1,0){597.50793}}
\put( 0,336){\line(1,0){597.50793}}
\put(120,395){\begin{minipage}{357.50793pt}\centering \Huge{#2}\end{minipage}}
\put(120,355){\begin{minipage}{357.50793pt}\centering \Huge{#3}\end{minipage}}
\color[rgb]{0,0,0}
}%
]{LetterheadPDF.pdf}
\thispagestyle{empty}
\markboth{#2}{\chapterheader}
{\include{#1}}
}
%%% END CHAPTER CONFIG %%%
%%% FRONTMATTER CHAPTERS %%%
% Format:
% \chapterconf{Name of file to include}{Title of Chapter}
\chapterconf{Introduction}{Introduction}{Fork Sand IT Manual}
%%% END FRONTMATTER CHAPTERS %%%
%%% END FRONTMATTER %%%
%%% BEGIN MAINMATTER %%%
\mainmatter*
%% MAINMATTER CHAPTERS %%%
% Default chapter font
% Format:
% \chapterconf{Name of file to include}{Title of Chapter}{Subtitle}
% Comment out a line to not render that chapter
\chapterconf{Hardware}{Hardware}{Metal and Chips}
\chapterconf{Network}{Network}{Switch}
\chapterconf{Switches}{Network Switches}{Free Switches (none found)}
\chapterconf{Clouds}{Clouds}{Software as a Surveillance State}
\chapterconf{Distros}{Distributions}{Free Software Distributions}
\chapterconf{Software-daemons}{Server Software}{Server Software Daemons}
\chapterconf{Firewalls}{Firewalls}{Firewalls}
\chapterconf{Firewall-opnsense}{OPNSense Firewall}{Use OPNSense}
\chapterconf{Proxmox}{Proxmox}{Virtual Machines}
\chapterconf{Ansible}{Ansible}{Cluster Administration}
\chapterconf{DNS}{Domain Name Service (DNS)}{Who Names You?}
\chapterconf{NTP}{Network Time Protocol}{A Hole in Time}
\chapterconf{Firmware}{Firmware}{Embedded Software}
\chapterconf{History}{History}{Evolution History}
%%% Appendix %%%
%\part{Appendix} % XXX
\appendix
\chapterconf{Source}{Free Software}{Free Software and Configurations}
%% END MAINMATTER CHAPTERS %%%
%%% END MAINMATTER %%%
%%% BEGIN BACKMATTER %%%
\backmatter
%%% INDEX %%%
\clearpage
\printindex
%%% END INDEX %%%
%%% GLOSSARY %%%
\renewcommand{\memgloterm}[1]{\textbf{#1}}
\renewcommand{\memglodesc}[1]{\textit{#1}}
\renewcommand{\memglonum}[1]{}
\clearpage
%\addcontentsline{toc}{chapter}{Glossary}
\printglossaries
%%% END GLOSSARY %%%
%%% CONTACT %%%
\chapterconf{Contact}{Contact}{Phone, Email, Web, Location}
%%% END CONTACT %%%
%%% COLOPHON %%%
%%% skip a couple pages
\pagebreak{}
\thispagestyle{empty}
\begingroup
\vfill\null
\endgroup
\pagebreak{}
\thispagestyle{empty}
{\include{Colophon}}
%%% END COLOPHON %%%
%%% END BACKMATTER %%%
\end{document}