From d0caae87f6bb15a1c95b8358872dc9c6d091e439 Mon Sep 17 00:00:00 2001 From: Linreigns Date: Sun, 20 May 2018 01:31:35 +0300 Subject: [PATCH] Colophon branded, lmroman12 font issues fixed, cleaned up deprecated nodes, Cluster Evolution moved to another chapter, cleaned up binary apps files, minor fixes --- source/Colophon.tex | 42 +- source/Copyright.tex | 2 +- source/Hardware.tex | 169 ++++---- source/History.tex | 62 +++ source/Software-daemons.tex | 6 +- source/Source-gen.tex | 26 +- source/forksand-it-manual.tex | 29 +- source/lmroman12-bold.otf | Bin 0 -> 110496 bytes source/lmroman12-italic.otf | Bin 0 -> 117732 bytes source/resources/SHA256SUM | 10 +- source/resources/STATS | 4 +- .../forksand-hk1-bootstrap | 329 --------------- .../forksand-hk2-bootstrap | 329 --------------- .../forksand-hk3-bootstrap | 329 --------------- .../forksand-the-bootstrap | 375 ----------------- .../forksand-truck-bootstrap | 393 ------------------ .../apps/sunstone/etc/one/sunstone-logos.yaml | 11 - .../apps/sunstone/etc/one/sunstone-views.yaml | 18 - source/resources/make-sources-list.sh | 2 +- 19 files changed, 200 insertions(+), 1936 deletions(-) create mode 100644 source/History.tex create mode 100644 source/lmroman12-bold.otf create mode 100644 source/lmroman12-italic.otf delete mode 100644 source/resources/apps/forksand-nodes-bootstrap/forksand-hk1-bootstrap delete mode 100644 source/resources/apps/forksand-nodes-bootstrap/forksand-hk2-bootstrap delete mode 100644 source/resources/apps/forksand-nodes-bootstrap/forksand-hk3-bootstrap delete mode 100644 source/resources/apps/forksand-nodes-bootstrap/forksand-the-bootstrap delete mode 100644 source/resources/apps/forksand-nodes-bootstrap/forksand-truck-bootstrap delete mode 100644 source/resources/apps/sunstone/etc/one/sunstone-logos.yaml delete mode 100644 source/resources/apps/sunstone/etc/one/sunstone-views.yaml diff --git a/source/Colophon.tex b/source/Colophon.tex index baf7ddc..b3ab295 100644 --- a/source/Colophon.tex +++ b/source/Colophon.tex @@ -14,20 +14,34 @@ % %%% COLOPHON %%% -\begin{vplace} -\centering -\emph{\LARGE Colophon} +\includepdf[width=210mm,% + picturecommand*={% + \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,435){\begin{minipage}{357.50793pt}\centering + \emph{\LARGE Colophon} + \end{minipage}} + \put(120,395){\begin{minipage}{357.50793pt}\centering + {\tiny Created with 100\% Free Software} + \end{minipage}} + \put(120,382){\begin{minipage}{357.50793pt}\centering + Debian GNU/Linux + \end{minipage}} + \put(120,370){\begin{minipage}{357.50793pt}\centering + {\LaTeX} Memoir + \end{minipage}} + \color[rgb]{0,0,0} + }% + ]{LetterheadPDF.pdf} +\thispagestyle{empty} -\rule{0.5\textwidth}{0.4pt}\\[\baselineskip] - -{\tiny Created with 100\% Free Software} - -Debian GNU/Linux - -{\LaTeX} Memoir - -\rule{0\textwidth}{0pt}\\[\baselineskip]% -\rule{0.5\textwidth}{0.4pt}\\[\baselineskip] -\end{vplace} %%% END COLOPHON %%% diff --git a/source/Copyright.tex b/source/Copyright.tex index f19853c..2197c28 100644 --- a/source/Copyright.tex +++ b/source/Copyright.tex @@ -15,7 +15,7 @@ % This document is licensed under the Creative Commons Attribution 4.0 % International Public License (CC BY-SA 4.0) by Fork Sand, Inc. % -\fontspec{lmroman12-regular.otf} +%\fontspec{lmroman12-regular.otf} \clearpage\null\vfill \begingroup diff --git a/source/Hardware.tex b/source/Hardware.tex index 9f0095b..de2e6ee 100644 --- a/source/Hardware.tex +++ b/source/Hardware.tex @@ -12,53 +12,18 @@ % \section{Hardware} -\subsection{Cluster Evolution} -Forksand started deployment on dedicated servers. - \vspace{0.6cm} - First stage. Exclusively dedicated servers (deprecated) - \vspace{0.4cm} -\centering -\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] - {sharkfork-cabling-1-dedicated-vlan.pdf} \\ % -% - \vspace{0.2cm} -\raggedright - Second stage. Dedicated servers along with a colocation - cabinet. Flat hierarchy. (deprecated) - - \vspace{0.1cm} - In progress, services were being migrated one after another to - a colocation instance. On the next stage hierarchy becomes vertical. \\ - \vspace{0.1cm} -\centering -\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] - {sharkfork-cabling-2-mixed-vlan.pdf} \\ % -% +\section{Cluster Diagram} \raggedright - Third stage. Dedicated servers buffered by - a colocation cabinet. Vertical hierarchy. (deprecated) \vspace{0.4cm} -\centering -\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] - {sharkfork-cabling-3-colo-dedicated.pdf} \\ % -% - \vspace{0.2cm} -\raggedright - Fourth stage. Dedicated servers discarded. - Colocation cabinet buffered only with a firewall. (current) + Dedicated servers discarded. + + Colocation cabinet buffered only with a firewall. + \vspace{0.4cm} \centering -\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] +\includegraphics[width=210mm,trim=20mm 20mm 20mm 20mm] {sharkfork-cabling-4-final-colocation.pdf} \\ % -% \vspace{0.2cm} -\raggedright - Final stage. Firewall discarded. Single colocation cabinet. (in process) - \vspace{0.4cm} -\centering -%\includegraphics[width=115mm,trim=10mm 10mm 10mm 10mm] - %{sharkfork-cabling-4-single-colocation.pdf} \\ % -% \raggedright \newpage @@ -370,41 +335,66 @@ Who we'll get hardware from. %\includescreen{shark2/03.png}{Logged in to admin-webview. Notification of no valid subscription}{} %\includescreen{shark2/04.png}{Browse Datacenter, log hidden}{\label{fig:shark2browsedatacenter}} %\includescreen{shark2/05.png}{Browse shark2 Node}{\label{fig:shark2browsenode}} +%\newpage \includescreen{shark2/06.png}{Browse shark2 Network}{\label{fig:shark2network}} %\includescreen{shark2/07.png}{Select first shark2 Network device}{} +\newpage \includescreen{shark2/08.png}{Edit first shark2 Network device}{} +%\newpage \includescreen{shark2/09.png}{Cleanup first shark2 Network device}{\label{fig:shark2cleanupnetdevice1}} +\newpage \includescreen{shark2/10.png}{Browse shark2 Network}{} \includescreen{shark2/11.png}{Create shark2 Linux Bridge}{\label{fig:shark2linuxbridge}} %\includescreen{shark2/12.png}{Create shark2 Linux Bridge}{} +\newpage \includescreen{shark2/13.png}{Create shark2 Linux Bridge}{} + +{{\grenewcommand{\currentColor}{primary-blue}}} +{{\grenewcommand{\currentTextColor}{ao-black}}} +\providecommand{\sharkIPConfigItem}[4]{ + \rowcolor{\currentColor} \vspace{-1pt} + \rule[-0.3em]{0pt}{-0.5em} \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#1}} & \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#2}} & \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#3}} & \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#4}} \\ +} +\providecommand{\sharkIPConfigLastItem}[4]{ + \rowcolor{\currentColor} \vspace{-1pt} + \rule[-1.0em]{0pt}{1em} \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#1}} & \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#2}} & \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#3}} & \vspace{-1pt} + \small{\textcolor{\currentTextColor}{#4}} \\ + \tabucline[2pt]{1-4} +} +\providecommand{\SIPCCwidth}{3.5cm} \begin{table}[!htb] \caption{IP configs of nodes} \label{tab:sharkNodeIPConfig} - \begin{tabular}{|l|l|l|l|} - \hline - \multicolumn {1}{|l|}{ Parameter}& - \multicolumn {1}{l|}{ Shark2}& - \multicolumn {1}{l|}{ Shark3}& - \multicolumn {1}{l|}{ Shark4} \\ \hline - Linux bridge & & & \\ %\hline - Name & vmbr0 & vmbr0 & vmbr0 \\ %\hline - IP address & 174.128.229.130 & 70.39.103.218 & 70.39.103.210 \\ %\hline - Subnet mask & 255.255.255.224 & 255.255.255.248 & 255.255.255.248 \\ %\hline - Gateway & 174.128.229.129 & 70.39.103.217 & 70.39.103.209 \\ %\hline - Bridge ports & enp2s0 & enp3s0 & enp3s0 \\ \hline - - Network Device & & & \\ %\hline - Name & enp3s0 & enp4s0 & enp4s0 \\ %\hline - IP address & 10.2.2.2 & 10.2.2.3 & 10.2.2.4 \\ %\hline - Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline - - Network Device & & & \\ %\hline - Name & enp4s0 & enp5s0 & enp5s0 \\ %\hline - IP address & 10.99.99.2 & 10.99.99.3 & 10.99.99.4 \\ %\hline - Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline - - \end{tabular} + \begin{tabu}{|[2pt]p{\SIPCCwidth}|[2pt]p{\SIPCCwidth}|p{\SIPCCwidth}|p{\SIPCCwidth}|[2pt]} + \tabucline[2pt]{1-4} + \multicolumn {1}{|[2pt]l|[2pt]}{\rule[-0.7em]{0pt}{2em} \cellcolor{\currentColor}{Parameter}}& + \multicolumn {1}{l|}{\cellcolor{primary-brown} {Shark2}}& + \multicolumn {1}{l|}{\cellcolor{primary-brown} {Shark3}}& + \multicolumn {1}{l|[2pt]}{\cellcolor{primary-brown} {Shark4}} \\ + \tabucline[2pt]{1-4} + \sharkIPConfigItem { Linux bridge }{}{}{} + \sharkIPConfigItem { Name }{ vmbr0 }{ vmbr0 }{ vmbr0 } + \sharkIPConfigItem { IP address }{ 174.128.229.130 }{ 70.39.103.218 }{ 70.39.103.210 } + \sharkIPConfigItem { Subnet mask }{ 255.255.255.224 }{ 255.255.255.248 }{ 255.255.255.248 } + \sharkIPConfigItem { Gateway }{ 174.128.229.129 }{ 70.39.103.217 }{ 70.39.103.209 } + \sharkIPConfigLastItem{ Bridge ports }{ enp2s0 }{ enp3s0 }{ enp3s0 } + \sharkIPConfigItem { Network Device }{}{}{} + \sharkIPConfigItem { Name }{ enp3s0 }{ enp4s0 }{ enp4s0 } + \sharkIPConfigItem { IP address }{ 10.2.2.2 }{ 10.2.2.3 }{ 10.2.2.4 } + \sharkIPConfigLastItem{ Subnet mask }{ 255.255.255.0 }{ 255.255.255.0 }{ 255.255.255.0 } + \sharkIPConfigItem { Network Device }{}{}{} + \sharkIPConfigItem { Name }{ enp4s0 }{ enp5s0 }{ enp5s0 } + \sharkIPConfigItem { IP address }{ 10.99.99.2 }{ 10.99.99.3 }{ 10.99.99.4 } + \sharkIPConfigLastItem{ Subnet mask }{ 255.255.255.0 }{ 255.255.255.0 }{ 255.255.255.0 } + \end{tabu} \end{table} +\newpage \includescreen{shark2/14.png}{Browse shark2 Network}{} %\includescreen{shark2/15.png}{Select second shark2 Network device}{} %\includescreen{shark2/16.png}{Edit second shark2 Network device}{} @@ -412,34 +402,35 @@ Who we'll get hardware from. %\includescreen{shark2/18.png}{Browse shark2 Network}{} %\includescreen{shark2/19.png}{Select third shark2 Network device}{} %\includescreen{shark2/20.png}{Edit third shark2 Network device}{} +\newpage \includescreen{shark2/21.png}{Edit third on the list shark2 Network device}{} + \begin{table}[!htb] \caption{IP configs of nodes, duplicate of table \ref{tab:sharkNodeIPConfig}} % \label{tab:sharkLinuxBridge} - \begin{tabular}{|l|l|l|l|} - \hline - \multicolumn {1}{|l|}{ Parameter}& - \multicolumn {1}{l|}{ Shark2}& - \multicolumn {1}{l|}{ Shark3}& - \multicolumn {1}{l|}{ Shark4} \\ \hline - Linux bridge & & & \\ %\hline - Name & vmbr0 & vmbr0 & vmbr0 \\ %\hline - IP address & 174.128.229.130 & 70.39.103.218 & 70.39.103.210 \\ %\hline - Subnet mask & 255.255.255.224 & 255.255.255.248 & 255.255.255.248 \\ %\hline - Gateway & 174.128.229.129 & 70.39.103.217 & 70.39.103.209 \\ %\hline - Bridge ports & enp2s0 & enp3s0 & enp3s0 \\ \hline - - Network Device & & & \\ %\hline - Name & enp3s0 & enp4s0 & enp4s0 \\ %\hline - IP address & 10.2.2.2 & 10.2.2.3 & 10.2.2.4 \\ %\hline - Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline - - Network Device & & & \\ %\hline - Name & enp4s0 & enp5s0 & enp5s0 \\ %\hline - IP address & 10.99.99.2 & 10.99.99.3 & 10.99.99.4 \\ %\hline - Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline - - \end{tabular} + \begin{tabu}{|[2pt]p{\SIPCCwidth}|[2pt]p{\SIPCCwidth}|p{\SIPCCwidth}|p{\SIPCCwidth}|[2pt]} + \tabucline[2pt]{1-4} + \multicolumn {1}{|[2pt]l|[2pt]}{\rule[-0.7em]{0pt}{2em} \cellcolor{\currentColor}{Parameter}}& + \multicolumn {1}{l|}{\cellcolor{primary-brown} {Shark2}}& + \multicolumn {1}{l|}{\cellcolor{primary-brown} {Shark3}}& + \multicolumn {1}{l|[2pt]}{\cellcolor{primary-brown} {Shark4}} \\ + \tabucline[2pt]{1-4} + \sharkIPConfigItem { Linux bridge }{}{}{} + \sharkIPConfigItem { Name }{ vmbr0 }{ vmbr0 }{ vmbr0 } + \sharkIPConfigItem { IP address }{ 174.128.229.130 }{ 70.39.103.218 }{ 70.39.103.210 } + \sharkIPConfigItem { Subnet mask }{ 255.255.255.224 }{ 255.255.255.248 }{ 255.255.255.248 } + \sharkIPConfigItem { Gateway }{ 174.128.229.129 }{ 70.39.103.217 }{ 70.39.103.209 } + \sharkIPConfigLastItem{ Bridge ports }{ enp2s0 }{ enp3s0 }{ enp3s0 } + \sharkIPConfigItem { Network Device }{}{}{} + \sharkIPConfigItem { Name }{ enp3s0 }{ enp4s0 }{ enp4s0 } + \sharkIPConfigItem { IP address }{ 10.2.2.2 }{ 10.2.2.3 }{ 10.2.2.4 } + \sharkIPConfigLastItem{ Subnet mask }{ 255.255.255.0 }{ 255.255.255.0 }{ 255.255.255.0 } + \sharkIPConfigItem { Network Device }{}{}{} + \sharkIPConfigItem { Name }{ enp4s0 }{ enp5s0 }{ enp5s0 } + \sharkIPConfigItem { IP address }{ 10.99.99.2 }{ 10.99.99.3 }{ 10.99.99.4 } + \sharkIPConfigLastItem{ Subnet mask }{ 255.255.255.0 }{ 255.255.255.0 }{ 255.255.255.0 } + \end{tabu} \end{table} +\newpage \includescreen{shark2/22.png}{Browse shark2 Network}{} %\includescreen{shark2/23.png}{Browse shark2 node}{} \includescreen{shark2/24.png}{Restart shark2 node}{} diff --git a/source/History.tex b/source/History.tex new file mode 100644 index 0000000..ae1b238 --- /dev/null +++ b/source/History.tex @@ -0,0 +1,62 @@ +% +% History.tex +% +% Fork Sand IT Manual +% +% Copyright (C) 2018, Fork Sand, Inc. +% Copyright (C) 2017, Jeff Moe +% Copyright (C) 2017 Aleph Objects, Inc. +% +% This document is licensed under the Creative Commons Attribution 4.0 +% International Public License (CC BY-SA 4.0) by Fork Sand, Inc. +% +\section{History} + +\subsection{Cluster Evolution} +Forksand started deployment on dedicated servers. + \vspace{0.6cm} + First stage. Exclusively dedicated servers (deprecated) + \vspace{0.4cm} +\centering +\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] + {sharkfork-cabling-1-dedicated-vlan.pdf} \\ % +% + \vspace{0.2cm} +\raggedright + Second stage. Dedicated servers along with a colocation + cabinet. Flat hierarchy. (deprecated) + + \vspace{0.1cm} + In progress, services were being migrated one after another to + a colocation instance. On the next stage hierarchy becomes vertical. \\ + \vspace{0.1cm} +\centering +\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] + {sharkfork-cabling-2-mixed-vlan.pdf} \\ % +% +\raggedright + Third stage. Dedicated servers buffered by + a colocation cabinet. Vertical hierarchy. (deprecated) + \vspace{0.4cm} +\centering +\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] + {sharkfork-cabling-3-colo-dedicated.pdf} \\ % +% + \vspace{0.2cm} +\raggedright + Fourth stage. Dedicated servers discarded. + Colocation cabinet buffered only with a firewall. (current) + \vspace{0.4cm} +\centering +\includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] + {sharkfork-cabling-4-final-colocation.pdf} \\ % +% + \vspace{0.2cm} +\raggedright + Final stage. Firewall discarded. Single colocation cabinet. (in process) + \vspace{0.4cm} +\centering +%\includegraphics[width=115mm,trim=10mm 10mm 10mm 10mm] + %{sharkfork-cabling-4-single-colocation.pdf} \\ % +% +\raggedright diff --git a/source/Software-daemons.tex b/source/Software-daemons.tex index 0a0610a..e499cde 100644 --- a/source/Software-daemons.tex +++ b/source/Software-daemons.tex @@ -208,11 +208,9 @@ address 5.152.179.226 netmask 255.255.255.0 gateway 5.152.179.1 \end{minted} +\subsection{Install Firewall}\label{ssec:nextcloudfirewall} +\url{https://wiki.debian.org/iptables} \begin{minted}{sh} -# Install Firewall -# ============= -# https://wiki.debian.org/iptables - #Create /etc/iptables.up.rules and /etc/network/if-pre-up.d/iptables touch /etc/iptables.up.rules /etc/network/if-pre-up.d/iptables /etc/iptables.test.rules diff --git a/source/Source-gen.tex b/source/Source-gen.tex index 09b296c..304119e 100644 --- a/source/Source-gen.tex +++ b/source/Source-gen.tex @@ -2,7 +2,7 @@ \texttt{SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855} \inputminted{sh}{resources/SHA256SUM} \section{\texttt{STATS}} -\texttt{SHA256: adadaa5e46ade71aa99d833d7cf64cf012501c8b7a6f6c15a3563f6ceeffa9c6} +\texttt{SHA256: b5fd0d24673c05a70026ca4db2576a80f8e8b4740e4558f29c63194a4ae58829} \inputminted{sh}{resources/STATS} \section{\texttt{apps/ansible-debian-mail/ansible.cfg}} \texttt{SHA256: 5c5bbe341a18319f6f24033c4f63fc5f1594469b4f2cfbb991ec596fd30e9a3b} @@ -148,9 +148,6 @@ \section{\texttt{apps/ansible-gitea/roles/gitea/templates/gitea.service.j2}} \texttt{SHA256: 0acbfe01156c9e39ee71a4fc64310ab003f09bfcf544df00b1f3cff010ed8f38} \inputminted{sh}{resources/apps/ansible-gitea/roles/gitea/templates/gitea.service.j2} -\section{\texttt{apps/ansible-gitea/roles/gitea/.DS\char`_Store}} -\texttt{SHA256: e97bff48aa282aacf1c59c754a7b9adfe56120c4cb1545a7488f03fee9f4e479} -\inputminted{sh}{resources/apps/ansible-gitea/roles/gitea/.DS_Store} \section{\texttt{apps/ansible-gitea/roles/nginx/defaults/main.yml}} \texttt{SHA256: 20c921226115e5a92309d543b66066438e6565bdbd054e7ca41d0fc6ddcfcd9a} \inputminted{sh}{resources/apps/ansible-gitea/roles/nginx/defaults/main.yml} @@ -169,24 +166,9 @@ \section{\texttt{apps/ansible-gitea/site.yml}} \texttt{SHA256: d74378b00af74eabe0cc11d0f0b1db5c902116c583216f14152d968e5a71e474} \inputminted{sh}{resources/apps/ansible-gitea/site.yml} -\section{\texttt{apps/forksand-nodes-bootstrap/forksand-hk1-bootstrap}} -\texttt{SHA256: d3b370cdf087289f89c827aefaf1915c35843f01f9f2d8bbeb412184b2ce2fa6} -\inputminted{sh}{resources/apps/forksand-nodes-bootstrap/forksand-hk1-bootstrap} -\section{\texttt{apps/forksand-nodes-bootstrap/forksand-hk2-bootstrap}} -\texttt{SHA256: d62d8c5f8269253f07bdd01abaf0653797627477827163625c9d2e3d207e27c8} -\inputminted{sh}{resources/apps/forksand-nodes-bootstrap/forksand-hk2-bootstrap} -\section{\texttt{apps/forksand-nodes-bootstrap/forksand-hk3-bootstrap}} -\texttt{SHA256: 7d56b22aec7e53798e88d4a03d7e390393899e1a33e03da864c817bea83c86c8} -\inputminted{sh}{resources/apps/forksand-nodes-bootstrap/forksand-hk3-bootstrap} \section{\texttt{apps/forksand-nodes-bootstrap/forksand-shark4-bootstrap}} \texttt{SHA256: 04a5efbe9a3809ac7050b727eb1d9b8f755b68dc44c990f71866422ff9bc5b15} \inputminted{sh}{resources/apps/forksand-nodes-bootstrap/forksand-shark4-bootstrap} -\section{\texttt{apps/forksand-nodes-bootstrap/forksand-the-bootstrap}} -\texttt{SHA256: cb61199026a4850f6beb9e3a2b9abcadd7f3d15c894c01060aadcc83bde25c96} -\inputminted{sh}{resources/apps/forksand-nodes-bootstrap/forksand-the-bootstrap} -\section{\texttt{apps/forksand-nodes-bootstrap/forksand-truck-bootstrap}} -\texttt{SHA256: 0691270004a884d962e82f61bbce6ffd094653d7419b081099a9f180d456719a} -\inputminted{sh}{resources/apps/forksand-nodes-bootstrap/forksand-truck-bootstrap} \section{\texttt{apps/iptables/etc/iptables}} \texttt{SHA256: 825577f3fd900576c119d0a6191de16bf2d55fb84e6749921710b293e5fd1889} \inputminted{sh}{resources/apps/iptables/etc/iptables} @@ -232,12 +214,6 @@ \section{\texttt{apps/ssh/socks-proxy.sh}} \texttt{SHA256: 646c3cdef108cf891d9d5279971f3da8a708d78b9cb18da832043ba3048cfacf} \inputminted{sh}{resources/apps/ssh/socks-proxy.sh} -\section{\texttt{apps/sunstone/etc/one/sunstone-logos.yaml}} -\texttt{SHA256: b318da9ebbe0bc3b5b80efda6c8594b2017736d8e32d3ff74aaefb727cf1fb0e} -\inputminted{sh}{resources/apps/sunstone/etc/one/sunstone-logos.yaml} -\section{\texttt{apps/sunstone/etc/one/sunstone-views.yaml}} -\texttt{SHA256: 34f5df58f4f6fce5985378c946c8b9718567a1454f171e2629b33e37ce0ca87f} -\inputminted{sh}{resources/apps/sunstone/etc/one/sunstone-views.yaml} \section{\texttt{apps/yadifa-master/etc/yadifa/yadifad.conf}} \texttt{SHA256: 1802daa96fe2a7373059b86ae166f008591aad4304eb8176e1c20f56e61e7df8} \inputminted{sh}{resources/apps/yadifa-master/etc/yadifa/yadifad.conf} diff --git a/source/forksand-it-manual.tex b/source/forksand-it-manual.tex index 01b3005..18c1dfc 100644 --- a/source/forksand-it-manual.tex +++ b/source/forksand-it-manual.tex @@ -102,7 +102,21 @@ leftmargin=1cm,rightmargin=1cm % http://mirrors.ctan.org/macros/latex/contrib/fontspec/fontspec.pdf \usepackage{fontspec} \defaultfontfeatures{Ligatures=TeX} % To support LaTeX quoting style -\setmainfont{lmroman12-regular.otf} +\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 @@ -186,7 +200,7 @@ leftmargin=1cm,rightmargin=1cm \makeoddfoot{aocstyle}{}{\thepage}{} %%% END forksand-it-manual PAGE STYLE %%% -%%% forksand-it-manualSKI CHAPTER 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 @@ -197,7 +211,7 @@ leftmargin=1cm,rightmargin=1cm \renewcommand*{\afterchaptertitle}{\vskip\onelineskip \hrule\vskip \afterchapskip} } -%%% END forksand-it-manualSKI CHAPTER STYLE %%% +%%% END forksand-it-manual SKI CHAPTER STYLE %%% %%% FORMATTING... %%% \midsloppy @@ -265,7 +279,10 @@ leftmargin=1cm,rightmargin=1cm \pagenumbering*{arabic} %%% TABLE OF CONTENTS %%% -{\fontspec{lmroman12-regular.otf} +{ +\fontspec{lmroman12-regular.otf}[ + BoldFont = lmroman12-regular.otf +] \maxtocdepth{subsection} \settocdepth{subsection} %\setsecnumdepth{subsection} @@ -339,7 +356,6 @@ leftmargin=1cm,rightmargin=1cm %%% END CHAPTER CONFIG %%% %%% FRONTMATTER CHAPTERS %%% -\fontspec{lmroman12-regular.otf} % Format: % \chapterconf{Name of file to include}{Title of Chapter} @@ -353,7 +369,6 @@ leftmargin=1cm,rightmargin=1cm %% MAINMATTER CHAPTERS %%% % Default chapter font -\fontspec{lmroman12-regular.otf} % Format: % \chapterconf{Name of file to include}{Title of Chapter}{Subtitle} @@ -371,6 +386,7 @@ leftmargin=1cm,rightmargin=1cm \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 @@ -411,7 +427,6 @@ leftmargin=1cm,rightmargin=1cm \endgroup \pagebreak{} \thispagestyle{empty} -\fontspec{lmroman12-regular.otf} {\include{Colophon}} %%% END COLOPHON %%% diff --git a/source/lmroman12-bold.otf b/source/lmroman12-bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..c2eab2e47b87a07009f0c9891d7c7df7f1f81c97 GIT binary patch literal 110496 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 Q{eu0T{gLG*?Ij)l4{Jv8aR2}S literal 0 HcmV?d00001 diff --git a/source/lmroman12-italic.otf b/source/lmroman12-italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..87cc5b957ced2739a1865d9931bdee6e1b1184aa GIT binary patch literal 117732 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 HFvjc$o3Y~z literal 0 HcmV?d00001 diff --git a/source/resources/SHA256SUM b/source/resources/SHA256SUM index d2e040a..f6e8103 100644 --- a/source/resources/SHA256SUM +++ b/source/resources/SHA256SUM @@ -1,5 +1,5 @@ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./SHA256SUM -adadaa5e46ade71aa99d833d7cf64cf012501c8b7a6f6c15a3563f6ceeffa9c6 ./STATS +b5fd0d24673c05a70026ca4db2576a80f8e8b4740e4558f29c63194a4ae58829 ./STATS 5c5bbe341a18319f6f24033c4f63fc5f1594469b4f2cfbb991ec596fd30e9a3b ./apps/ansible-debian-mail/ansible.cfg b5f417e155b47834e49be9243ba776a6516c56c3ed0121d2bc4d022d5acacd87 ./apps/ansible-debian-mail/group_vars/all.yml cc816d03579097542ca85c188995a412d619c08c84bf3dfef73191fc5cc05b54 ./apps/ansible-debian-mail/inventory.yml @@ -48,19 +48,13 @@ cc816d03579097542ca85c188995a412d619c08c84bf3dfef73191fc5cc05b54 ./apps/ansible bc5f081dfd51f5c920c8dda1873560a2602204dd9d28a881238fd66e22437c2d ./apps/ansible-gitea/roles/gitea/tasks/main.yml c8be571f2f2407240bc88997aedf70c9230554a65132ebab9a1ee0d4296ff9d3 ./apps/ansible-gitea/roles/gitea/templates/gitea.ini.j2 0acbfe01156c9e39ee71a4fc64310ab003f09bfcf544df00b1f3cff010ed8f38 ./apps/ansible-gitea/roles/gitea/templates/gitea.service.j2 -e97bff48aa282aacf1c59c754a7b9adfe56120c4cb1545a7488f03fee9f4e479 ./apps/ansible-gitea/roles/gitea/.DS_Store 20c921226115e5a92309d543b66066438e6565bdbd054e7ca41d0fc6ddcfcd9a ./apps/ansible-gitea/roles/nginx/defaults/main.yml 5a3990dbfb331c83fbbff76368a2426ae03d34052454aa6676f52b7e4652d561 ./apps/ansible-gitea/roles/nginx/handlers/main.yml 5232d5b0894c1e6a3da8472591ef49e9c80e927cdbec626c15c9e1a9796729a8 ./apps/ansible-gitea/roles/nginx/tasks/main.yml 1ecb64716e6674eb30a145c79859774cc5772304828553474c05820a2151ff3b ./apps/ansible-gitea/roles/nginx/templates/nginx.conf.j2 4d7edebbe48f20aeeb49599d32fc5531db943cbf43d7e9995674c180b56f2e77 ./apps/ansible-gitea/roles/nginx/templates/nginxssl.conf.j2 d74378b00af74eabe0cc11d0f0b1db5c902116c583216f14152d968e5a71e474 ./apps/ansible-gitea/site.yml -d3b370cdf087289f89c827aefaf1915c35843f01f9f2d8bbeb412184b2ce2fa6 ./apps/forksand-nodes-bootstrap/forksand-hk1-bootstrap -d62d8c5f8269253f07bdd01abaf0653797627477827163625c9d2e3d207e27c8 ./apps/forksand-nodes-bootstrap/forksand-hk2-bootstrap -7d56b22aec7e53798e88d4a03d7e390393899e1a33e03da864c817bea83c86c8 ./apps/forksand-nodes-bootstrap/forksand-hk3-bootstrap 04a5efbe9a3809ac7050b727eb1d9b8f755b68dc44c990f71866422ff9bc5b15 ./apps/forksand-nodes-bootstrap/forksand-shark4-bootstrap -cb61199026a4850f6beb9e3a2b9abcadd7f3d15c894c01060aadcc83bde25c96 ./apps/forksand-nodes-bootstrap/forksand-the-bootstrap -0691270004a884d962e82f61bbce6ffd094653d7419b081099a9f180d456719a ./apps/forksand-nodes-bootstrap/forksand-truck-bootstrap 825577f3fd900576c119d0a6191de16bf2d55fb84e6749921710b293e5fd1889 ./apps/iptables/etc/iptables 4b50c760daa85619a74f1c635b26807fcc7f8bedb90bd22893de8c98f3d78ff1 ./apps/iptables/etc/iptables.test.rules acb247e6caa20a6e5cac57de3137a6bd561f810e4b92d2e32d31064e4e998720 ./apps/oca-forksand-v1_1/README.rst @@ -76,8 +70,6 @@ a149aa2a11f17a20eda8f32e2ef5b34e403b772d53f1dcd2a62bd44b166c2122 ./apps/oca/lib eec3af072498c00dd207f85d05de93ae81b4a0a6f4d31aa6b1dfb31af84eb07f ./apps/odoo/odoo11-deb-install.sh 8e0ee0af15f20e6a5120f9bca4b073532002f8d309dc365c64734b111c03ae4e ./apps/ssh/socks-chain.sh 646c3cdef108cf891d9d5279971f3da8a708d78b9cb18da832043ba3048cfacf ./apps/ssh/socks-proxy.sh -b318da9ebbe0bc3b5b80efda6c8594b2017736d8e32d3ff74aaefb727cf1fb0e ./apps/sunstone/etc/one/sunstone-logos.yaml -34f5df58f4f6fce5985378c946c8b9718567a1454f171e2629b33e37ce0ca87f ./apps/sunstone/etc/one/sunstone-views.yaml 1802daa96fe2a7373059b86ae166f008591aad4304eb8176e1c20f56e61e7df8 ./apps/yadifa-master/etc/yadifa/yadifad.conf e2c4028695f3ac6b6ed8afb963a7821589b94ed81a2d068d7480b809d402c830 ./apps/yadifa-master/var/lib/yadifa/masters/solipsists.org.zone 705f36a12aee30e8510e5d06f1d3dd471a82aa518e00648a83f8f9d1146b8186 ./apps/yadifa-slave/etc/yadifa/yadifad.conf diff --git a/source/resources/STATS b/source/resources/STATS index 8b52eb7..0f2c8af 100644 --- a/source/resources/STATS +++ b/source/resources/STATS @@ -1,2 +1,2 @@ -There are 86 source code files included. -There are 83 unique files. +There are 78 source code files included. +There are 75 unique files. diff --git a/source/resources/apps/forksand-nodes-bootstrap/forksand-hk1-bootstrap b/source/resources/apps/forksand-nodes-bootstrap/forksand-hk1-bootstrap deleted file mode 100644 index 7418ba0..0000000 --- a/source/resources/apps/forksand-nodes-bootstrap/forksand-hk1-bootstrap +++ /dev/null @@ -1,329 +0,0 @@ -#!/bin/bash -# forksand-bootstrap-hk1 -# GPLv3+ -# This script does some initial setup and config -# Sets up Proxmox. - -# Log script -exec > >(tee /root/bootstrap-hk1.log) 2>/root/bootstrap-hk1.err - -set -x - -# Set locale -echo "en_US.UTF-8 UTF-8" > /etc/locale.gen -locale-gen -update-locale - -# XXX Set timezone -ln -sf /usr/share/zoneinfo/America/Denver /etc/localtime - -# Set up git for tracking. XXX Ansible... XXX -apt-get -y install git sudo -cd /etc -git init -chmod og-rwx /etc/.git - -cat > /etc/.gitignore < /etc/apt/sources.list < /etc/default/cpufrequtils -/etc/init.d/cpufrequtils restart -cd /etc ; git add . ; git commit -a -m 'Set up cpufrequtils' - -# Small user tweaks -echo :syntax on > ~/.vimrc -echo :syntax on > /home/jebba/.vimrc -chown jebba:jebba /home/jebba/.vimrc -echo export EDITOR=vi >> /root/.bashrc - -# XXX Passwordless sudo XXX Ya, probably remove -sed -i -e 's/%sudo\tALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers - -adduser jebba sudo -cd /etc ; git add . ; git commit -a -m 'Set up passwordless sudo' - -# SSH config XXX sed cruft -sed -i \ - -e 's/PermitRootLogin yes/PermitRootLogin prohibit-password/g' \ - -e 's/\#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/g' \ - -e 's/\#PasswordAuthentication yes/PasswordAuthentication no/g' \ - -e 's/\#X11Forwarding yes/X11Forwarding no/g' \ - /etc/ssh/sshd_config - -echo 'KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256' >> /etc/ssh/sshd_config - -echo 'Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr' >> /etc/ssh/sshd_config - -# Need to update/fix for Debian Buster (testing/10). This line breaks Buster: -#echo 'MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com' >> /etc/ssh/sshd_config - -# XXX Add admins as only allowed ssh users -# XXX add user for ansbile -echo "AllowUsers jebba root" >> /etc/ssh/sshd_config - -cd /etc ; git add . ; git commit -a -m 'Set up sshd' -systemctl restart sshd - -# Startup XXX disable unneeded. -for i in rsync exim4 saned -do echo $i - /usr/sbin/update-rc.d $i disable -done -# XXX KILL THIS, listening on public port (firewalled, but still): -# tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 296/systemd-resolve -cd /etc ; git add . ; git commit -a -m 'Turn off junk on boot' - -# GRUB -sed -i -e 's/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=4/g' /etc/default/grub -sed -i -e 's/^#GRUB_TERMINAL=console/GRUB_TERMINAL=console/g' /etc/default/grub -echo 'GRUB_DISABLE_OS_PROBER=true' >> /etc/default/grub - -update-grub - -cd /etc ; git add . ; git commit -a -m 'GRUB tweaks' - -# Fix network to come up on boot -sed -i -e 's/allow-hotplug/auto/g' /etc/network/interfaces -cd /etc ; git add . ; git commit -a -m 'Auto start network' - -# XXX not sure why this is getting installed: -apt-get -y autoremove - -apt-get -y remove os-prober - -# Proxmox -#cat > /etc/apt/sources.list.d/pve-enterprise.list< /etc/apt/sources.list.d/pve-no-subscription.list< /etc/apt/auth.conf< System --> Network -# Fix subnet mask, IP in web gui. -# Create --> Linux Bridge: -# vmbr0 -# XXX best way for this server? No subnet. -# -# Set up ethernet ports -# XXX check name Disable enp2s0 (Autostart no) -# set up vmbr0 to the main IP, gateway, etc. -# Create Linux Bridge in web interface -# vmbr0 -#XXX THIS ISN'T CORRECT IP -# 174.128.229.130/27 -# 255.255.255.224 -# Autostart -# VLAN Aware -# Bridge: enp2s0 -# Comment Main bridge -# -# Set up 10.2.2.0 and 10.99.99.0 networks statically -# on secondary ethernet interfaces - -# Reboot! hk1 (host) --> Restart - -# Configure Corosync -# Set up hosts -# XXX MAKE SURE NEW NODES GET ADDED TO EXISTING SERVER /etc/hosts -echo "10.3.3.1 hk1-coro" >> /etc/hosts -echo "10.3.3.2 hk2-coro" >> /etc/hosts -echo "10.3.3.3 hk3-coro" >> /etc/hosts - -echo "10.88.88.1 hk2-fs" >> /etc/hosts -echo "10.88.88.2 hk2-fs" >> /etc/hosts -echo "10.88.88.3 hk3-fs" >> /etc/hosts - -# Test cluster ping -for i in hk1-coro hk2-coro hk3-coro -do ping -q -c1 $i -done - -# Test ssh -for i in hk1-coro hk2-coro hk3-coro -do ssh $i hostname -done -# ssh via IP -for i in 10.2.2.3 -do ssh $i hostname -done - -# Note this is needed on at least one of the SharkTech servers or -# you get bad UDP checksums -# Also set to correct ethernet device -# XXX CHECK -ethtool -K enp3s0 gso off -ethtool --offload enp3s0 rx off tx off -ethtool -K enp4s0 gso off -ethtool --offload enp4s0 rx off tx off - -# Run this on just one node, hk1, to get the cluster started -pvecm create hkfork --bindnet0_addr 10.2.2.1 --ring0_addr hk1-coro - -# Run this on hk3 -#pvecm add 10.2.2.1 --ring0_addr hk3-coro - -pvecm status -pvecm nodes - -# rebootz ? - -# After Cluster is Configured -# =========================== - -# Data Center --> Permissions --> Users -# Add user with Realm Proxmox VE authentication server. -# Give user root permissions: Datacenter --> Permissions --> Add --> User permission. -# Path: / User: j Role: Administrator -# XXX Or create admin group, add perms to that... -# Permissions --> Authentication. Set Proxmox VE authentication server to default. - -# Storage -# Datacenter --> Storage --> Edit local. Enable all content (add VZDump) -# -# DNS -# hk1 (host) --> System --> DNS -# Add servers: -# 208.67.222.222 208.67.220.220 37.235.1.174 -# diff --git a/source/resources/apps/forksand-nodes-bootstrap/forksand-hk2-bootstrap b/source/resources/apps/forksand-nodes-bootstrap/forksand-hk2-bootstrap deleted file mode 100644 index 34f7f54..0000000 --- a/source/resources/apps/forksand-nodes-bootstrap/forksand-hk2-bootstrap +++ /dev/null @@ -1,329 +0,0 @@ -#!/bin/bash -# forksand-bootstrap-hk2 -# GPLv3+ -# This script does some initial setup and config -# Sets up Proxmox. - -# Log script -exec > >(tee /root/bootstrap-hk2.log) 2>/root/bootstrap-hk2.err - -set -x - -# Set locale -echo "en_US.UTF-8 UTF-8" > /etc/locale.gen -locale-gen -update-locale - -# XXX Set timezone -ln -sf /usr/share/zoneinfo/America/Denver /etc/localtime - -# Set up git for tracking. XXX Ansible... XXX -apt-get -y install git sudo -cd /etc -git init -chmod og-rwx /etc/.git - -cat > /etc/.gitignore < /etc/apt/sources.list < /etc/default/cpufrequtils -/etc/init.d/cpufrequtils restart -cd /etc ; git add . ; git commit -a -m 'Set up cpufrequtils' - -# Small user tweaks -echo :syntax on > ~/.vimrc -echo :syntax on > /home/jebba/.vimrc -chown jebba:jebba /home/jebba/.vimrc -echo export EDITOR=vi >> /root/.bashrc - -# XXX Passwordless sudo XXX Ya, probably remove -sed -i -e 's/%sudo\tALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers - -adduser jebba sudo -cd /etc ; git add . ; git commit -a -m 'Set up passwordless sudo' - -# SSH config XXX sed cruft -sed -i \ - -e 's/PermitRootLogin yes/PermitRootLogin prohibit-password/g' \ - -e 's/\#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/g' \ - -e 's/\#PasswordAuthentication yes/PasswordAuthentication no/g' \ - -e 's/\#X11Forwarding yes/X11Forwarding no/g' \ - /etc/ssh/sshd_config - -echo 'KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256' >> /etc/ssh/sshd_config - -echo 'Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr' >> /etc/ssh/sshd_config - -# Need to update/fix for Debian Buster (testing/10). This line breaks Buster: -#echo 'MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com' >> /etc/ssh/sshd_config - -# XXX Add admins as only allowed ssh users -# XXX add user for ansbile -echo "AllowUsers jebba root" >> /etc/ssh/sshd_config - -cd /etc ; git add . ; git commit -a -m 'Set up sshd' -systemctl restart sshd - -# Startup XXX disable unneeded. -for i in rsync exim4 saned -do echo $i - /usr/sbin/update-rc.d $i disable -done -# XXX KILL THIS, listening on public port (firewalled, but still): -# tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 296/systemd-resolve -cd /etc ; git add . ; git commit -a -m 'Turn off junk on boot' - -# GRUB -sed -i -e 's/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=4/g' /etc/default/grub -sed -i -e 's/^#GRUB_TERMINAL=console/GRUB_TERMINAL=console/g' /etc/default/grub -echo 'GRUB_DISABLE_OS_PROBER=true' >> /etc/default/grub - -update-grub - -cd /etc ; git add . ; git commit -a -m 'GRUB tweaks' - -# Fix network to come up on boot -sed -i -e 's/allow-hotplug/auto/g' /etc/network/interfaces -cd /etc ; git add . ; git commit -a -m 'Auto start network' - -# XXX not sure why this is getting installed: -apt-get -y autoremove - -apt-get -y remove os-prober - -# Proxmox -#cat > /etc/apt/sources.list.d/pve-enterprise.list< /etc/apt/sources.list.d/pve-no-subscription.list< /etc/apt/auth.conf< System --> Network -# Fix subnet mask, IP in web gui. -# Create --> Linux Bridge: -# vmbr0 -# XXX best way for this server? No subnet. -# -# Set up ethernet ports -# XXX check name Disable enp2s0 (Autostart no) -# set up vmbr0 to the main IP, gateway, etc. -# Create Linux Bridge in web interface -# vmbr0 -#XXX THIS ISN'T CORRECT IP -# 174.128.229.130/27 -# 255.255.255.224 -# Autostart -# VLAN Aware -# Bridge: enp2s0 -# Comment Main bridge -# -# Set up 10.2.2.0 and 10.99.99.0 networks statically -# on secondary ethernet interfaces - -# Reboot! hk2 (host) --> Restart - -# Configure Corosync -# Set up hosts -# XXX MAKE SURE NEW NODES GET ADDED TO EXISTING SERVER /etc/hosts -echo "10.3.3.1 hk1-coro" >> /etc/hosts -echo "10.3.3.2 hk2-coro" >> /etc/hosts -echo "10.3.3.3 hk3-coro" >> /etc/hosts - -echo "10.88.88.1 hk2-fs" >> /etc/hosts -echo "10.88.88.2 hk2-fs" >> /etc/hosts -echo "10.88.88.3 hk3-fs" >> /etc/hosts - -# Test cluster ping -for i in hk1-coro hk2-coro hk3-coro -do ping -q -c1 $i -done - -# Test ssh -for i in hk1-coro hk2-coro hk3-coro -do ssh $i hostname -done -# ssh via IP -for i in 10.2.2.3 -do ssh $i hostname -done - -# Note this is needed on at least one of the SharkTech servers or -# you get bad UDP checksums -# Also set to correct ethernet device -# XXX CHECK -ethtool -K enp3s0 gso off -ethtool --offload enp3s0 rx off tx off -ethtool -K enp4s0 gso off -ethtool --offload enp4s0 rx off tx off - -# Run this on just one node, hk1, to get the cluster started -#pvecm create hkfork --bindnet0_addr 10.2.2.1 --ring0_addr hk1-coro - -# Run this on hk2 -pvecm add 10.2.2.1 --ring0_addr hk1-coro - -pvecm status -pvecm nodes - -# rebootz ? - -# After Cluster is Configured -# =========================== - -# Data Center --> Permissions --> Users -# Add user with Realm Proxmox VE authentication server. -# Give user root permissions: Datacenter --> Permissions --> Add --> User permission. -# Path: / User: j Role: Administrator -# XXX Or create admin group, add perms to that... -# Permissions --> Authentication. Set Proxmox VE authentication server to default. - -# Storage -# Datacenter --> Storage --> Edit local. Enable all content (add VZDump) -# -# DNS -# hk2 (host) --> System --> DNS -# Add servers: -# 208.67.222.222 208.67.220.220 37.235.1.174 -# diff --git a/source/resources/apps/forksand-nodes-bootstrap/forksand-hk3-bootstrap b/source/resources/apps/forksand-nodes-bootstrap/forksand-hk3-bootstrap deleted file mode 100644 index 1e66d60..0000000 --- a/source/resources/apps/forksand-nodes-bootstrap/forksand-hk3-bootstrap +++ /dev/null @@ -1,329 +0,0 @@ -#!/bin/bash -# forksand-bootstrap-hk3 -# GPLv3+ -# This script does some initial setup and config -# Sets up Proxmox. - -# Log script -exec > >(tee /root/bootstrap-hk3.log) 2>/root/bootstrap-hk3.err - -set -x - -# Set locale -echo "en_US.UTF-8 UTF-8" > /etc/locale.gen -locale-gen -update-locale - -# XXX Set timezone -ln -sf /usr/share/zoneinfo/America/Denver /etc/localtime - -# Set up git for tracking. XXX Ansible... XXX -apt-get -y install git sudo -cd /etc -git init -chmod og-rwx /etc/.git - -cat > /etc/.gitignore < /etc/apt/sources.list < /etc/default/cpufrequtils -/etc/init.d/cpufrequtils restart -cd /etc ; git add . ; git commit -a -m 'Set up cpufrequtils' - -# Small user tweaks -echo :syntax on > ~/.vimrc -echo :syntax on > /home/jebba/.vimrc -chown jebba:jebba /home/jebba/.vimrc -echo export EDITOR=vi >> /root/.bashrc - -# XXX Passwordless sudo XXX Ya, probably remove -sed -i -e 's/%sudo\tALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers - -adduser jebba sudo -cd /etc ; git add . ; git commit -a -m 'Set up passwordless sudo' - -# SSH config XXX sed cruft -sed -i \ - -e 's/PermitRootLogin yes/PermitRootLogin prohibit-password/g' \ - -e 's/\#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/g' \ - -e 's/\#PasswordAuthentication yes/PasswordAuthentication no/g' \ - -e 's/\#X11Forwarding yes/X11Forwarding no/g' \ - /etc/ssh/sshd_config - -echo 'KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256' >> /etc/ssh/sshd_config - -echo 'Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr' >> /etc/ssh/sshd_config - -# Need to update/fix for Debian Buster (testing/10). This line breaks Buster: -#echo 'MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com' >> /etc/ssh/sshd_config - -# XXX Add admins as only allowed ssh users -# XXX add user for ansbile -echo "AllowUsers jebba root" >> /etc/ssh/sshd_config - -cd /etc ; git add . ; git commit -a -m 'Set up sshd' -systemctl restart sshd - -# Startup XXX disable unneeded. -for i in rsync exim4 saned -do echo $i - /usr/sbin/update-rc.d $i disable -done -# XXX KILL THIS, listening on public port (firewalled, but still): -# tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 296/systemd-resolve -cd /etc ; git add . ; git commit -a -m 'Turn off junk on boot' - -# GRUB -sed -i -e 's/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=4/g' /etc/default/grub -sed -i -e 's/^#GRUB_TERMINAL=console/GRUB_TERMINAL=console/g' /etc/default/grub -echo 'GRUB_DISABLE_OS_PROBER=true' >> /etc/default/grub - -update-grub - -cd /etc ; git add . ; git commit -a -m 'GRUB tweaks' - -# Fix network to come up on boot -sed -i -e 's/allow-hotplug/auto/g' /etc/network/interfaces -cd /etc ; git add . ; git commit -a -m 'Auto start network' - -# XXX not sure why this is getting installed: -apt-get -y autoremove - -apt-get -y remove os-prober - -# Proxmox -#cat > /etc/apt/sources.list.d/pve-enterprise.list< /etc/apt/sources.list.d/pve-no-subscription.list< /etc/apt/auth.conf< System --> Network -# Fix subnet mask, IP in web gui. -# Create --> Linux Bridge: -# vmbr0 -# XXX best way for this server? No subnet. -# -# Set up ethernet ports -# XXX check name Disable enp2s0 (Autostart no) -# set up vmbr0 to the main IP, gateway, etc. -# Create Linux Bridge in web interface -# vmbr0 -#XXX THIS ISN'T CORRECT IP -# 174.128.229.130/27 -# 255.255.255.224 -# Autostart -# VLAN Aware -# Bridge: enp2s0 -# Comment Main bridge -# -# Set up 10.2.2.0 and 10.99.99.0 networks statically -# on secondary ethernet interfaces - -# Reboot! hk3 (host) --> Restart - -# Configure Corosync -# Set up hosts -# XXX MAKE SURE NEW NODES GET ADDED TO EXISTING SERVER /etc/hosts -echo "10.3.3.1 hk1-coro" >> /etc/hosts -echo "10.3.3.2 hk2-coro" >> /etc/hosts -echo "10.3.3.3 hk3-coro" >> /etc/hosts - -echo "10.88.88.1 hk2-fs" >> /etc/hosts -echo "10.88.88.2 hk2-fs" >> /etc/hosts -echo "10.88.88.3 hk3-fs" >> /etc/hosts - -# Test cluster ping -for i in hk1-coro hk2-coro hk3-coro -do ping -q -c1 $i -done - -# Test ssh -for i in hk1-coro hk2-coro hk3-coro -do ssh $i hostname -done -# ssh via IP -for i in 10.2.2.3 -do ssh $i hostname -done - -# Note this is needed on at least one of the SharkTech servers or -# you get bad UDP checksums -# Also set to correct ethernet device -# XXX CHECK -ethtool -K enp3s0 gso off -ethtool --offload enp3s0 rx off tx off -ethtool -K enp4s0 gso off -ethtool --offload enp4s0 rx off tx off - -# Run this on just one node, hk3, to get the cluster started -#pvecm create hkfork --bindnet0_addr 10.2.2.3 --ring0_addr hk3-coro - -# Run this on hk3 -pvecm add 10.2.2.1 --ring0_addr hk3-coro - -pvecm status -pvecm nodes - -# rebootz ? - -# After Cluster is Configured -# =========================== - -# Data Center --> Permissions --> Users -# Add user with Realm Proxmox VE authentication server. -# Give user root permissions: Datacenter --> Permissions --> Add --> User permission. -# Path: / User: j Role: Administrator -# XXX Or create admin group, add perms to that... -# Permissions --> Authentication. Set Proxmox VE authentication server to default. - -# Storage -# Datacenter --> Storage --> Edit local. Enable all content (add VZDump) -# -# DNS -# hk3 (host) --> System --> DNS -# Add servers: -# 208.67.222.222 208.67.220.220 37.235.1.174 -# diff --git a/source/resources/apps/forksand-nodes-bootstrap/forksand-the-bootstrap b/source/resources/apps/forksand-nodes-bootstrap/forksand-the-bootstrap deleted file mode 100644 index 5d918da..0000000 --- a/source/resources/apps/forksand-nodes-bootstrap/forksand-the-bootstrap +++ /dev/null @@ -1,375 +0,0 @@ -#!/bin/bash -# forksand-bootstrap-the -# GPLv3+ -# This script does some initial setup and config -# Sets up Proxmox. -# IPv6 is left enabled. -# Firewalling is done through Proxmox. -# Edit below to add Proxmox Enterprise Key. XXX broken, use community repo. - -# XXX set up hostname - -# XXX set network to auto not hotplug XXX - -# Log script -exec > >(tee /root/bootstrap-the.log) 2>/root/bootstrap-the.err - -set -x - -# Set locale -echo "en_US.UTF-8 UTF-8" > /etc/locale.gen -locale-gen -update-locale - -# XXX Set timezone -ln -sf /usr/share/zoneinfo/America/Denver /etc/localtime - -# Set up git for tracking. XXX Ansible... XXX -echo 'Acquire::http::Proxy "http://192.168.110.72:3142";' > /etc/apt/apt.conf -apt-get -y install git sudo -cd /etc -git init -chmod og-rwx /etc/.git - -cat > /etc/.gitignore < /etc/apt/sources.list < /etc/default/cpufrequtils -/etc/init.d/cpufrequtils restart -cd /etc ; git add . ; git commit -a -m 'Set up cpufrequtils' - -# Small user tweaks -echo :syntax on > ~/.vimrc -echo :syntax on > /home/jebba/.vimrc -chown jebba:jebba /home/jebba/.vimrc -echo export EDITOR=vi >> /root/.bashrc - -# XXX Passwordless sudo XXX Ya, probably remove -sed -i -e 's/%sudo\tALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers - -adduser jebba sudo -cd /etc ; git add . ; git commit -a -m 'Set up passwordless sudo' - -# SSH config XXX sed cruft -sed -i \ - -e 's/PermitRootLogin yes/PermitRootLogin prohibit-password/g' \ - -e 's/\#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/g' \ - -e 's/\#PasswordAuthentication yes/PasswordAuthentication no/g' \ - -e 's/\#X11Forwarding yes/X11Forwarding no/g' \ - /etc/ssh/sshd_config - -echo 'KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256' >> /etc/ssh/sshd_config - -echo 'Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr' >> /etc/ssh/sshd_config - -# Need to update/fix for Debian Buster (testing/10). This line breaks Buster: -#echo 'MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com' >> /etc/ssh/sshd_config - -# XXX Add admins as only allowed ssh users -# XXX add user for ansbile -echo "AllowUsers jebba root" >> /etc/ssh/sshd_config - -cd /etc ; git add . ; git commit -a -m 'Set up sshd' -systemctl restart sshd - -# Startup XXX disable unneeded. -for i in rsync exim4 saned -do echo $i - /usr/sbin/update-rc.d $i disable -done -# XXX KILL THIS, listening on public port (firewalled, but still): -# tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 296/systemd-resolve -cd /etc ; git add . ; git commit -a -m 'Turn off junk on boot' - -# GRUB -sed -i -e 's/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=4/g' /etc/default/grub -sed -i -e 's/^#GRUB_TERMINAL=console/GRUB_TERMINAL=console/g' /etc/default/grub -echo 'GRUB_DISABLE_OS_PROBER=true' >> /etc/default/grub - -update-grub - -cd /etc ; git add . ; git commit -a -m 'GRUB tweaks' - -# Fix network to come up on boot -sed -i -e 's/allow-hotplug/auto/g' /etc/network/interfaces -cd /etc ; git add . ; git commit -a -m 'Auto start network' - -# XXX not sure why this is getting installed: -apt-get -y autoremove - -# Proxmox -#cat > /etc/apt/sources.list.d/pve-enterprise.list< /etc/apt/sources.list.d/pve-no-subscription.list< /etc/apt/auth.conf< Linux Bridge: -# vmbr0 - -# rebootz -# -# Set up templates - -# Cluster Corosync -exit 0 -echo "10.8.8.88 truck-coro" >> /etc/hosts -echo "10.8.8.90 swutch-coro" >> /etc/hosts -echo "10.8.8.87 wall-coro" >> /etc/hosts -echo "10.8.8.66 the-coro" >> /etc/hosts -echo "10.99.99.88 truck-fs" >> /etc/hosts -echo "10.99.99.90 swutch-fs" >> /etc/hosts -echo "10.99.99.87 wall-fs" >> /etc/hosts -echo "10.99.99.66 the-fs" >> /etc/hosts - -# Test cluster ping -for i in truck-coro swutch-coro wall-coro the-coro -do ping -q -c1 $i -done - -# more stuff -apt remove os-prober - -# Disable enp3s0 (Autostart no) -# -# set up vmbr0 to the main IP, gateway, etc. -# Create Linux Bridge in web interface -# vmbr0 -# 192.168.110.66 -# 255.255.255.0 -# Gateway 192.168.110.252 -# Autostart -# VLAN Aware -# Bridge: enp3s0f1 -# Comment Main bridge - -# Set up corosync ethernet interfaces -# 10.8.8.66 -# 255.255.255.0 -# Autostart -# VLAN Aware -# Bridge enx000acd31ac3d -# Comment the-coro - -# Set up ceph ethernet interfaces -# 10.99.99.66 -# 255.255.255.0 -# Autostart -# VLAN Aware -# Bridge enx000acd31ac3e -# Comment fs-coro - -# rebooootz - -# Add the to /etc/hosts on other servers: -10.8.8.66 the-coro -10.99.99.66 the-fs - -# Add the the ssh key to ONE node - -# Add truck, wall, swutch ssh keys to the - - -# Test flood multicast on private interface -omping -c 10000 -i 0.001 -F -q swutch-coro truck-coro the-coro wall-coro -# Ten minute test: -omping -c 600 -i 1 -q swutch-coro truck-coro wall-coro the-coro - -# Set up ssh as root to/from all nodes -# Best way to do this ... XXX -echo "fookey" >> /root/.ssh/authorized_keys -# test SSH -/etc/init.d/ssh restart - -for i in the wall truck swutch ;do ssh $i hostname ;done -for i in the-coro wall-coro truck-coro swutch-coro ;do ssh $i hostname ;done -for i in the-fs wall-fs truck-fs swutch-fs ;do ssh $i hostname ;done - - -# Run on the: -pvecm add 10.8.8.88 --ring0_addr the-coro - -# If `tcpdump -vvv -i enp10s0` show bad udp checksums, run this: -# XXX ok on the, wall, swutch, truck -ethtool -K enp10s0 gso off -ethtool --offload enp10s0 rx off tx off - -# Run on all nodes: -pveceph install --version luminous - -# Then run on remaining nodes, the: -pveceph createmon - -# On all nodes: -pveceph createmgr - -# internal drives -# Create a GPT disklabel with fdisk -fdisk /dev/nvme0n1 -# g -# w -pveceph createosd /dev/nvme0n1 -# Create a GPT disklabel with fdisk -fdisk /dev/sda -# g -# w -pveceph createosd /dev/sda - - -#===================== XXX best way? XXX ==================== -# XXX maybe not needed ? -# XXX actually, remove this and do no auth since it is private network. -mkdir /etc/pve/priv/ceph -cp -p /etc/pve/priv/ceph.client.admin.keyring /etc/pve/priv/ceph/my-ceph-storage.keyring -# Edit on just one node (shared on all) -vim /etc/pve/storage.cfg - -# Do this instead of my-ceph-storage.keyring -# Edit on one node: -vim /etc/pve/ceph.conf -auth cluster required = none -auth service required = none -auth client required = none -# restart stuff -systemctl stop ceph\*.service ceph\*.target -mkdir /etc/pve/priv/ceph/old -mv /etc/pve/priv/ceph/*keyring /etc/pve/priv/ceph/old/ -#===================== XXX best way? XXX ==================== diff --git a/source/resources/apps/forksand-nodes-bootstrap/forksand-truck-bootstrap b/source/resources/apps/forksand-nodes-bootstrap/forksand-truck-bootstrap deleted file mode 100644 index 37a5c1c..0000000 --- a/source/resources/apps/forksand-nodes-bootstrap/forksand-truck-bootstrap +++ /dev/null @@ -1,393 +0,0 @@ -#!/bin/bash -# forksand-bootstrap-truck -# GPLv3+ -# This script does some initial setup and config -# Sets up Proxmox. -# IPv6 is left enabled. -# Firewalling is done through Proxmox. -# Edit below to add Proxmox Enterprise Key. XXX broken, use community repo. - -# XXX set up hostname - -# XXX set network to auto not hotplug XXX - -# Log script -exec > >(tee /root/bootstrap-truck.log) 2>/root/bootstrap-truck.err - -set -x - -# Set locale -echo "en_US.UTF-8 UTF-8" > /etc/locale.gen -locale-gen -update-locale - -# XXX Set timezone -ln -sf /usr/share/zoneinfo/America/Denver /etc/localtime - -# Set up git for tracking. XXX Ansible... XXX -echo 'Acquire::http::Proxy "http://192.168.110.72:3142";' > /etc/apt/apt.conf -apt-get -y install git sudo -cd /etc -git init -chmod og-rwx /etc/.git - -cat > /etc/.gitignore < /etc/apt/sources.list < /etc/default/cpufrequtils -/etc/init.d/cpufrequtils restart -cd /etc ; git add . ; git commit -a -m 'Set up cpufrequtils' - -# Small user tweaks -echo :syntax on > ~/.vimrc -echo :syntax on > /home/jebba/.vimrc -chown jebba:jebba /home/jebba/.vimrc -echo export EDITOR=vi >> /root/.bashrc - -# XXX Passwordless sudo XXX Ya, probably remove -sed -i -e 's/%sudo\tALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers - -adduser jebba sudo -cd /etc ; git add . ; git commit -a -m 'Set up passwordless sudo' - -# SSH config XXX sed cruft -sed -i \ - -e 's/PermitRootLogin yes/PermitRootLogin prohibit-password/g' \ - -e 's/\#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/g' \ - -e 's/\#PasswordAuthentication yes/PasswordAuthentication no/g' \ - -e 's/\#X11Forwarding yes/X11Forwarding no/g' \ - /etc/ssh/sshd_config - -echo 'KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256' >> /etc/ssh/sshd_config - -echo 'Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr' >> /etc/ssh/sshd_config - -# Need to update/fix for Debian Buster (testing/10). This line breaks Buster: -#echo 'MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com' >> /etc/ssh/sshd_config - -# XXX Add admins as only allowed ssh users -# XXX add user for ansbile -echo "AllowUsers jebba root" >> /etc/ssh/sshd_config - -cd /etc ; git add . ; git commit -a -m 'Set up sshd' -systemctl restart sshd - -# Startup XXX disable unneeded. -for i in rsync exim4 saned -do echo $i - /usr/sbin/update-rc.d $i disable -done -# XXX KILL THIS, listening on public port (firewalled, but still): -# tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 296/systemd-resolve -cd /etc ; git add . ; git commit -a -m 'Turn off junk on boot' - -# GRUB -sed -i -e 's/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=4/g' /etc/default/grub -sed -i -e 's/^#GRUB_TERMINAL=console/GRUB_TERMINAL=console/g' /etc/default/grub -echo 'GRUB_DISABLE_OS_PROBER=true' >> /etc/default/grub - -update-grub - -cd /etc ; git add . ; git commit -a -m 'GRUB tweaks' - -# Fix network to come up on boot -sed -i -e 's/allow-hotplug/auto/g' /etc/network/interfaces -cd /etc ; git add . ; git commit -a -m 'Auto start network' - -# XXX not sure why this is getting installed: -apt-get -y autoremove - -# Proxmox -#cat > /etc/apt/sources.list.d/pve-enterprise.list< /etc/apt/sources.list.d/pve-no-subscription.list< /etc/apt/auth.conf< Permissions --> Users -# Add user with Realm Proxmox VE authentication server. -# Give user root permissions: Datacenter --> Permissions --> Add --> User permission. -# Path: / User: j Role: Administrator -# XXX Or create admin group, add perms to that... -# Permissions --> Authentication. Set Proxmox VE authentication server to default. -# -# Enable firewall. -# Datacenter --> truck (host) --> Firewall --> Add. -# Open up for SSH and SSH alt port. -# Enable firewall for datacenter: -# Datacenter --> Firewall --> Options --> Firewall --> Yes -# Enable firewall for truck: -# Open up for SSH and SSH alt port. -# REJECT everything coming in. (then DROP) -# Reorder to ACCEPT SSH at top -# -cd /etc ; git add . ; git commit -a -m 'Initial Proxmox configuration' -# -# Reboot! truck (host) --> Restart -# -# XXX -# Datacenter --> Firewall --> Add. -# REJECT any in -# -# Storage -# Datacenter --> Storage --> Edit local. Enable all content (add VZDump) -# -# XXX postfix -# -# DNS -# truck (host) --> System --> DNS -# Add servers: -# 208.67.222.222 208.67.220.220 37.235.1.174 -# -# Netwok -# truck (host) --> System --> Network -# Fix subnet mask, IP in web gui. -# Create --> Linux Bridge: -# vmbr0 -# XXX best way for this server? No subnet. -# - -# rebootz -# -# Set up templates - -# XXX TOTAL MEH XXX -# add this to the workstation: -# 127.0.0.1 localhost truck-tun -# Run: -# ssh -N -C -L 8020:localhost:8006 truck -# Then use URLs -# https://truck-tun:8020 -# Or you can only be logged into one at a time. -# XXX find better workaround - -# Cluster Corosync -exit 0 -echo "10.8.8.88 truck-coro" >> /etc/hosts -echo "10.8.8.90 swutch-coro" >> /etc/hosts -echo "10.8.8.87 wall-coro" >> /etc/hosts -echo "10.111.111.88 truck-fs" >> /etc/hosts -echo "10.111.111.90 swutch-fs" >> /etc/hosts -echo "10.111.111.87 wall-fs" >> /etc/hosts - -# Test cluster ping -for i in truck-coro swutch-coro wall-coro -do ping -q -c1 $i -done - -# more stuff -apt install postfix - -apt remove os-prober - -# Disable enp3s0 (Autostart no) -# set up vmbr0 to the main IP, gateway, etc. -# Create Linux Bridge in web interface -# vmbr0 -# 192.168.55.88 -# 255.255.255.0 -# Autostart -# VLAN Aware -# Bridge: enp3s0 -# Comment Main bridge - -# Test flood multicast on private interface -omping -c 10000 -i 0.001 -F -q swutch-coro truck-coro wall-coro -# Ten minute test: -omping -c 600 -i 1 -q swutch-coro truck-coro wall-coro - -# Set up ssh as root to/from all nodes -# Best way to do this ... XXX -echo "fookey" >> /root/.ssh/authorized_keys -for i in swutch-coro truck-coro wall-coro -do ssh $i hostname -done - -# Run just on truck: -pvecm create red --bindnet0_addr 10.8.8.88 --ring0_addr truck-coro - -# Run on wall: -pvecm add 10.8.8.88 --ring0_addr wall-coro - -# Run on swutch: -pvecm add 10.8.8.88 --ring0_addr swutch-coro - -# If `tcpdump -vvv -i enp10s0` show bad udp checksums, run this: -# XXX ok on truck, wall, swutch -ethtool -K enp10s0 gso off -ethtool --offload enp10s0 rx off tx off - -# Setup 10.99.99.0/24 addresses for Ceph on enp16s0 - -# Run on all nodes: -pveceph install --version luminous - -# Run just on one node (truck): -pveceph init --network 10.99.99.0/24 -pveceph createmon - -# Then run on remaining nodes (or via GUI) -pveceph createmon - -# On all nodes: -pveceph createmr - -# XXX missing ZFS tools -apt install zfsutils-linux -modprobe zfs - -# Add USB drive to swutch and run on it: -# Create a GPT disklabel with fdisk -fdisk /dev/sdb -# g -# w -pveceph createosd /dev/sdb - -# XXX actually, remove this and do no auth since it is private network. -mkdir /etc/pve/priv/ceph -cp -p /etc/pve/priv/ceph.client.admin.keyring /etc/pve/priv/ceph/my-ceph-storage.keyring -# Edit on just one node (shared on all) -vim /etc/pve/storage.cfg - -# Do this instead of my-ceph-storage.keyring -# Edit on one node: -vim /etc/pve/ceph.conf -auth cluster required = none -auth service required = none -auth client required = none -# restart stuff -systemctl stop ceph\*.service ceph\*.target -mkdir /etc/pve/priv/ceph/old -mv /etc/pve/priv/ceph/*keyring /etc/pve/priv/ceph/old/ - diff --git a/source/resources/apps/sunstone/etc/one/sunstone-logos.yaml b/source/resources/apps/sunstone/etc/one/sunstone-logos.yaml deleted file mode 100644 index 6f5ee58..0000000 --- a/source/resources/apps/sunstone/etc/one/sunstone-logos.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# You can add custom logos here, or disable any of the default ones commenting -# out its line -- { 'name': "Arch Linux", 'path': "images/logos/arch.png"} -- { 'name': "CentOS", 'path': "images/logos/centos.png"} -- { 'name': "Debian", 'path': "images/logos/debian.png"} -- { 'name': "Fedora", 'path': "images/logos/fedora.png"} -- { 'name': "Linux", 'path': "images/logos/linux.png"} -- { 'name': "Redhat", 'path': "images/logos/redhat.png"} -- { 'name': "Ubuntu", 'path': "images/logos/ubuntu.png"} -#- { 'name': "Windows XP/2003", 'path': "images/logos/windowsxp.png"} -#- { 'name': "Windows 8", 'path': "images/logos/windows8.png"} diff --git a/source/resources/apps/sunstone/etc/one/sunstone-views.yaml b/source/resources/apps/sunstone/etc/one/sunstone-views.yaml deleted file mode 100644 index e8d414f..0000000 --- a/source/resources/apps/sunstone/etc/one/sunstone-views.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -logo: images/opennebula-5.0.png -groups: - oneadmin: - - admin - - admin_vcenter - - groupadmin - - groupadmin_vcenter - - user - - cloud - - cloud_vcenter -default: - - cloud -default_groupadmin: - - groupadmin - - cloud -labels_groups: - default: diff --git a/source/resources/make-sources-list.sh b/source/resources/make-sources-list.sh index c7c5b2b..62aa1ae 100755 --- a/source/resources/make-sources-list.sh +++ b/source/resources/make-sources-list.sh @@ -14,7 +14,7 @@ CODEDIR="$rootPath/source/resources" cd "$CODEDIR" || exit TEXOUT="$rootPath/source/Source-gen.tex" # Build a grep exclude command that has file extensions to not include. -EXCLUDE="\./\.git \.csv$ \.eps \.git$ \.gz$ \.jpg$ \.ods$ \.ods\#$ \.png$ \.pdf$ \.swp$ \.tmp$ \.xml$ \.aux$ \.fuse_hidden*$ \.glo$ \.gls$ \.idx$ \.ilg$ \.ind$ \.lof$ \.log$ \.lol$ _minted-*$ \.old$ \.out$ \.swp$ \.toc$ \.zip$ \.*GPLv3*$ LICENSE$ README.md$ \.tar$ \.tar\.bz2$ \.gitignore make-sources-list\.sh$ Thumbs\.db$" +EXCLUDE="\./\.git \.csv$ \.eps \.git$ \.gz$ \.jpg$ \.ods$ \.ods\#$ \.png$ \.pdf$ \.swp$ \.tmp$ \.xml$ \.aux$ \.fuse_hidden.*$ \.glo$ \.gls$ \.idx$ \.ilg$ \.ind$ \.lof$ \.log$ \.lol$ _minted-.*$ \.old$ \.out$ \.swp$ \.toc$ \.zip$ \..*GPLv3.*$ LICENSE$ README.md$ \.tar$ \.tar\.bz2$ \.gitignore make-sources-list\.sh$ Thumbs\.db$ \.DS_Store$ \.git.*$" EXCLUDEGREP="grep -v -i " for i in $EXCLUDE do EXCLUDEGREP="$EXCLUDEGREP -e $i"