diff --git a/source/Ansible.tex b/source/Ansible.tex index c0729a4..90e1ef7 100644 --- a/source/Ansible.tex +++ b/source/Ansible.tex @@ -156,6 +156,10 @@ ansible-playbook -i inventory.yml site.yml -vvv \subsection{Project Structure} The following tree depicts the high level structure of this Ansible project. +\begin{picture}(0,0)\put(-10000,0){ + \gls{firewall} +}\end{picture} + \begin{minted}{sh} |-- ansible.cfg |-- group_vars @@ -204,6 +208,9 @@ The following table consists of a description of what each file and directory st The following table consists of descriptions of each role and their purpose. The roles listed below are listed in the required order of execution to ensure successful completion of the playbook. +\begin{picture}(0,0)\put(-10000,0){ + \gls{firewall} +}\end{picture} \begin{table}[!htb] \caption{Role descriptions} % \label{tab:tech} \begin{tabular}{|l|l|l|} diff --git a/source/Hardware.tex b/source/Hardware.tex index f077577..f94ed9a 100644 --- a/source/Hardware.tex +++ b/source/Hardware.tex @@ -265,8 +265,119 @@ The \gls{cluster} will require rackmountable equipment. \caption{C14 to C13 power cord for Sharktech pdu} \end{figure} -\newpage +\providecommand\includedDBName{sharkforkorder} +\providecommand\includedRowsSecond{2} +\providecommand\includedRowsLast{2} + +\def\tand{&} +\newcounter{it} +\newcommand{\includeRowFromCSV}[2]{% + \setcounter{it}{\includedRowsSecond}% + #2{\DTLfetchrelax{#1}{2}}% + \tand% + \whiledo{\theit<\includedRowsLast}{% + #2{\DTLfetchrelax{#1}{\theit}}% + \stepcounter{it}% + \tand% + }% + #2{\DTLfetchrelax{#1}{\includedRowsLast}}% +} + +\providecommand\includedDBName{sharkforkorder} +\providecommand\includedRowsSecond{2} +\providecommand\includedRowsLast{2} +\newcounter{rowi} +\renewcommand\includedDBName{sharkforkorder} +\renewcommand\includedRowsSecond{3} +\renewcommand\includedRowsLast{6} +\pgfmathtruncatemacro{\includedRowsFromSecond}{\includedRowsLast - \includedRowsSecond} +\pgfmathtruncatemacro{\includedRows}{\includedRowsLast - \includedRowsSecond + 2} +\tabulinesep=3pt +\setcounter{rowi}{2} + +\setlength\heavyrulewidth{2pt} +\begin{longtabu}{|[2pt]*{\includedRowsFromSecond}{l|}l|l|[2pt]} +\caption{Sharkfork Order} +\label{tab:sharkforkorder}\\% + \toprule% + \includeRowFromCSV{ID}{\textbf}\\ + \toprule + \endhead +% + \midrule + \endfoot +% + \bottomrule + \endlastfoot +% + %\bottomrule + \includeRowFromCSV{2}{}\stepcounter{rowi}% + \whiledo{\therowi<33}{ \\ \midrule + \includeRowFromCSV + {\therowi}{}% + \stepcounter{rowi}% + }% +\end{longtabu} +\renewcommand\includedRowsSecond{7} +\renewcommand\includedRowsLast{12} +\pgfmathtruncatemacro{\includedRowsFromSecond}{\includedRowsLast - \includedRowsSecond} +\pgfmathtruncatemacro{\includedRows}{\includedRowsLast - \includedRowsSecond + 2} +\tabulinesep=3pt +\setcounter{rowi}{2} +\begin{longtabu}{|[2pt]*{\includedRowsFromSecond}{l|}l|l|[2pt]} +\caption{Sharkfork Order} +\label{tab:sharkforkorder}\\% + \toprule% + \includeRowFromCSV{ID}{\textbf}\\ + \toprule + \endhead +% + \midrule + \endfoot +% + \bottomrule + \endlastfoot +% + %\bottomrule + \includeRowFromCSV{2}{}\stepcounter{rowi}% + \whiledo{\therowi<33}{ \\ \midrule + \includeRowFromCSV + {\therowi}{}% + \stepcounter{rowi}% + }% +\end{longtabu} + +%\renewcommand\includedRowsSecond{13} +%\renewcommand\includedRowsLast{17} +%\pgfmathtruncatemacro{\includedRowsFromSecond}{\includedRowsLast - \includedRowsSecond} +%\pgfmathtruncatemacro{\includedRows}{\includedRowsLast - \includedRowsSecond + 2} +%\tabulinesep=3pt +%\setcounter{rowi}{2} +%\begin{longtabu}{|[2pt]*{\includedRowsFromSecond}{l|}l|l|[2pt]} +%\caption{Sharkfork Order} +%\label{tab:sharkforkorder}\\% +% \toprule% +% \includeRowFromCSV{ID}{\textbf}\\ +% \toprule +% \endhead +%% +% \midrule +% \endfoot +%% +% \bottomrule +% \endlastfoot +%% +% %\bottomrule +% \includeRowFromCSV{2}{}\stepcounter{rowi}% +% \whiledo{\therowi<33}{ \\ \midrule +% \includeRowFromCSV +% {\therowi}{}% +% \stepcounter{rowi}% +% }% +%\end{longtabu} + +\newpage \section{GNU/Linux Servers} The servers will all run Debian \gls{gnulinux} diff --git a/source/forksand-it-manual.tex b/source/forksand-it-manual.tex index f1224ff..aae6735 100644 --- a/source/forksand-it-manual.tex +++ b/source/forksand-it-manual.tex @@ -76,8 +76,13 @@ 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} +%\usepackage{svg} \usesmartdiagramlibrary{additions} \usepackage{comment} % /usr/share/doc/texlive-doc/latex/comment/comment.pdf \usepackage{pdfpages} % Be able to include pdf diff --git a/source/resources/make-sources-list.sh b/source/resources/make-sources-list.sh index acc5096..567f3d5 100755 --- a/source/resources/make-sources-list.sh +++ b/source/resources/make-sources-list.sh @@ -56,7 +56,21 @@ echo "There are `cat SHA256SUM.tmp | cut -f 1 -d " " | sort -u | wc -l` unique f rm SHA256SUM.tmp echo "current path: $PWD" -ssconverter spreadsheets/sharkfork.ods@"SHARKFORK Order" spreadsheets/sharkfork_order.csv +ssconverter spreadsheets/sharkfork.ods@"SHARKFORK Order" spreadsheets/temp.csv +awk -F',' -v OFS=',' 'NR == 1 {print "ID", $0; next} {print (NR-1), $0} +' spreadsheets/temp.csv > spreadsheets/temp1.csv +FIELDSCNT=`head -n 1 spreadsheets/temp1.csv | sed -e 's/"[^"]*"//g' | awk -F, '{ print NF; exit }'` +for i in $(seq 1 1 $FIELDSCNT); do printf $i,; done | sed -e 's/,$/\n/g' > spreadsheets/sharkfork_order.csv +cat spreadsheets/temp1.csv | sed -e 's/&/\\char\`\&/g' >> spreadsheets/sharkfork_order.csv +rm -f spreadsheets/temp1.csv ; rm -f spreadsheets/temp.csv + +ssconverter spreadsheets/sharkfork.ods@"Switch Ports" spreadsheets/temp.csv +awk -F',' -v OFS=',' 'NR == 1 {print "ID", $0; next} {print (NR-1), $0} +' spreadsheets/temp.csv > spreadsheets/temp1.csv +FIELDSCNT=`head -n 1 spreadsheets/temp1.csv | sed -e 's/"[^"]*"//g' | awk -F, '{ print NF; exit }'` +for i in $(seq 1 1 $FIELDSCNT); do printf $i,; done | sed -e 's/,$/\n/g' > spreadsheets/sharkfork_switch_ports.csv +cat spreadsheets/temp1.csv | sed -e 's/&/\\char\`\&/g' >> spreadsheets/sharkfork_switch_ports.csv +rm -f spreadsheets/temp1.csv ; rm -f spreadsheets/temp.csv # Files not rendered #echo "\section{Not Rendered}" >> $TEXOUT diff --git a/source/resources/spreadsheets/sharkfork_order.csv b/source/resources/spreadsheets/sharkfork_order.csv index 104475c..da4b54f 100644 --- a/source/resources/spreadsheets/sharkfork_order.csv +++ b/source/resources/spreadsheets/sharkfork_order.csv @@ -1,33 +1,34 @@ -To Buy,Model,RAM,CPU,Storage,Disks,Rack U,10G,1G,IPMI 1G,Power,Quote $,$/RAM,$/Ghz,$/Gig,Ordered,Supplier,PO,Status,Comments -Servers,,,,,,,,,,,,,,,,,,, -sf-fw1,Iris FW1100,16,27.2,128,1,1,8,0,1,XXX,4064.38,254.02375,149.425735294118,31.75296875,4064.38,PogoLinux,,Received,2x SPF+ -sf-fw2,Iris FW1100,16,27.2,128,1,1,8,0,1,XXX,4064.38,254.02375,149.425735294118,31.75296875,4064.38,PogoLinux,,Received,2x SPF+ -sf-004,Iris NV2225,128,48,3700,5,2,6,0,1,XXX,13837.99,108.109296875,288.291458333333,3.7399972972973,13837.99,PogoLinux,,Received, -sf-003,Iris NV1211,64,44,5300,7,1,6,0,1,XXX,12542.37,195.97453125,285.053863636364,2.36648490566038,12542.37,PogoLinux,,Received, -sf-002,Iris 1292-R4T,128,33.6,24000,4,1,6,0,1,XXX,6364.42,49.72203125,189.417261904762,0.265184166666667,6364.42,PogoLinux,,Received, -sf-001,Iris 1292-R4T,128,33.6,24000,4,1,6,0,1,XXX,6364.42,49.72203125,189.417261904762,0.265184166666667,6364.42,PogoLinux,,Received, -,,,,,,,,,,,,,,,,,,, -Shipping,,,,,,,,,,,,,,,446,,,, -Subtotal,,480,213.6,57256,22,7,40,0,6,0,47237.96,,,,47683.96,,,, -,,,,,,,,,,,,,,,,,,, -Switches,,,,,,,,,,,,,,,,,,, -admin / ipmi,Netgear Prosafe S3300-28X,,,,,1,2,26,0,,586.98,,,,586.98,Amazon,,Received,28-Port 1 Gigabit Switch -DMZ,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch -Filesystem 1,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch -Filesystem 2,Netgear ProSafe XS716T,,,,,1,16,0,,,1104,,,69,1104,Amazon,,Received,16-Port 10 Gigabit Switch -Corosync 1,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch -Corosync 2,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch -Migration,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Ordered,16-Port 10 Gigabit Switch -,,,,,,,,,,,,,,,,,,, -Subtotal,,,,,,7,98,26,0,,7340.43,,,,7340.43,,,, -,,,,,,,,,,,,,,,,,,, -Patch cables & Panels,,,,,,,,,,,,,,,,,,, -Ethernet Cables,Various CAT 7,,,,,,,,,,400,,,,400,Amazon,,Ordered,Need patch cables of different colors & lengths -Power Cables,Various,,,,,,,,,,250,,,,250,Amazon,,Ordered, -,,,,,,,,,,,,,,,,,,, -Subtotal,,,,,,,,,,,650,,,,650,,,, -,,,,,,,,,,,,,,,,,,, -Totals,,480,213.6,57256,22,14,,,12,0,55228.39,,,,55674.39,,,, -Monthly (36 months),,,,,,,,,,,1534.12194444444,,,,,,,, -Colocation,,,,,,,,,,,850,XXX,,,,,,, -Monthly Total,,,,,,,,,,,2384.12194444444,,,,,,,, +1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 +ID,To Buy,Model,RAM,CPU,Storage,Disks,Rack U,10G,1G,IPMI 1G,Power,Quote $,$/RAM,$/Ghz,$/Gig,Ordered,Supplier,PO,Status,Comments +1,Servers,,,,,,,,,,,,,,,,,,, +2,sf-fw1,Iris FW1100,16,27.2,128,1,1,8,0,1,XXX,4064.38,254.02375,149.425735294118,31.75296875,4064.38,PogoLinux,,Received,2x SPF+ +3,sf-fw2,Iris FW1100,16,27.2,128,1,1,8,0,1,XXX,4064.38,254.02375,149.425735294118,31.75296875,4064.38,PogoLinux,,Received,2x SPF+ +4,sf-004,Iris NV2225,128,48,3700,5,2,6,0,1,XXX,13837.99,108.109296875,288.291458333333,3.7399972972973,13837.99,PogoLinux,,Received, +5,sf-003,Iris NV1211,64,44,5300,7,1,6,0,1,XXX,12542.37,195.97453125,285.053863636364,2.36648490566038,12542.37,PogoLinux,,Received, +6,sf-002,Iris 1292-R4T,128,33.6,24000,4,1,6,0,1,XXX,6364.42,49.72203125,189.417261904762,0.265184166666667,6364.42,PogoLinux,,Received, +7,sf-001,Iris 1292-R4T,128,33.6,24000,4,1,6,0,1,XXX,6364.42,49.72203125,189.417261904762,0.265184166666667,6364.42,PogoLinux,,Received, +8,,,,,,,,,,,,,,,,,,,, +9,Shipping,,,,,,,,,,,,,,,446,,,, +10,Subtotal,,480,213.6,57256,22,7,40,0,6,0,47237.96,,,,47683.96,,,, +11,,,,,,,,,,,,,,,,,,,, +12,Switches,,,,,,,,,,,,,,,,,,, +13,admin / ipmi,Netgear Prosafe S3300-28X,,,,,1,2,26,0,,586.98,,,,586.98,Amazon,,Received,28-Port 1 Gigabit Switch +14,DMZ,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch +15,Filesystem 1,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch +16,Filesystem 2,Netgear ProSafe XS716T,,,,,1,16,0,,,1104,,,69,1104,Amazon,,Received,16-Port 10 Gigabit Switch +17,Corosync 1,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch +18,Corosync 2,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Received,16-Port 10 Gigabit Switch +19,Migration,Netgear ProSafe XS716T,,,,,1,16,0,,,1129.89,,,70.618125,1129.89,Amazon,,Ordered,16-Port 10 Gigabit Switch +20,,,,,,,,,,,,,,,,,,,, +21,Subtotal,,,,,,7,98,26,0,,7340.43,,,,7340.43,,,, +22,,,,,,,,,,,,,,,,,,,, +23,Patch cables \char`& Panels,,,,,,,,,,,,,,,,,,, +24,Ethernet Cables,Various CAT 7,,,,,,,,,,400,,,,400,Amazon,,Ordered,Need patch cables of different colors \char`& lengths +25,Power Cables,Various,,,,,,,,,,250,,,,250,Amazon,,Ordered, +26,,,,,,,,,,,,,,,,,,,, +27,Subtotal,,,,,,,,,,,650,,,,650,,,, +28,,,,,,,,,,,,,,,,,,,, +29,Totals,,480,213.6,57256,22,14,,,12,0,55228.39,,,,55674.39,,,, +30,Monthly (36 months),,,,,,,,,,,1534.12194444444,,,,,,,, +31,Colocation,,,,,,,,,,,850,XXX,,,,,,, +32,Monthly Total,,,,,,,,,,,2384.12194444444,,,,,,,, diff --git a/source/resources/spreadsheets/sharkfork_switch_ports.csv b/source/resources/spreadsheets/sharkfork_switch_ports.csv new file mode 100644 index 0000000..9399a4c --- /dev/null +++ b/source/resources/spreadsheets/sharkfork_switch_ports.csv @@ -0,0 +1,56 @@ +1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 +ID,Switch, ,Admin/IPMI,Length, ,DMZ,Length, ,Filesystem 1,Length, ,Filesystem 2,Length, ,Corosync 1,Length, ,Corosync 2,Length, ,Migration,Length, ,Shark WAN,Length, ,Shark Admin,Length, ,pfSync Xover,Length, , +1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2,Port 1,,sf-fw1 igb2,.3m,,sf-fw1 igb0,.5m,,sf-fw1 igb3,.3m,,Free,,,sf-fw1 igb5,.3m,,Free,,,sf-fw1 igb4,.5m,,sf-fw1 igb1,?,,sf-fw1 Admin,?,,sf-fw1 ix2,.3m,, +3,Port 2,,sf-001 Admin,.3m + DEPTH,,sf-001 eno1,.5m + DEPTH,,sf-001 eno2,,,sf-001 enp134s0f1,,,sf-001 eno4,,,sf-001 enp134s0f0,,,sf-001 eno3,,,sf-fw2 igb1,?,,sf-fw1 Admin,?,,sf-fw2 ix2,.3m,, +4,Port 3,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +5,Port 4,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +6,Port 5,,sf-002 Admin,.3m + DEPTH,,sf-002 eno1,,,sf-002 eno2,,,sf-002 enp134s0f1,,,sf-002 eno4,,,sf-002 enp134s0f0,,,sf-002 eno3,,,,,,,,,,,, +7,Port 6,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +8,Port 7,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +9,Port 8,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +10,Port 9,,sf-003 Admin,.3m + DEPTH,,sf-003 eno1,,,sf-003 eno2,,,sf-003 enp216s0f0,,,sf-003 enp175s0f1,,,sf-003 enp216s0f1,,,sf-003 enp175s0f0,,,,,,,,,,,, +11,Port 10,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +12,Port 11,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +13,Port 12,,sf-004 Admin,.5m + DEPTH,,sf-004 eno1,,,sf-004 eno2,,,sf-004 enp134s0f1,,,sf-004 eno4,,,sf-004 enp134s0f0 ,,,sf-004 eno3,,,,,,,,,,,, +14,Port 13,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,Free,,,,,,,,,,,, +15,Port 14,,Free,,,sf-fw2 igb0,.5m,,sf-fw2 igb3,.5m,,Free,,,sf-fw2 igb5,.3m,,Free,,,sf-fw2 igb4,.5m,,,,,,,,,,, +16,Port 15(F),,Free,,,Free,,,Free,,,sf-fw1 ix1,1m,,Free,,,sf-fw1 ix0,1m,,Free,,,,,,,,,,,, +17,Port 16(F),,Free,,,Free,,,Free,,,sf-fw2 ix1,1m,,Free,,,sf-fw2 ix0,1m,,Free,,,,,,,,,,,, +18,Port 17,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +19,Port 18,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +20,Port 19,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +21,Port 20,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +22,Port 21,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +23,Port 22,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +24,Port 23,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +25,Port 24,,sf-fw2 igb2,.5m,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +26,Port 25T,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +27,Port 26T,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +28,Port 27F,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +29,Port 28F,,Free,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +31,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +32,Color(s),,Black,,,Red,,,Blue,,,White,,,White,,,"Blue, white, black",,,"Purple, yellow, green",,,"Purple, Cyan",,,Gold,,,Pink,,, +33,,,Yellow,,,Blue,,,Yellow,,,,,,Black,,,,,,Aucas,,,Tera Grand,,,,,,,,, +34,,,Blue,,,Yellow,,,Green,,,,,,Yellow,,,,,,,,,,,,,,,,,, +35,Brand,,Aucas,,,Aucas,,,Aucas,,,Ultra Clarity,,,Aucas,,,Pasow,,,Aucas,,,Tera Grand,,,DanYee,,,XXX,,, +36,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +37,,,,,,,,,,,,fw fiber Aqua,,,,,,fw fiber Aqua,,,,,,,,,,,,,,, +38,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +39,Order,,6,,,6,,,6,,,0,,,0,,,0,,,0,,,4,,,4,,,0,,,26 +40,,,4x .5m on order,,,2x .5 on order,,,2x .5 on order,,,Fiber on hand,,,2x .5m on order,,,Fiber ordered,,,,,,1x 3ft on hand,,,1x 3ft on hand,,,,,, +41,,,2x 1m on order,,,4x 1m on order,,,4x 1m on order,,,4x 1m on order,,,4x 1m on order,,,2x .5m,,,2x .5m,,,1x 3ft on order,,,1x 3ft on order,,,,,, +42,On Hand,,1x 1m,,,,,,,,,2x .5m on order,,,,,,4x 1m,,,4x 1m,,,2x 6ft on order,,,2x 10ft on order,,,,,, +43,,,,,,,,,,,,2x 2m on order,,,,,,,,,,,,,,,,,,,,, +44,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +45,,,Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +46,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +47,,,Approx:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +48,,,.3m = 1ft,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +49,,,.5m = 1.5ft,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +50,,,1m = 3ft,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +51,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +52,,,Assumes 42in,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +53,,,deep cabinet! XXX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +54,,,47in?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,