Striker: Difference between revisions

From Alteeve Wiki
Jump to navigation Jump to search
No edit summary
Line 9: Line 9:
''Striker'' dashboards also act as a ''[[ScanCore]]'' database. Two or more ''Striker'' dashboards will work together to make the ''ScanCore'' data resilient by handling replication of the data and n-way resync automatically to update new or rebooted dashboards.
''Striker'' dashboards also act as a ''[[ScanCore]]'' database. Two or more ''Striker'' dashboards will work together to make the ''ScanCore'' data resilient by handling replication of the data and n-way resync automatically to update new or rebooted dashboards.


= Building an Anvil =
* [[Build an Anvil! - Detailed]] - or - [[Build an Anvil! - Cookbook]]
 
* [[Using Striker]]
With version 2, perhaps the biggest new feature is the nearly completely automated building of new ''Anvil!'' systems.
 
{{note|1=This guide covers a lot of background reasoning and high-level discussion of the ''Anvil!'' platform in general. If you don't care about this and want concise instructions, see the link below.}}
 
* [[Build an Anvil! - Cookbook]]
 
== Overview ==
 
This starts by download the ''Striker'' ISO generator, running it against either a [[RHEL]] or [[CentOS]] 6 ISO and it spits out an ''Anvil!'' build ISO. You can then burn this to a DVD or write it to a USB drive (using another small tool).
 
You boot the first ''Striker'' dashboard off of the ISO use it build up the dashboard machine.
 
Once done, you can get rid of the ISO if you'd like. All further installs will happen over the network!
 
The ''Striker'' UI acts as an "Install Target". When you enable it, you can then boot other dashboards or nodes, choose to boot of the network and they will boot and install from Striker, just the same as if you had booted up from the ISO, just a lot more conveniently.
 
== Staged Installs ==
 
Building dashboards and nodes is a 2-stage process.
 
The first stage is like installing firmware on a router; It gets the base OS install and initial configuration, but it is a generic system at that point.
 
The second stage is where you configure the system for your environment.
 
The "Install Target" function handles the stage-1 install for both dashboards and nodes. The stage-2 is handled differently for dashboards and nodes, which we'll cover in a bit.
 
== Why Do I Have To Build My Own ISO? ==
 
The ''Anvil!'' platform itself works like an appliance. That is to say, builds and manages the operating systems under the ''Striker'' dashboards and ''Anvil!'' nodes.
 
We had to choose early on if we were going to create our own operating system or not, and we chose not to. The additional burden of maintaining an OS would distract us from our core goal of building the most resilient, intelligent availability platform.
 
So how to resolve this?
 
For completely understandable reasons, we can't simply repackage and distribute a [[RHEL]] or [[CentOS]] based Anvil! install ISO. Red Hat and CentOS work very hard to deliver their ISOs and they want to ensure that, if their name is on something, they've tested it to be up to their standards.
 
So given that we don't want to create a distro, and we respect Red Hat and CentOS's trademarks, the best option available was for us to create an ISO generation tool, and that's what we've done.
 
You run our tool against the stock ISO and it will generate an ready-to-go Anvil! ISO.
 
== Build the Anvil! ISO ==
 
{{note|1=We've tested this tool on [[Fedora]], [[RHEL]] and [[CentOS]] operating systems. It may not work on other distributions. If you have trouble, please [[Support|contact us]] and we'll work to extend support to new distros.}}
 
The build process is pretty simple;
 
# Download the RHEL or CentOS 6 DVD ISO.
## [http://isoredirect.centos.org/centos/6/isos/x86_64/ CentOS x86_64 v6]
## [https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux/get-started RHEL x86_64 v6 (try or buy)]
# Download <span class="code">[https://raw.githubusercontent.com/ClusterLabs/striker/master/tools/anvil-generate-iso anvil-generate-iso]</span>.
# Install dependencies.
# Build the ''Anvil!'' ISO.
# (Optional) Write the ISO to a USB drive
 
=== Download the RHEL or CentOS ISO ===
 
The first question to ask is;
 
"Do I want to build on RHEL or CentOS?".
 
The answer is up to you, but it comes down to your support comfort level. If you are a proper business, then going with RHEL makes the most sense. You will need to purchase a RHEL entitlement and [Resilient Storage](https://www.redhat.com/apps/store/add-ons/) Add-On (which includes the High-Availability Add-On).
 
If you're looking for a "free-as-in-beer" solution, or if you want to do a proof of concept/testing, CentOS is a perfectly fine option.
 
At the time of writing, CentOS 6.7 is the latest and supported version. RHEL is up to 6.8 and that is the supported version. Please be sure to get the 64-bit version as 32-bit is not supported and very likely won't work.
 
For CentOS, download both DVD 1 and 2. For RHEL, there is only DVD 1.
 
Save the ISO in any directory you want, just make a note of where it is.
 
=== Download anvil-generate-iso ===
 
{{note|1=When version 2 is officially released, the download location will change from github to alteeve.ca proper.}}
 
Download the tool:
 
<syntaxhighlight lang="bash">
wget -c https://raw.githubusercontent.com/ClusterLabs/striker/master/tools/anvil-generate-iso
chmod 755 anvil-generate-iso
</syntaxhighlight>
 
'''Optional'''
 
If you plan to install from a USB drive, download <span class="code">[https://raw.githubusercontent.com/ClusterLabs/striker/master/tools/anvil-usb-installer anvil-usb-installer]</span> as well.
 
<syntaxhighlight lang="bash">
https://raw.githubusercontent.com/ClusterLabs/striker/master/tools/anvil-usb-installer
chmod 755 anvil-usb-installer
</syntaxhighlight>
 
=== Install Dependencies ===
 
The ISO generator requires a few program to work properly. So we'll install them now:
 
For [[EL6]] and [[EL7]]:
 
<syntaxhighlight lang="bash">
yum install createrepo genisoimage git libcdio
</syntaxhighlight>
 
For [[Fedora]]:
 
<syntaxhighlight lang="bash">
dnf install createrepo genisoimage git libcdio
</syntaxhighlight>
 
=== Build the ISO ===
 
{{note|1=This tool requires access to the Internet to work properly.}}
 
To build a RHEL-based ''Anvil!'' ISO, run:
 
<syntaxhighlight lang="bash">
./anvil-generate-iso --source ./rhel-server-6.8-x86_64-dvd.iso
</syntaxhighlight>
 
To build a CentOS-based ''Anvil!'' ISO, run:
 
<syntaxhighlight lang="bash">
./anvil-generate-iso --source ./CentOS-6.7-x86_64-bin-DVD1.iso,./CentOS-6.7-x86_64-bin-DVD2.iso
</syntaxhighlight>
 
(Note that both CentOS ISOs are listed with a ',' separating them).
 
Once the ISO generation starts, the process is the same for both types.
 
{{note|1=The ''Anvil!'' ISO generator will, if you allow it, download and include third party tools, like hardware management tools. This requires reading and accepting the third party terms of use. The exact list of third part applications will grow and change as we receive feedback from testers and users.}}
 
License agreements are important, so please do read them before proceeding.
 
Once your agree or decline the third party tools, the generation will start.
 
RHEL output:
 
<syntaxhighlight lang="text">
- Generating md5sum of the source: [./rhel-server-6.8-x86_64-dvd.iso], please wait a moment...
- The source ISO is: [RHEL 6.8, Disk 1].
- The working directory: [/home/digimer/Temp/test/anvil/RHEL] doesn't exist.
- Can I create it (and needed subdirectories) now? [Y/n] y
</syntaxhighlight>
 
CentOS output:
 
<syntaxhighlight lang="text">
- Generating md5sum of the source: [./CentOS-6.7-x86_64-bin-DVD1.iso], please wait a moment...
- The source ISO is: [CentOS 6.7, Disk 1].
- Generating md5sum of the source: [./CentOS-6.7-x86_64-bin-DVD2.iso], please wait a moment...
- The source ISO is: [CentOS 6.7, Disk 2].
- The working directory: [/home/digimer/Temp/test/anvil/CentOS] doesn't exist.
- Can I create it (and needed subdirectories) now? [Y/n]
</syntaxhighlight>
 
In the example here, the ISO tools will create a build directory called  <span class="code">/home/digimer/Temp/test/anvil/CentOS</span>, if you allow it to do so.
 
The rest of the build will be automated.
 
RHEL output (CentOS output is nearly identical);
 
<syntaxhighlight lang="text">
- Thank you, proceeding now.
- Creating the directory: [/home/digimer/Temp/test/anvil]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/Tools]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/ks]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/Packages]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/Tools/striker]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/Tools/fence]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/Tools/Fujitsu]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/Tools/ASIX]
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/Tools/Avago]
- The source ISO: [./rhel-server-6.8-x86_64-dvd.iso] was found to be mounted at: [/mnt/iso2].
- Reading the contents of the ISO: [./rhel-server-6.8-x86_64-dvd.iso] now...
- Done. Read in: [6000] files across: [134] directories.
- Found: [4024] source packages.
- Please be patient!
- We're looking through the source ISO(s) to find which installation packages
  are needed. This can take a minute.
- Ready to copy files!
- Packages copied. Copying auxiliary source files now.
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/EFI]
...
<snip lots of directories>
...
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/repodata]
- Verifying 'syslinux' was created.
- The 'syslinux' directory was not in the source. Creating it now, if needed.
- Creating the directory: [/home/digimer/Temp/test/anvil/RHEL/source/syslinux]
- Auxiliary files now in place, ready to grab Anvil! files.
- Cloning the Striker git repository.
  Please be patient, this might take a minute...
Cloning into 'striker'...
remote: Counting objects: 12302, done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 12302 (delta 72), reused 0 (delta 0), pack-reused 12183
Receiving objects: 100% (12302/12302), 104.86 MiB | 6.92 MiB/s, done.
Resolving deltas: 100% (8478/8478), done.
Checking connectivity... done.
- Striker source is ready.
- Downloading packages from the Alteeve's Niche! repository now.
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Avago/MegaCli-8.07.14-1.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Fujitsu/SVSystemMonitor-7.00-10.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Fujitsu/ServerViewConnectorService-1.30.00-02.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/alteeve-repo-0.1-3.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/bash-completion-1.3-7.el6.anvil.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/drbd84-utils-8.9.5-1.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/kmod-drbd84-8.4.7-1_1.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/mtr-gtk-0.75-5.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/ntfs-3g-2015.3.14-2.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/ntfsprogs-2015.3.14-2.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/pcp-gui-3.10.3-3.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/perl-Algorithm-Diff-1.1903-1.rhel6.anvil.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/perl-Net-SSH2-0.53-4.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/perl-Text-Diff-1.37-2.1.el6.anvil.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/perl-XML-Simple-2.20-1.el6.anvil.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/postgresql95-contrib-9.5.0-1PGDG.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/postgresql95-libs-9.5.0-1PGDG.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/postgresql95-plperl-9.5.0-1PGDG.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/postgresql95-server-9.5.0-1PGDG.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/postgresql95-9.5.0-1PGDG.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/x86_64/sharutils-4.7-6.1.el6.anvil.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/shorewall-core-4.6.11.1-1.el6.anvil.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/shorewall-4.6.11.1-1.el6.anvil.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Fujitsu/srv-cimprovider-7.00-10.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Fujitsu/srvmagt-agents-7.00-10.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Fujitsu/srvmagt-eecd-7.00-10.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Fujitsu/srvmagt-mods_src-7.00-10.x86_64.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Avago/storcli-1.18.05-1.noarch.rpm]
- Downloading: [https://alteeve.ca/an-repo/el6/RPMS/noarch/syslinux-tftpboot-4.04-3.el6.noarch.rpm]
- Done! All Anvil! packages are in place.
- Downloading non-RPM third party tools.
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/ASIX/AX88179_178A_LINUX_DRIVER_v1.14.4_SOURCE.zip]
- Downloading: [https://alteeve.ca/an-repo/el6/Third_Party/Fujitsu/PrimeCollect.shar]
- Downloading: [https://raw.githubusercontent.com/digimer/fence_raritan_snmp/master/fence_raritan_snmp]
- Downloading: [https://alteeve.ca/files/vm.sh]
- New ISO generated.
- All done!
 
The ISO file: [/home/digimer/Temp/test/anvil/Anvil_m2_RHEL_6.8_alpha.iso] (1.12 GiB) has been generated!
</syntaxhighlight>
 
Ding! Dinner is ready!
 
You can now either burn the <span class="code">Anvil_m2_RHEL_6.8_alpha.iso</span> (or <span class="code">Anvil_m2_CentOS_6.7_alpha.iso</span>) ISO to a DVD disk.
 
=== Optional: Create a USB Boot Drive ===
 
{{note|1=This script must be run as the '<span class="code">root</span>' user (or via '<span class="code">sudo</span>').}}
 
If you don't have an optical drive on the machine you plan to make a ''Striker'' dashboard, then you can use <span class="code">anvil-usb-installer</span>.
 
We'll need a few more programs for this tool.
 
For [[EL6]] and [[EL7]]:
 
<syntaxhighlight lang="bash">
yum install mkdosfs parted rsync syslinux udevadm
</syntaxhighlight>
 
For [[Fedora]]:
 
<syntaxhighlight lang="bash">
dnf install mkdosfs parted rsync syslinux udevadm
</syntaxhighlight>
 
{{warning|1=This project will completely wipe all data from the target storage device. Be certain you are pointing <span class="code">anvil-usb-installer</span> at the right target!}}
 
In my case, my USB drive came up as <span class="code">/dev/sdb</span> and I am building a [[RHEL]] version, so the command I will run is:
 
<syntaxhighlight lang="text">
-=] Anvil! USB Installer
- USB device path: ..... [/dev/sdb]
- Target make and model: [TOSHIBA Y2OBY31XF]
- The capacity is: ..... [465.76 GiB (500.11 GB)]
- The source ISO is: ... [./anvil/Anvil_m2_RHEL_6.8_alpha.iso]
=======================================================================
[ WARNING ] - This device will be completely erased! All existing data
[ WARNING ]  will be lost!
=======================================================================
Proceed? [y/N]
</syntaxhighlight>
 
'''Verify this is the drive you want to overwrite!'''
 
If so, press '<span class="code">y</span>' and hit '<span class="code"><enter></span>'.
 
<syntaxhighlight lang="text">
- Thank you, Proceeding
- Unmounting: [/dev/sdb1]
- Success!
- Wiping out existing partition scheme and MBR from: [/dev/sdb]
- Creating a new partition.
- Verifying that the new partition was created successfully.
- Formatting the new partition: [/dev/sdb1]
- Writing out the master boot record to: [/dev/sdb]
- Installing syslinux on: [/dev/sdb1]
- Creating the temporary USB mount point: [/tmp/anvil_usb]
- Creating the temporary ISO mount point: [/tmp/anvil_iso]
- Mounting the USB partition: [/dev/sdb1] on: [/tmp/anvil_usb]
- Mounting the source ISO: [./anvil/Anvil_m2_RHEL_6.8_alpha.iso]
  on: [/tmp/anvil_iso]
- Verifying they mounted.
- Verifying that everything we're about to copy is under 4 GiB for 'vfat'
  compatibility.
- Copying the source ISO contents to the USB device.
- Protecting the USB drive in case 'striker-usb-insert' is set to force-initialize.
- Copying the source ISO to the USB drive. This might take a bit, please be
  patient!
- Copying the 'syslinux' files into place.
- Cleaning up, please wait while the USB drive is finalized!
  If the OS cached data being written to the USB, this might take a bit.
- Unmounting: [/tmp/anvil_iso]
- Removing the temporary mount point: [/tmp/anvil_iso]
- Unmounting: [/tmp/anvil_usb]
- Removing the temporary mount point: [/tmp/anvil_usb]
Done!
 
Plug the USB drive into the machine you wish to make a Striker dashboard. Press
the key for you system to manually select a boot device (usually <F10> or
<F12>) and choose this USB drive. Select the appropriate Striker number from
the menu.
 
NOTE: The Install performed by this USB drive is fully automated, once started.
      Any data on the target machine will be erased without further warning!
     
Have fun!
</syntaxhighlight>
 
All done!
 
== Building The First Striker Dashboard ==
 
The first dashboard will be booted off of either the DVD or USB drive. How exactly you do this will depend on your hardware, so please consult your machine's service manual for instructions on how to choose a temporary boot device.
 
== Hardware Requirements ==
 
The Striker dashboard has fairly modest system requirements. The only hard requirement is that the machine can run RHEL or CentOS 6 and that it has two network interfaces (wireless is NOT supported).
 
The recommended minimum configuration is:
 
* Intel Core i5 v5 (or AMD equivalent) or newer CPU
* 8 GiB of RAM
* 128 GiB SSD
* 4x 1 Gbps NICs
 
The above specs will provide plenty of performance for hosting the ScanCore database as well as provide network redundancy on both the [[Back-Channel Network]] and the [[Intranet-Facing Network]].
 
 
 
<span class="code"></span>
<syntaxhighlight lang="bash">
</syntaxhighlight>
<syntaxhighlight lang="text">
</syntaxhighlight>
 
 
 
=== Requirements ===
 
* A machine with two wired network interfaces, one to the [[BCN]] and one to the [[IFN]].
* [[RHEL]], [[CentOS]] or similar version 6.x (6.5 or higher recommended).
** Minimal install is sufficient, provided you install <span class="code">perl</span>.
** The installer will install everything else it needs.
 
<syntaxhighlight lang="bash">
</syntaxhighlight>
<syntaxhighlight lang="text">
</syntaxhighlight>
 
 
{{warning|1=Below here is incomplete.}}
 
{|class="wikitable"
!Parameter
!Switch
!Value
!Description
|-
|[[Back-Channel Network]]
|class="code"|-b
|class="code"|10.20.4.3/16
|Sets the [[BCN]] IP address and subnet mask.
|-
|[[Internet-Facing Network]]
|class="code"|-i
|class="code"|10.255.4.3/16,dg=10.255.255.254,dns1=8.8.8.8,dns2=8.8.4.4
|Sets the [[IFN]] IP address, subnet mask, default gateway and DNS servers.
|-
|Host name
|class="code"|-n
|class="code"|an-m03.alteeve.ca
|Sets the host name of the Striker dashboard machine.
|-
|Dashboard Owner
|class="code"|-c
|class="code"|Alteeve's Niche!
|This sets the name used on the password prompt when connecting to the dashboard. It reflects the owner/manager of the dashboard and is usually a company or organization name.
|-
|Striker user and password
|class="code"|-u
|class="code"|admin:another secret password
|This sets the user name and password that users will use when connecting to the dashboard. {{note|1=The password defined here will be used to set the <span class="code">root</span> user's password on the Striker dashboard itself. If you want these passwords to be different, please be sure to change it when the installer finished running.}}
|}
 
{{note|1=If you have already configured the network, please skip the <span class="code">-b</span> and <span class="code">-i</span> switches. If you have already configured the host name, please skip the <span class="code">-n</span> switch.}}
 
{{note|1=This is a standard <span class="code">[[bash]]</span> call, so please be sure to quote anything with spaces and to escape special characters like <span class="code">!</span>.}}
 
Knowing this, the installer command will be:
 
<syntaxhighlight lang="bash">
./striker-installer \
  -b 10.20.4.3/16 \
  -i 10.255.4.3/16,dg=10.255.255.254,dns1=8.8.8.8,dns2=8.8.4.4 \
  -n an-m03.alteeve.ca \
  -c "Alteeve's Niche\!" \
  -u "admin:another secret password"
</syntaxhighlight>


{{footer}}
{{footer}}

Revision as of 23:34, 21 May 2016

 AN!Wiki :: Striker

Warning: This is an in-progress document. Do not expect anything here to be accurate or correct. This warning will be removed when the guide is completed. You can track the progress on Striker's Github page.

Striker is the Anvil! web-based dashboard.

It's goal is to reduce the potential for human errors causing availability interruptions by simplifying the interface as much as possible. With it, you can build, maintain and replace other dashboards and Anvil! nodes, as well as build Anvil!' systems from scratch.

Striker dashboards also act as a ScanCore database. Two or more Striker dashboards will work together to make the ScanCore data resilient by handling replication of the data and n-way resync automatically to update new or rebooted dashboards.

 

Any questions, feedback, advice, complaints or meanderings are welcome.
Alteeve's Niche! Enterprise Support:
Alteeve Support
Community Support
© Alteeve's Niche! Inc. 1997-2024   Anvil! "Intelligent Availability®" Platform
legal stuff: All info is provided "As-Is". Do not use anything here unless you are willing and able to take responsibility for your own actions.