Hi Denis,
Sorry for the lag. We've all been heads down working on a release, so we've dropped the ball over here.
I don't have an easy answer for you unfortunately. From my understanding of your description, you'll want to create a new ("native") pallet that represents the logical delta between your distro and stock centos. Then when you are ready to deploy hosts with stacki, you'll put them in a Box that contains the Stacki pallet, the "foreign" CentOS pallet (which is just the stock media), and your new pallet.
Some general instructions follow, which assume your new pallet will be called 'bob', and you want to version this pallet 1.0. Please let me know if any of this is confusing and I'll try to clarify.
From a Stacki frontend:
cd /export/
stack create new pallet name=bob version=1.0
That creates a directory ./bob/, which is the basic skeleton of a pallet (pre-compilation) and whose contents looks like:
bob
├── graph
│ └── bob.xml
├── Makefile
├── nodes
│ ├── bob-base.xml
│ ├── bob-client.xml
│ └── bob-server.xml
├── src
│ ├── bob
│ │ ├── Makefile
│ │ └──
version.mk│ └── Makefile
└──
version.mkYou should version control this directory (in fact, it might assume that you have and throw an error during pallet compilation time - I'll need to investigate)
git init
git add .
git commit -m "Initial commit of bob pallet"
What you have here is not a pallet, it's merely the source-code for one.
Stacki has a lot of Makefile-fu available and this skeleton structure makes use of it. If you type `make` at the top level, it will recursively build rpm's and then finally an ISO which is a pallet stacki is able to import. Unfortunately, this skeleton comes with a folder which is incomplete (./src/bob/) and does not build - deleting (or making it actually have something to build) ./src/bob and typing make will allow the pallet to build.
If you just have a bunch of RPM's the easiest way to include them in your new pallet is to simply place them in a directory under ./src/, such as ./src/RPMS
mkdir ./src/RPMS
We have a special Makefile implementation for this situation.
cat << 'EOF' > ./src/RPMS/Makefile
RPM.STRATEGY = copy
ROLLROOT = ../..
ROLL.MEMBERSHIP = $(ROLL)
include $(STACKBUILD)/etc/CCRules.mk
EOF
At that point, you can build the pallet and if you `stack add pallet` and `stack enable pallet` the resulting ISO in Stacki those RPM's will be available to install via yum. However, they will not be installed automatically, or during host installation. That will require modifying the node XML files.
The node XML files are how you can leverage stacki's own framework to control host installation. This is a bit of a simplification: node XML files get rendered into a kickstart file (on RedHat based systems). For more information, check out the SUX documentation (
https://github.com/Teradata/stacki/wiki/Stacki-Universal-XML).
Looking in ./nodes, the default pallet setup creates a few XML files, of which `bob-client.xml` contains code that will run on backend machines which have the pallet enabled.
Open ./nodes/bob-client.xml and add some package tags toward the middle of the file for the RPM's you've added like so:
<stack:package>bob-utils</stack:package>
<stack:package>bob-devel</stack:package>
Note that these are the rpm package names, *not* the file names.
At that point, you can `rm ./src/bob/` the useless example folder if you haven't already, then cd to the root of the pallet repo and type `make`. Depending on the size of the RPM's you've added, it may take a few minutes, but if everything goes well, you will have an ISO at `./build-bob-master/bob-1.0-redhat7.x86_64.disk1.iso` (or so). If you add this pallet to stacki, and enable it for the default pallet, these RPM's will be installed during installation of backend nodes.
You can get fancier with the node xml -- if you have any scripts that you want to run during installation, they can run there, or if you want packages to be installed only based on some condition, you can do that as well. The SUX documentation has more info.
If you'd like to change the version number or the name of the pallet, edit ./
version.mk and modify the ROLL and VERSION values (ROLLVERSION can usually be ignored).
Hope this helps, sorry again for the delay.
Bill