Striker

From Alteeve Wiki
Jump to navigation Jump to search

 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.

Building an Anvil

With version 2, perhaps the biggest new feature is the nearly completely automated building of new Anvil! systems.

Note: 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.

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: We've tested this tool on Fedora, RHEL and CentOS operating systems. It may not work on other distributions. If you have trouble, please contact us and we'll work to extend support to new distros.

The build process is pretty simple;

  1. Download the RHEL or CentOS 6 DVD ISO.
    1. CentOS x86_64 v6
    2. RHEL x86_64 v6 (try or buy)
  2. Download anvil-generate-iso.
  3. Install dependencies.
  4. Build the Anvil! ISO.
  5. (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: When version 2 is officially released, the download location will change from github to alteeve.ca proper.

Download the tool:

wget -c https://raw.githubusercontent.com/ClusterLabs/striker/master/tools/anvil-generate-iso
chmod 755 anvil-generate-iso

Optional

If you plan to install from a USB drive, download anvil-usb-installer as well.

https://raw.githubusercontent.com/ClusterLabs/striker/master/tools/anvil-usb-installer
chmod 755 anvil-usb-installer

Install Dependencies

The ISO generator requires a few program to work properly. So we'll install them now:

For EL6 and EL7:

yum install createrepo genisoimage git libcdio

For Fedora:

dnf install createrepo genisoimage git libcdio

Build the ISO

Note: This tool requires access to the Internet to work properly.

To build a RHEL-based Anvil! ISO, run:

./anvil-generate-iso --source ./rhel-server-6.8-x86_64-dvd.iso

To build a CentOS-based Anvil! ISO, run:

./anvil-generate-iso --source ./CentOS-6.7-x86_64-bin-DVD1.iso,./CentOS-6.7-x86_64-bin-DVD2.iso

(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: 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:

- 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

CentOS output:

- 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]

In the example here, the ISO tools will create a build directory called /home/digimer/Temp/test/anvil/CentOS, if you allow it to do so.

The rest of the build will be automated.

RHEL output (CentOS output is nearly identical);

- 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!

Ding! Dinner is ready!

You can now either burn the Anvil_m2_RHEL_6.8_alpha.iso (or Anvil_m2_CentOS_6.7_alpha.iso) ISO to a DVD disk.

Optional: Create a USB Boot Drive

Note: This script must be run as the 'root' user (or via 'sudo').

If you don't have an optical drive on the machine you plan to make a Striker dashboard, then you can use anvil-usb-installer.

We'll need a few more programs for this tool.

For EL6 and EL7:

yum install mkdosfs parted rsync syslinux udevadm

For Fedora:

dnf install mkdosfs parted rsync syslinux udevadm
Warning: This project will completely wipe all data from the target storage device. Be certain you are pointing anvil-usb-installer at the right target!

In my case, my USB drive came up as /dev/sdb and I am building a RHEL version, so the command I will run is:

-=] 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]

Verify this is the drive you want to overwrite!

If so, press 'y' and hit '<enter>'.

- 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!

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.



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 perl.
    • The installer will install everything else it needs.


Warning: Below here is incomplete.
Parameter Switch Value Description
Back-Channel Network -b 10.20.4.3/16 Sets the BCN IP address and subnet mask.
Internet-Facing Network -i 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 -n an-m03.alteeve.ca Sets the host name of the Striker dashboard machine.
Dashboard Owner -c 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 -u admin:another secret password This sets the user name and password that users will use when connecting to the dashboard.
Note: The password defined here will be used to set the root 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: If you have already configured the network, please skip the -b and -i switches. If you have already configured the host name, please skip the -n switch.
Note: This is a standard bash call, so please be sure to quote anything with spaces and to escape special characters like !.

Knowing this, the installer command will be:

./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\!" \
  -e "digimer@example.com:super secret password" \
  -m mail.example.com:587 \
  -u "admin:another secret password"

 

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.