Before proceeding, be sure to review our architecture overview, and our minimum requirements. We are also more than happy to help you design your ComputeStacks environments. Please contact us to learn more.
- make (installed by default on all linux & mac systems)
- ansible
Once ansible is installed, run:
make roles
Please first check and see if terraform scripts exist for your platform. This is will greatly aid in building your inventory file and ensuring a more successful installation process.
If you used one of our terraform setup scripts (RECOMMENDED) to create your cluster, then you should already have a skeleton inventory.yml
file that you can place in this directory. Otherwise, cp inventory.yml.sample inventory.yml
.
Ensure you fill out all the variables and ensure everything is correct. To see all available settings, check each role and look at their defaults/main.yml
file.
Various parts of this ansible package will require the domains defined in your inventory.yml
file to be correctly setup. Please configure those domains and ensure the changes have been propagated before proceeding.
Example DNS Settings
a.dev.cmptstks.net. IN A %{PUBLIC IP OF NODE}
metrics.dev.cmptstks.net. IN A %{PUBLIC IP OF METRICS SERVER}
*.a.dev.cmptstks.net. IN CNAME a.dev.cmptstks.net.
portal.dev.cmptstks.net. IN A %{controller ip address}
cr.dev.cmptstks.net. IN CNAME portal.dev.cmptstks.net.
Ensure all hostnames are configured properly on each node. Our system expects the hostnames on nodes to be 1 lowercase word (dashes or underscores are ok), no special characters or spaces. They should not be FQDN or have the dot notation.
Example using node101, node102, node103
hostname node101 && echo "node101" > /etc/hostname && echo "127.0.0.1 node101" >> /etc/hosts
Required packages when NOT using our terraform provisioners
apt-get update
apt-get -y install openssl \
ca-certificates \
linux-headers-amd64 \
python3 \
python3-pip \
python3-openssl \
python3-apt \
python3-setuptools \
python3-wheel
make bootstrap
The last step in this script will reboot servers to finalize configuration.
After running and allowing the servers to reboot, you can perform some basic validation by running:
make validate
To add a new region or availability zone, make a copy of your previous inventory.yml
file and make the following changes:
- Change
region_name
and/or,availability_zone_name
- Replace all nodes with your new nodes
- (optional) Change metrics / backup servers. You can re-use the existing ones if you wish.
Re-run the bootstrap command:
make bootstrap
Linux
Install pyenv for your local (non-root) user account.
You can set the new version with pyenv global 3.9.1
(replace 3.9.1
with the version you installed)
python -m pip install --user ansible
echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
Note: Check if you have a .bashrc
file, it may be .bash_profile
for your distribution.
This will ensure you have the most recent version of ansible.
In order to allow swap limitations set on containers, you need to perform the following on each node:
- Modify the file
/etc/default/grub
- Add
cgroup_enable=memory swapaccount=1
to the existingGRUB_CMDLINE_LINUX_DEFAULT
setting - run
update-grub
- reboot
Note: This can add about 1% of overhead.
How to Resolve set-hostname: current hostname was changed outside NetworkManager: '<hostname>'
in logs:
Edit /etc/NetworkManager/NetworkManager.conf
and add hostname-mode=none
to the [main]
block, and reboot the server.
Example:
[main]
#plugins=ifcfg-rh,ibft
hostname-mode=none