This commit starts the move to RHEL8 from Fedora 28.

* The 'notes' file has a lot of RHEL8 migration notes added, including RPM build orders.
* The anvil.spec file has switched the source from 'master.tar.gz' to 'anvil-3.0b.tar.gz' and moved the source to our webserver. Updated the dependencies as well.
* Updated anvil.sql to add the 'anvils' table and fixed some SQL schema problems.

Signed-off-by: Digimer <digimer@alteeve.ca>
main
Digimer 6 years ago
parent 02c4fe1fa1
commit d2c812ee03
  1. 359
      notes
  2. 711
      rpm/SPECS/anvil.spec
  3. 62
      share/anvil.sql
  4. 25
      tools/anvil-daemon

359
notes

@ -1,5 +1,13 @@
NEXT; - NEXT; -
RHEL 8 package changes:
chrony replaces ntp
cockpit replaces virt-manager (deprecated)
e1000e replaces e1000 driver
tmux replaces screen
iproute2 replaces bridge-utils (See "ip link" and man bridge.)
==] UEFI Setup [====================================================================== ==] UEFI Setup [======================================================================
ignoredisk --only-use=vdb,vda ignoredisk --only-use=vdb,vda
clearpart --none --initlabel clearpart --none --initlabel
@ -29,6 +37,43 @@ DOCS; -
==== ====
Network planning;
10.x.y.z / 255.255.0.0
10.x.y.z / 255.255.0.0
x = Network;
- BCN = 200 + network
ie: BCN1 = 10.201.y.z
BCN2 = 10.202.y.z
- SN = 100 + network
ie: SN1 = 10.101.y.z
SN2 = 10.102.y.z
y = Device Type.
Foudation Pack;
1. Switches
2. PDUs
3. UPSes
4. Switches
5. Strikers
6. Striker IPMI (BCN only)
Anvil! systems;
1st - 10 = Node IP
11 = Node IPMI
2nd - 12 = Node IP
13 = Node IPMI
3rd - 14 = Node IP
15 = Node IPMI
N...
z = Device Sequence
- Foundation pack devices are simple sequence
- Anvils; .1 = node 1, .2 = node 2, .3 = DR host
====
Ports we care about Ports we care about
Porto Number Used by Nets Description Porto Number Used by Nets Description
@ -834,3 +879,317 @@ pcs;
- Requires pacemaker 2.x install - Requires pacemaker 2.x install
git tag git tag
git checkout <0.10.x> git checkout <0.10.x>
====
Building 3rd party tools
dnf -y install bzip2-devel corosynclib-devel docbook-style-xsl gnutls-devel help2man libqb-devel libtool libtool-ltdl-devel libuuid-devel libxml2-devel libxslt-devel ncurses-devel pam-devel
==========
Build Dependency chain;
perl-Log-Log4perl
perl-Log-Dispatch-FileRotate
perl-MIME-Lite
==========
RPM build order
--- Install from RHEL repos;
- Groups;
dnf group install development rpm-development-tools
- Packages
dnf install bash-completion bind-utils dnf-utils firefox gdm libgcrypt-devel libutempter-devel libvirt-bash-completion ncurses-devel openssl-devel pam-devel perl-Capture-Tiny perl-Devel-CheckLib perl-Digest-SHA1 perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-HTML-Parser \
perl-IO-stringy perl-MailTools perl-Module-Build perl-Module-Install perl-Module-Install-AutoLicense perl-Module-Install-ReadmeFromPod perl-Net-DNS perl-Test-Exception perl-Test-Simple perl-Test-Pod perl-Test-Pod-Coverage \
perl-Test2-Suite rpm-build systemd-devel texinfo virt-manager wget \
perl-Params-ValidationCompiler perl-Dist-CheckConflicts perl-namespace-autoclean perl-Test-Fatal perl-Devel-GlobalDestruction perl-IPC-Run3 perl-Specio perl-Sys-Syslog mod_perl postfix perl-DBI perl-IPC-SysV perl-Test perl-Filter rrdtool-perl perl-Test-Warn perl-Date-Manip \
perl-MIME-Types python36 docbook-style-xsl libxslt flex kernel-devel
- Uninstall
dnf remove biosdevname
--- First round of builds;
* anvil
* anvil-striker-extra
* libssh2 # NOTE! Make sure this comes from F29 (1.8.0-8). The version from RHEL doesn't offer -devel, they say it's deprecated (??). May need to update or replace perl-Net-SSH2
* perl-Email-Date-Format
* perl-Exporter-Lite
* perl-HTML-Strip
* perl-IO-CaptureOutput
* perl-Log-Journald
* perl-Mail-Sender
* perl-Mail-Sendmail
* perl-Module-Install-GithubMeta
* perl-Net-Domain-TLD
* perl-Proc-Simple
* perl-Test-Needs
* perl-Test-UseAllModules
* perl-UUID-Tiny
* screen
--- Second round of builds;
rpm -Uvh libssh2 (won't update from 1.8.0-7 from RHEL8 repo to our 1.8.0-8 via dnf update for some reason)
dnf install perl-IO-CaptureOutput perl-Exporter-Lite perl-Module-Install-GithubMeta perl-Net-Domain-TLD perl-Test-UseAllModules perl-Mail-Sender perl-Mail-Sendmail perl-Test-Needs perl-Email-Date-Format
* perl-Email-Valid
* perl-MIME-Lite
* perl-Module-Install-AutoLicense
* perl-Net-Netmask
--- Third round of builds;
dnf install perl-Email-Valid erl-Module-Install-AutoLicense perl-MIME-Lite
* perl-Email-Find
* perl-Log-Dispatch
* perl-Module-Install-CheckLib
--- Fourth round of builds;
dnf install perl-Email-Find perl-Module-Install-CheckLib perl-Log-Dispatch
* perl-HTML-FromText
* perl-Log-Dispatch-FileRotate
* perl-Net-SSH2
--- Fifth round of builds;
dnf install perl-Log-Dispatch
* perl-Log-Log4perl
====== try1
1. dnf install asciidoc bind-utils bison byacc cmake dos2unix freeglut-devel freetype-devel gcc-c++ gd-devel gettext-devel ghostscript graphviz gtk2-devel inkscape libGLU-devel libX11-devel libXext-devel libXi-devel libXmu-devel \
libXt-devel libgcrypt-devel libjpeg-devel libpng-devel librsvg2-devel libtiff-devel libtool libtool-ltdl-devel libwebp-devel libxml2-devel lpr mesa-libGL-devel openssl-devel perl "perl(Devel::PPPort)" "perl(Env)" \
"perl(ExtUtils::CBuilder)" "perl(File::HomeDir)" perl-File-Remove "perl(File::ShareDir)" "perl(File::Which)" "perl(Locale::Messages)" "perl(Mail::Address)" "perl(Module::Build)" "perl(Module::Pluggable)" \
"perl(Module::Runtime)" "perl(Net::DNS)" "perl(Term::ReadKey)" "perl(Test)" "perl(Test::Simple)" "perl(Text::Diff)" "perl(Try::Tiny)" "perl(YAML)" "perl(autodie)" perl-Devel-Peek perl-Pod-Parser perl-Text-Glob \
perl-generators "pkgconfig(dbus-1)" "pkgconfig(glib-2.0)" publican python3-devel python3-devel python36 qt5-qtbase-devel systemd-devel texlive-epstopdf "tex(adjustbox.sty)" "tex(appendix.sty)" "tex(dvips)" \
"tex(import.sty)" "tex(latex)" "tex(multirow.sty)" "tex(sectsty.sty)" "tex(tabu.sty)" "tex(tocloft.sty)" "tex(xtab.sty)" time valgrind wget xdg-user-dirs xdg-utils xmlto xz-devel zip2-devel zlib-devel
=================
* csnappy
* doxygen
* fpaste
* giflib
* gtest
* help2man
* htop
* jbigkit
* lcms2
* libssh2
* libutempter
* libwmf
* perl-Capture-Tiny
* perl-Class-XSAccessor
* perl-Config-Tiny
* perl-Class-Data-Inheritable
* perl-Class-Tiny
* perl-Devel-CheckBin
* perl-Devel-Hide
* perl-Devel-StackTrace
* perl-Digest-SHA1
* perl-Encode
* perl-ExtUtils-Depends
* perl-Exporter-Lite
* perl-ExtUtils-Config
* perl-ExtUtils-Helpers
* perl-ExtUtils-PkgConfig
* perl-File-BaseDir
* perl-File-ReadBackwards
* perl-File-Remove
* perl-File-Type
* perl-Import-Into
* perl-Importer
* perl-IO-CaptureOutput
* perl-IO-String
* perl-IO-stringy
* perl-Log-Journald
* perl-Mock-Config
* perl-Module-Install-ExtraTests
* perl-Module-Pluggable
* perl-Net-Domain-TLD
* perl-Number-Compare
* perl-PadWalker
* perl-Perl-Destruct-Level
* perl-Probe-Perl
* perl-Proc-Simple
* perl-Scope-Guard
* perl-File-ShareDir-Install
* perl-Lingua-EN-Inflect
* perl-strictures
* perl-String-Format
* perl-Sub-Exporter-Progressive
* perl-Sub-Identify
* perl-Sub-Uplevel
* perl-Taint-Runtime
* perl-Task-Weaken
* perl-Term-Size-Perl
* perl-Test-Deep
* perl-Test-Fatal
* perl-Test-InDistDir
* perl-Test-Object
* perl-Test-Pod
* perl-Test-Requires
* perl-Test-Warnings
* perl-Test-Without-Module
* perl-YAML-LibYAML
* perl-YAML-Syck
* perltidy
* yasm
2. dnf install csnappy doxygen fpaste giflib gtest help2man htop jbigkit lcms2 libssh2 libutempter libwmf perl-Capture-Tiny perl-Class-XSAccessor perl-Config-Tiny perl-Class-Data-Inheritable perl-Class-Tiny perl-Devel-CheckBin \
perl-Devel-Hide perl-Devel-StackTrace perl-Digest-SHA1 perl-Encode perl-ExtUtils-Depends perl-Exporter-Lite perl-ExtUtils-Config perl-ExtUtils-Helpers perl-ExtUtils-PkgConfig perl-File-BaseDir perl-File-ReadBackwards \
perl-File-Remove perl-File-Type perl-Import-Into perl-Importer perl-IO-CaptureOutput perl-IO-String perl-IO-stringy perl-Log-Journald perl-Mock-Config perl-Module-Install-ExtraTests perl-Module-Pluggable \
perl-Net-Domain-TLD perl-Number-Compare perl-PadWalker perl-Perl-Destruct-Level perl-Probe-Perl perl-Proc-Simple perl-Scope-Guard perl-File-ShareDir-Install perl-Lingua-EN-Inflect perl-strictures perl-String-Format \
perl-Sub-Exporter-Progressive perl-Sub-Identify perl-Sub-Uplevel perl-Taint-Runtime perl-Task-Weaken perl-Term-Size-Perl perl-Test-Deep perl-Test-Fatal perl-Test-InDistDir perl-Test-Object perl-Test-Pod \
perl-Test-Requires perl-Test-Warnings perl-Test-Without-Module perl-YAML-LibYAML perl-YAML-Syck perltidy yasm
jasper
libdatrie
libthai
libtiff
* p7zip
perl-B-Hooks-EndOfScope
perl-B-Keywords
perl-Class-Method-Modifiers
perl-Clone
perl-Devel-CheckLib
perl-Devel-Cycle
perl-Devel-EnforceEncapsulation
perl-Devel-GlobalDestruction
perl-Devel-Symdump
perl-Dist-CheckConflicts
perl-Email-Find
perl-Email-Valid
perl-Encode-EUCJPASCII
perl-Exception-Class
perl-Exporter-Tiny
perl-ExtUtils-InstallPaths
perl-File-DesktopEntry
perl-File-Find-Rule
perl-File-Find-Rule-Perl
perl-File-MimeInfo
perl-Font-TTF
perl-GD
perl-Getopt-ArgvFile
perl-Graphics-TIFF
perl-Hook-LexWrap
perl-HTML-FromText
perl-HTML-Strip
perl-IO-All
perl-List-MoreUtils
perl-List-MoreUtils-XS
perl-MCE
perl-MIME-Charset
perl-Module-Build-Tiny
perl-Module-Implementation
perl-Module-Install
perl-Module-Install-AuthorRequires
perl-Module-Install-AuthorTests
perl-Module-Install-AutoLicense
perl-Module-Install-CheckLib
perl-Module-Install-GithubMeta
perl-Module-Install-ManifestSkip
perl-Module-Install-ReadmeFromPod
perl-Module-Install-Repository
perl-Module-Package
perl-Module-Package-Au
perl-Moo
perl-namespace-autoclean
perl-namespace-clean
perl-Net-Netmask
perl-Net-SSH2
perl-Package-Stash
perl-Package-Stash-XS
perl-Paper-Specs
perl-Path-Class
perl-Path-Tiny
perl-PDF-API2
perl-Perl-Critic
perl-Perl-Critic-Deprecated
perl-Perl-Critic-More
perl-Perl-MinimumVersion
perl-pod2pdf
perl-Pod-Coverage
perl-Pod-Markdown
perl-Pod-Spell
perl-PPI
perl-PPIx-QuoteLike
perl-PPIx-Regexp
perl-PPIx-Utilities
perl-Readonly
perl-Role-Tiny
perl-Sereal
perl-Sereal-Decoder
perl-Sereal-Encoder
perl-Sub-Info
perl-Sub-Name
perl-Sub-Quote
perl-Term-Size-Any
perl-Term-Table
perl-Test-Differences
perl-Test-Exception
perl-Test-LongString
perl-Test-Memory-Cycle
perl-Test-Perl-Critic
perl-Test-Pod-Coverage
perl-Test-Script
perl-Test-SubCalls
perl-Test-UseAllModules
perl-Test-Warn
perl-Test2-Suite - Needs to be updated! Source from F29 isn't available easily
perl-Unicode-EastAsianWidth
perl-Unicode-LineBreak
perl-Unicode-UTF8
perl-UUID-Tiny
perl-Variable-Magic
perl-YAML-Tiny
screen
texinfo
zstd
3.
GraphicsMagick
miniz
perl-Image-Size
sombok
=======================================
cd SOURCES;
tar -xzvf $tarball (or xjvf, whatever);
tar -xzv -C package-digimer -f $tarball;
patch in *-digimer;
diff -uNr $package $package-digimer > ../SOURCES/whatever.patch
00:24 < Bahhumbug>
Burst the source tarball;
do it again but stash this copy in a *-digimer directory.
Do patching in the -digimer directory and when finished great a recursive unified diff and place the results directly in the named .patch file.
cd ~/rpmbuild/SOURCES
tar -xzvf htop-2.2.0.tar.gz
mv htop-2.2.0 htop-2.2.0-digimer
cd htop-2.2.0-digimer
# patch
diff -uNr htop-2.2.0 htop-2.2.0-digimer > whatever.patch
# Fabio's way
diff -Naurd htop-2.2.0 htop-2.2.0-digimer > htop_python3_MakeHeader.patch

@ -8,7 +8,7 @@ Summary: Alteeve Anvil! complete package.
License: GPLv2+ License: GPLv2+
URL: https://github.com/digimer/anvil URL: https://github.com/digimer/anvil
Source0: https://github.com/digimer/anvil/archive/master.tar.gz Source0: https://www.alteeve.com/an-repo/el8b/files/anvil-3.0b.tar.gz
BuildArch: noarch BuildArch: noarch
@ -21,6 +21,7 @@ WARNING: This is an alpha-stage project. Many features are missing and this
should not be used for anything other than development purposes! The should not be used for anything other than development purposes! The
first stable release will be 3.1. Anything 3.0 is UNSTABLE. first stable release will be 3.1. Anything 3.0 is UNSTABLE.
# TODO: Add back htop
%package core %package core
Summary: Alteeve's Anvil! Core package Summary: Alteeve's Anvil! Core package
Requires: bash-completion Requires: bash-completion
@ -33,6 +34,7 @@ Requires: firewalld
Requires: gpm Requires: gpm
Requires: hdparm Requires: hdparm
Requires: htop Requires: htop
Requires: iproute
Requires: lsscsi Requires: lsscsi
Requires: mlocate Requires: mlocate
Requires: perl-Data-Dumper Requires: perl-Data-Dumper
@ -56,7 +58,7 @@ Requires: postfix
Requires: postgresql-contrib Requires: postgresql-contrib
Requires: postgresql-plperl Requires: postgresql-plperl
Requires: rsync Requires: rsync
#Requires: screen Requires: screen
Requires: vim Requires: vim
# iptables-services conflicts with firewalld # iptables-services conflicts with firewalld
Conflicts: iptables-services Conflicts: iptables-services
@ -69,11 +71,12 @@ Common base libraries required for the Anvil! system.
%package striker %package striker
Summary: Alteeve's Anvil! Striker dashboard package Summary: Alteeve's Anvil! Striker dashboard package
Requires: anvil-core Requires: anvil-core
Requires: anvil-striker-extra Requires: anvil-striker-extra
Requires: createrepo Requires: createrepo
Requires: dhcp-server Requires: dhcp-server
Requires: firefox Requires: firefox
Requires: gdm
Requires: httpd Requires: httpd
Requires: kernel-core Requires: kernel-core
Requires: nmap Requires: nmap
@ -83,676 +86,6 @@ Requires: syslinux
Requires: syslinux-nonlinux Requires: syslinux-nonlinux
Requires: tftp-server Requires: tftp-server
Requires: virt-manager Requires: virt-manager
### Desktop stuff
Requires: GConf2
Requires: ModemManager-glib
Requires: NetworkManager-libnm
Requires: NetworkManager-team
Requires: NetworkManager-tui
Requires: NetworkManager-wifi
Requires: NetworkManager
Requires: abattis-cantarell-fonts
Requires: accountsservice-libs
Requires: accountsservice
Requires: acl
Requires: adwaita-cursor-theme
Requires: adwaita-gtk2-theme
Requires: adwaita-icon-theme
Requires: alsa-lib
Requires: annobin
Requires: at-spi2-atk
Requires: at-spi2-core
Requires: atk
Requires: audit-libs
Requires: audit
Requires: authselect-libs
Requires: authselect
Requires: avahi-glib
Requires: avahi-libs
Requires: basesystem
Requires: bash-completion
Requires: bash
Requires: bind-export-libs
Requires: binutils
Requires: biosdevname
Requires: bluez-libs
Requires: bluez-obexd
Requires: bluez
Requires: bolt
Requires: brotli
Requires: bubblewrap
Requires: bzip2-libs
Requires: bzip2
Requires: c-ares
Requires: ca-certificates
Requires: cairo-gobject
Requires: cairo
Requires: cheese-libs
Requires: chkconfig
Requires: clutter-gst3
Requires: clutter-gtk
Requires: clutter
Requires: cogl
Requires: color-filesystem
Requires: colord-gtk
Requires: colord-libs
Requires: colord
Requires: coreutils-common
Requires: coreutils
Requires: cpio
Requires: cpp
Requires: cracklib-dicts
Requires: cracklib
Requires: createrepo_c-libs
Requires: createrepo_c
Requires: cronie-anacron
Requires: cronie
Requires: crontabs
Requires: crypto-policies
Requires: cryptsetup-libs
Requires: cups-libs
Requires: cups-pk-helper
Requires: curl
Requires: cyrus-sasl-lib
Requires: dbus-common
Requires: dbus-daemon
Requires: dbus-glib
Requires: dbus-libs
Requires: dbus-tools
Requires: dbus-x11
Requires: dbus
Requires: dconf
Requires: desktop-file-utils
Requires: device-mapper-event-libs
Requires: device-mapper-event
Requires: device-mapper-libs
Requires: device-mapper-persistent-data
Requires: device-mapper
Requires: dhcp-client
Requires: dhcp-common
Requires: dhcp-libs
Requires: diffutils
Requires: dmidecode
Requires: dnf-data
Requires: dnf-plugin-subscription-manager
Requires: dnf-plugins-core
Requires: dnf
Requires: dracut-config-rescue
Requires: dracut-network
Requires: dracut-squash
Requires: dracut
Requires: drpm
Requires: dwz
Requires: e2fsprogs-libs
Requires: e2fsprogs
Requires: efi-srpm-macros
Requires: elfutils-default-yama-scope
Requires: elfutils-libelf
Requires: elfutils-libs
Requires: elfutils
Requires: emacs-filesystem
Requires: enchant
Requires: ethtool
Requires: evolution-data-server-langpacks
Requires: evolution-data-server
Requires: expat
Requires: file-libs
Requires: file
Requires: filesystem
Requires: findutils
Requires: fipscheck-lib
Requires: fipscheck
Requires: firewalld-filesystem
Requires: firewalld
Requires: flac-libs
Requires: fontconfig
Requires: fontpackages-filesystem
Requires: freetype
Requires: fribidi
Requires: fuse-libs
Requires: gawk
Requires: gc
Requires: gcc
Requires: gcr
Requires: gdb-headless
Requires: gdbm-libs
Requires: gdbm
Requires: gdk-pixbuf2-modules
Requires: gdk-pixbuf2
Requires: gdm
Requires: geoclue2-libs
Requires: geoclue2
Requires: geocode-glib
Requires: geolite2-city
Requires: geolite2-country
Requires: gettext-libs
Requires: gettext
Requires: ghc-srpm-macros
Requires: gjs
Requires: glib-networking
Requires: glib2
Requires: glibc-common
Requires: glibc-devel
Requires: glibc-headers
Requires: glibc-langpack-en
Requires: glibc
Requires: glx-utils
Requires: gmp
Requires: gnome-bluetooth-libs
Requires: gnome-bluetooth
Requires: gnome-control-center-filesystem
Requires: gnome-control-center
Requires: gnome-desktop3
Requires: gnome-keyring-pam
Requires: gnome-keyring
Requires: gnome-online-accounts
Requires: gnome-session-wayland-session
Requires: gnome-session-xsession
Requires: gnome-session
Requires: gnome-settings-daemon
Requires: gnome-shell
Requires: gnome-themes-standard
Requires: gnupg2-smime
Requires: gnupg2
Requires: gnutls
Requires: go-srpm-macros
Requires: gobject-introspection
Requires: gpgme
Requires: gpm-libs
Requires: graphite2
Requires: grep
Requires: grilo
Requires: groff-base
Requires: grub2-common
Requires: grub2-pc-modules
Requires: grub2-pc
Requires: grub2-tools-extra
Requires: grub2-tools-minimal
Requires: grub2-tools
Requires: grubby
Requires: gsettings-desktop-schemas
Requires: gsm
Requires: gstreamer1-plugins-base
Requires: gstreamer1
Requires: gtk-update-icon-cache
Requires: gtk2
Requires: gtk3
Requires: guile
Requires: gzip
Requires: hardlink
Requires: harfbuzz-icu
Requires: harfbuzz
Requires: hdparm
Requires: hicolor-icon-theme
Requires: hostname
Requires: hunspell-en-GB
Requires: hunspell-en-US
Requires: hunspell-en
Requires: hunspell
Requires: hwdata
Requires: hyphen
Requires: ibus-gtk2
Requires: ibus-gtk3
Requires: ibus-libs
Requires: ibus-setup
Requires: ibus
Requires: iio-sensor-proxy
Requires: ima-evm-utils
Requires: info
Requires: initscripts
Requires: ipcalc
Requires: iproute
Requires: iprutils
Requires: ipset-libs
Requires: ipset
Requires: iptables-ebtables
Requires: iptables-libs
Requires: iptables
Requires: iputils
Requires: irqbalance
Requires: isl
Requires: iso-codes
Requires: iwl100-firmware
Requires: iwl1000-firmware
Requires: iwl105-firmware
Requires: iwl135-firmware
Requires: iwl2000-firmware
Requires: iwl2030-firmware
Requires: iwl3160-firmware
Requires: iwl3945-firmware
Requires: iwl4965-firmware
Requires: iwl5000-firmware
Requires: iwl5150-firmware
Requires: iwl6000-firmware
Requires: iwl6000g2a-firmware
Requires: iwl6050-firmware
Requires: iwl7260-firmware
Requires: jansson
Requires: jasper-libs
Requires: jbigkit-libs
Requires: json-c
Requires: json-glib
Requires: kbd-legacy
Requires: kbd-misc
Requires: kbd
Requires: kernel-headers
Requires: kernel-modules
Requires: kernel-tools-libs
Requires: kernel-tools
Requires: kernel
Requires: kexec-tools
Requires: keyutils-libs
Requires: kmod-libs
Requires: kmod
Requires: kpartx
Requires: krb5-libs
Requires: langpacks-en
Requires: lcms2
Requires: less
Requires: libICE
Requires: libSM
Requires: libX11-common
Requires: libX11-xcb
Requires: libX11
Requires: libXau
Requires: libXcomposite
Requires: libXcursor
Requires: libXdamage
Requires: libXdmcp
Requires: libXext
Requires: libXfixes
Requires: libXfont2
Requires: libXft
Requires: libXi
Requires: libXinerama
Requires: libXmu
Requires: libXrandr
Requires: libXrender
Requires: libXt
Requires: libXtst
Requires: libXv
Requires: libXxf86misc
Requires: libXxf86vm
Requires: libacl
Requires: libaio
Requires: libarchive
Requires: libassuan
Requires: libasyncns
Requires: libatomic_ops
Requires: libattr
Requires: libbabeltrace
Requires: libbasicobjects
Requires: libblkid
Requires: libcanberra-gtk3
Requires: libcanberra
Requires: libcap-ng
Requires: libcap
Requires: libcollection
Requires: libcom_err
Requires: libcomps
Requires: libcroco
Requires: libcurl
Requires: libdaemon
Requires: libdatrie
Requires: libdb-utils
Requires: libdb
Requires: libdhash
Requires: libdnf
Requires: libdrm
Requires: libedit
Requires: libepoxy
Requires: libestr
Requires: libevdev
Requires: libevent
Requires: libfastjson
Requires: libfdisk
Requires: libffi
Requires: libfontenc
Requires: libgcc
Requires: libgcrypt
Requires: libgdata
Requires: libglvnd-egl
Requires: libglvnd-gles
Requires: libglvnd-glx
Requires: libglvnd
Requires: libgnomekbd
Requires: libgomp
Requires: libgpg-error
Requires: libgtop2
Requires: libgudev
Requires: libgusb
Requires: libgweather
Requires: libical
Requires: libicu
Requires: libidn2
Requires: libimobiledevice
Requires: libini_config
Requires: libinput
Requires: libipt
Requires: libjpeg-turbo
Requires: libkcapi-hmaccalc
Requires: libkcapi
Requires: libksba
Requires: libldb
Requires: libmaxminddb
Requires: libmcpp
Requires: libmetalink
Requires: libmnl
Requires: libmodman
Requires: libmodulemd
Requires: libmount
Requires: libmpc
Requires: libndp
Requires: libnetfilter_conntrack
Requires: libnfnetlink
Requires: libnfsidmap
Requires: libnftnl
Requires: libnghttp2
Requires: libnl3-cli
Requires: libnl3
Requires: libnma
Requires: libnotify
Requires: libnsl2
Requires: liboauth
Requires: libogg
Requires: libpath_utils
Requires: libpcap
Requires: libpciaccess
Requires: libpipeline
Requires: libpkgconf
Requires: libplist
Requires: libpng
Requires: libproxy
Requires: libpsl
Requires: libpwquality
Requires: libquvi-scripts
Requires: libquvi
Requires: libref_array
Requires: librepo
Requires: libreport-filesystem
Requires: librhsm
Requires: librsvg2
Requires: libseccomp
Requires: libsecret
Requires: libselinux-utils
Requires: libselinux
Requires: libsemanage
Requires: libsepol
Requires: libsigsegv
Requires: libsmartcols
Requires: libsmbclient
Requires: libsndfile
Requires: libsolv
Requires: libsoup
Requires: libss
Requires: libssh
Requires: libsss_autofs
Requires: libsss_certmap
Requires: libsss_idmap
Requires: libsss_nss_idmap
Requires: libsss_sudo
Requires: libstdc++
Requires: libsysfs
Requires: libtalloc
Requires: libtasn1
Requires: libtdb
Requires: libteam
Requires: libtevent
Requires: libthai
Requires: libtheora
Requires: libtiff
Requires: libtirpc
Requires: libtool-ltdl
Requires: libunistring
Requires: libusbmuxd
Requires: libusbx
Requires: libuser
Requires: libutempter
Requires: libuuid
Requires: libverto
Requires: libvisual
Requires: libvorbis
Requires: libwacom-data
Requires: libwacom
Requires: libwayland-client
Requires: libwayland-cursor
Requires: libwayland-egl
Requires: libwayland-server
Requires: libwbclient
Requires: libwebp
Requires: libxcb
Requires: libxcrypt-devel
Requires: libxcrypt
Requires: libxkbcommon-x11
Requires: libxkbcommon
Requires: libxkbfile
Requires: libxklavier
Requires: libxml2
Requires: libxshmfence
Requires: libxslt
Requires: libyaml
Requires: linux-firmware
Requires: llvm-libs
Requires: logrotate
Requires: lshw
Requires: lsscsi
Requires: lua-expat
Requires: lua-json
Requires: lua-libs
Requires: lua-lpeg
Requires: lua-socket
Requires: lua
Requires: lvm2-libs
Requires: lvm2
Requires: lz4-libs
Requires: lzo
Requires: man-db
Requires: mcpp
Requires: mesa-dri-drivers
Requires: mesa-filesystem
Requires: mesa-libEGL
Requires: mesa-libGL
Requires: mesa-libgbm
Requires: mesa-libglapi
Requires: microcode_ctl
Requires: mobile-broadband-provider-info
Requires: mozilla-filesystem
Requires: mozjs52
Requires: mpfr
Requires: mtdev
Requires: mutter
Requires: ncurses-base
Requires: ncurses-libs
Requires: ncurses
Requires: nettle
Requires: newt
Requires: nftables
Requires: nm-connection-editor
Requires: npth
Requires: nspr
Requires: nss-softokn-freebl
Requires: nss-softokn
Requires: nss-sysinit
Requires: nss-util
Requires: nss
Requires: numactl-libs
Requires: ocaml-srpm-macros
Requires: openblas-srpm-macros
Requires: openldap
Requires: openssh-clients
Requires: openssh-server
Requires: openssh
Requires: openssl-libs
Requires: openssl-pkcs11
Requires: openssl
Requires: opus
Requires: orc
Requires: os-prober
Requires: p11-kit-trust
Requires: p11-kit
Requires: pam
Requires: pango
Requires: parted
Requires: passwd
Requires: patch
Requires: pciutils-libs
Requires: pcre
Requires: pcre2
Requires: perl-srpm-macros
Requires: pigz
Requires: pinentry-gtk
Requires: pinentry
Requires: pipewire-libs
Requires: pipewire
Requires: pixman
Requires: pkgconf-m4
Requires: pkgconf-pkg-config
Requires: pkgconf
Requires: platform-python
Requires: plymouth-core-libs
Requires: plymouth-scripts
Requires: plymouth
Requires: policycoreutils
Requires: polkit-libs
Requires: polkit-pkla-compat
Requires: polkit
Requires: popt
Requires: prefixdevname
Requires: procps-ng
Requires: psmisc
Requires: publicsuffix-list-dafsa
Requires: pulseaudio-libs-glib2
Requires: pulseaudio-libs
Requires: pulseaudio-module-bluetooth
Requires: pulseaudio
Requires: python-srpm-macros
Requires: python3-cairo
Requires: python3-configobj
Requires: python3-dateutil
Requires: python3-dbus
Requires: python3-decorator
Requires: python3-dmidecode
Requires: python3-dnf-plugins-core
Requires: python3-dnf
Requires: python3-ethtool
Requires: python3-firewall
Requires: python3-gobject-base
Requires: python3-gobject
Requires: python3-gpg
Requires: python3-hawkey
Requires: python3-iniparse
Requires: python3-inotify
Requires: python3-libcomps
Requires: python3-libdnf
Requires: python3-librepo
Requires: python3-libs
Requires: python3-libselinux
Requires: python3-libxml2
Requires: python3-linux-procfs
Requires: python3-perf
Requires: python3-pip
Requires: python3-pyudev
Requires: python3-rpm-macros
Requires: python3-rpm
Requires: python3-schedutils
Requires: python3-setuptools
Requires: python3-six
Requires: python3-slip-dbus
Requires: python3-slip
Requires: python3-subscription-manager-rhsm
Requires: python3-syspurpose
Requires: python3-unbound
Requires: qemu-guest-agent
Requires: qt5-srpm-macros
Requires: readline
Requires: redhat-backgrounds
Requires: redhat-logos
Requires: redhat-release
Requires: redhat-rpm-config
Requires: rest
Requires: rootfiles
Requires: rpm-build-libs
Requires: rpm-build
Requires: rpm-libs
Requires: rpm-plugin-selinux
Requires: rpm-plugin-systemd-inhibit
Requires: rpm
Requires: rsync
Requires: rsyslog
Requires: rtkit
Requires: rust-srpm-macros
Requires: samba-client-libs
Requires: samba-common-libs
Requires: samba-common
Requires: sbc
Requires: sed
Requires: selinux-policy-targeted
Requires: selinux-policy
Requires: setup
Requires: sg3_utils-libs
Requires: sg3_utils
Requires: shadow-utils
Requires: shared-mime-info
Requires: slang
Requires: snappy
Requires: sound-theme-freedesktop
Requires: speexdsp
Requires: sqlite-libs
Requires: squashfs-tools
Requires: sssd-client
Requires: sssd-common
Requires: sssd-kcm
Requires: sssd-nfs-idmap
Requires: startup-notification
Requires: subscription-manager-rhsm-certificates
Requires: subscription-manager
Requires: sudo
Requires: switcheroo-control
Requires: systemd-libs
Requires: systemd-pam
Requires: systemd-udev
Requires: systemd
Requires: tar
Requires: teamd
Requires: totem-pl-parser
Requires: trousers-lib
Requires: trousers
Requires: tuned
Requires: tzdata
Requires: unbound-libs
Requires: unzip
Requires: upower
Requires: usermode
Requires: util-linux
Requires: vim-common
Requires: vim-enhanced
Requires: vim-filesystem
Requires: vim-minimal
Requires: vino
Requires: virt-what
Requires: webkit2gtk3-jsc
Requires: webkit2gtk3-plugin-process-gtk2
Requires: webkit2gtk3
Requires: webrtc-audio-processing
Requires: which
Requires: woff2
Requires: wpa_supplicant
Requires: xcb-util
Requires: xfsprogs
Requires: xkeyboard-config
Requires: xml-common
Requires: xorg-x11-server-Xwayland
Requires: xorg-x11-server-common
Requires: xorg-x11-server-utils
Requires: xorg-x11-xauth
Requires: xorg-x11-xinit
Requires: xorg-x11-xkb-utils
Requires: xz-libs
Requires: xz
Requires: yum
Requires: zenity
Requires: zip
Requires: zlib
# A Striker dashboard is not allowed to host servers or be a migration target. # A Striker dashboard is not allowed to host servers or be a migration target.
@ -767,13 +100,8 @@ NOTE: This installs and enables Gnome desktop.
%package node %package node
Summary: Alteeve's Anvil! node package Summary: Alteeve's Anvil! node package
Requires: anvil-core Requires: anvil-core
Requires: bridge-utils Requires: drbd90-utils
Requires: drbd Requires: kmod-drbd90
Requires: drbd-bash-completion
Requires: drbd-utils
### NOTE: Disabled only until we get drbd9 building on F28
#Requires: drbd-kernel
#Requires: kmod-drbd
Requires: libvirt Requires: libvirt
Requires: libvirt-daemon Requires: libvirt-daemon
Requires: libvirt-daemon-driver-qemu Requires: libvirt-daemon-driver-qemu
@ -786,8 +114,8 @@ Requires: qemu-kvm-core
Requires: virt-install Requires: virt-install
# A node is allowed to host servers and be a live migration target. It is not # A node is allowed to host servers and be a live migration target. It is not
# allowed to host a database or be a DR host. # allowed to host a database or be a DR host.
Conflicts: anvil-striker Conflicts: anvil-striker
Conflicts: anvil-dr Conflicts: anvil-dr
%description node %description node
@ -801,13 +129,8 @@ NOTE: LINBIT customers must have access to the LINBIT repositories configured.
%package dr %package dr
Summary: Alteeve's Anvil! DR host package Summary: Alteeve's Anvil! DR host package
Requires: anvil-core Requires: anvil-core
Requires: bridge-utils Requires: drbd90-utils
Requires: drbd Requires: kmod-drbd90
Requires: drbd-bash-completion
Requires: drbd-utils
### NOTE: Disabled only until we get drbd9 building on F28
#Requires: drbd-kernel
#Requires: kmod-drbd
Requires: libvirt Requires: libvirt
Requires: libvirt-daemon Requires: libvirt-daemon
Requires: libvirt-daemon-driver-qemu Requires: libvirt-daemon-driver-qemu
@ -826,7 +149,7 @@ Provides support for asynchronous disaster recovery hosts in an Anvil! cluster.
%prep %prep
%autosetup -n anvil-master %autosetup -n anvil-3.0b
%build %build
@ -953,9 +276,9 @@ firewall-cmd --add-service=postgresql --permanent
%changelog %changelog
* Sat Jan 05 2019 Madison Kelly <mkelly@alteeve.ca> 3.0-21 * Sat Jan 05 2019 Madison Kelly <mkelly@alteeve.ca> 3.0-21
- Started adding support for ScanCore - Started adding support for ScanCore.
- Updated source. - Updated source and renamed to anvil-3.0b.
- Updated for EL8. - Updated for EL8. Lots of dependency changes!
* Wed Dec 12 2018 Madison Kelly <mkelly@alteeve.ca> 3.0-20 * Wed Dec 12 2018 Madison Kelly <mkelly@alteeve.ca> 3.0-20
- Updated source. - Updated source.

@ -263,6 +263,56 @@ CREATE TRIGGER trigger_sessions
AFTER INSERT OR UPDATE ON sessions AFTER INSERT OR UPDATE ON sessions
FOR EACH ROW EXECUTE PROCEDURE history_sessions(); FOR EACH ROW EXECUTE PROCEDURE history_sessions();
-- This stores information about Anvil! systems.
CREATE TABLE anvils (
anvil_uuid uuid not null primary key,
anvil_name text not null,
anvil_description text not null, -- This is a short, one-line (usually) description of this particular Anvil!. It is displayed in the Anvil! selection list.
anvil_password text not null, -- This is the 'ricci' or 'hacluster' user password. It is also used to access nodes that don't have a specific password set.
modified_date timestamp with time zone not null
);
ALTER TABLE anvils OWNER TO admin;
CREATE TABLE history.anvils (
history_id bigserial,
anvil_uuid uuid,
anvil_name text,
anvil_description text,
anvil_password text,
modified_date timestamp with time zone not null
);
ALTER TABLE history.anvils OWNER TO admin;
CREATE FUNCTION history_anvils() RETURNS trigger
AS $$
DECLARE
history_anvils RECORD;
BEGIN
SELECT INTO history_anvils * FROM anvils WHERE anvil_uuid = new.anvil_uuid;
INSERT INTO history.anvils
(anvil_uuid,
anvil_name,
anvil_description,
anvil_password,
modified_date)
VALUES
(history_anvils.anvil_uuid,
history_anvils.anvil_name,
history_anvils.anvil_description,
history_anvils.anvil_password,
history_anvils.modified_date);
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
ALTER FUNCTION history_anvils() OWNER TO admin;
CREATE TRIGGER trigger_anvils
AFTER INSERT OR UPDATE ON anvils
FOR EACH ROW EXECUTE PROCEDURE history_anvils();
-- This stores alerts coming in from various sources -- This stores alerts coming in from various sources
CREATE TABLE alerts ( CREATE TABLE alerts (
alert_uuid uuid not null primary key, alert_uuid uuid not null primary key,
@ -338,9 +388,7 @@ CREATE TABLE recipients (
recipient_email text not null, -- This is the recipient's email address or the file name, depending. recipient_email text not null, -- This is the recipient's email address or the file name, depending.
recipient_language text, -- If set, this is the language the user wants to receive alerts in. If not set, the default language is used. recipient_language text, -- If set, this is the language the user wants to receive alerts in. If not set, the default language is used.
recipient_new_level integer not null, -- This is the alert level to use when automatically adding watch links to new systems. '0' tells us to ignore new systems. recipient_new_level integer not null, -- This is the alert level to use when automatically adding watch links to new systems. '0' tells us to ignore new systems.
modified_date timestamp with time zone not null, modified_date timestamp with time zone not null
FOREIGN KEY(recipient_host_uuid) REFERENCES hosts(host_uuid)
); );
ALTER TABLE recipients OWNER TO admin; ALTER TABLE recipients OWNER TO admin;
@ -395,7 +443,7 @@ CREATE TABLE notifications (
notification_alert_level integer not null, -- This is the alert level (at or above) that this user wants alerts from. notification_alert_level integer not null, -- This is the alert level (at or above) that this user wants alerts from.
modified_date timestamp with time zone not null, modified_date timestamp with time zone not null,
FOREIGN KEY(notification_anvil_uuid) REFERENCES anvils(anvil_uuid), FOREIGN KEY(notification_anvil_uuid) REFERENCES anvils(anvil_uuid),
FOREIGN KEY(notification_recipient_uuid) REFERENCES recipients(recipient_uuid) FOREIGN KEY(notification_recipient_uuid) REFERENCES recipients(recipient_uuid)
); );
ALTER TABLE notifications OWNER TO admin; ALTER TABLE notifications OWNER TO admin;
@ -450,7 +498,7 @@ CREATE TABLE mail_servers (
mail_server_security text not null, -- This is the security type used when authenticating against the mail server (STARTTLS, TLS/SSL or NONE) mail_server_security text not null, -- This is the security type used when authenticating against the mail server (STARTTLS, TLS/SSL or NONE)
mail_server_authentication text not null, -- 'None', 'Plain Text', 'Encrypted'. mail_server_authentication text not null, -- 'None', 'Plain Text', 'Encrypted'.
mail_server_helo_domain text not null, -- The domain we identify to the mail server as being from. The default is to use the domain name of the host. mail_server_helo_domain text not null, -- The domain we identify to the mail server as being from. The default is to use the domain name of the host.
modified_date timestamp with time zone not null, modified_date timestamp with time zone not null
); );
ALTER TABLE mail_servers OWNER TO admin; ALTER TABLE mail_servers OWNER TO admin;
@ -507,8 +555,8 @@ CREATE TABLE host_mail_servers (
host_mail_server_order integer not null, -- The priority of this mail server. host_mail_server_order integer not null, -- The priority of this mail server.
modified_date timestamp with time zone not null, modified_date timestamp with time zone not null,
FOREIGN KEY(host_mail_server_host_uuid) REFERENCES hosts(host_uuid), FOREIGN KEY(host_mail_server_host_uuid) REFERENCES hosts(host_uuid),
FOREIGN KEY(host_mail_server_mail_server_uuid) REFERENCES mail_server(mail_server_uuid) FOREIGN KEY(host_mail_server_mail_server_uuid) REFERENCES mail_servers(mail_server_uuid)
); );
ALTER TABLE host_mail_servers OWNER TO admin; ALTER TABLE host_mail_servers OWNER TO admin;

@ -15,7 +15,30 @@
# idea or not. # idea or not.
# #
# NOTE: # NOTE:
# - For later; 'reboot --force --force' immediately kills the OS, like disabling ACPI on EL6 and hitting the power button. Might be useful in ScanCore down the road. # - For later; 'reboot --force --force' immediately kills the OS, like disabling ACPI on EL6 and hitting the
# power button. Might be useful in ScanCore down the road.
#
# Switches:
#
# --main-loop-only
#
# This skips the one-time, start-up tasks and just goes into the main-loop,
#
# --no-start
#
# This will prevent any pending jobs from being picked up and started in this run. Note that other job checks will still happen.
#
# --refresh-jason
#
# This just updates the JSON files used by the web interface. It is the same as '--run-once --main-loop-only --no-start'
#
# --run-once
#
# This will tell the program to exit after runn the main loop once.
#
# --startup-only
#
# This will tell the program to exit after running the start up tasks, so the main loop won't run.
# #
use strict; use strict;

Loading…
Cancel
Save