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 rolesPlease 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/hostsRequired 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-wheelmake bootstrapThe 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 validateTo add a new region or availability zone, make a copy of your previous inventory.yml file and make the following changes:
- Change
region_nameand/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 bootstrapLinux
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"' >> ~/.bashrcNote: 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=1to the existingGRUB_CMDLINE_LINUX_DEFAULTsetting - 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