Creating the Ultimate Container Playground: Salt in LXD

Introduction: Installing Saltstack

The great thing about being able to spin up several new system containers running multiple Linux distros is that you get to experiment with software like Saltstack without the hassle of creating multiple VM’s. This can be especially daunting on a machine that is lacking resources.

The following directions are how I installed Salt on multiple containers running at the same time but using less that 2G of RAM total for testing. Saltstack easily controlled all of their very different package manager and system configurations effortlessly.

Master and Minion on OpenSUSE

zypper in salt-master salt-minion

echo “10.132.120.155” » /etc/hosts

systemctl enable salt-master

systemctl start salt-master

systemctl enable salt-minion

systemctl start salt-minion

Minion on Fedora

dnf install salt-minion

echo “10.132.120.155” » /etc/hosts

systemctl enable salt-minion

systemctl start salt-minion

Minion on Ubuntu

apt update

sudo apt install salt-minion

echo “10.132.120.155” » /etc/hosts

systemctl enable salt-minion

systemctl restart salt-minion

Minion on Arch

pacman -S salt

echo “10.132.120.155” » /etc/hosts

systemctl enable salt-minion

systemctl start salt-minion

Minion on CentOS

vim /etc/yum.repos.d/saltstack.repo (see https://docs.saltstack.com/en/latest/topics/installation/rhel.html)

echo “10.132.120.155” » /etc/hosts

yum install salt-minion

systemctl enable salt-minion

systemctl start salt-minion

Set up Salt Master

opensuse:~ # salt-key -A The following keys are going to be accepted: Unaccepted Keys: opensuse ubuntu.lxd arch fedora centos Proceed? [n/Y] y Key for minion opensuse accepted. Key for minion ubuntu.lxd accepted. Key for minion arch accepted. Key for minion fedora accepted. Key for minion centos accepted.

Testing Saltstack

opensuse:~ # salt ‘*’ grains.get os
ubuntu.lxd: Ubuntu centos: CentOS arch: Arch fedora: Fedora opensuse: SUSE

opensuse:~ # salt ‘*’ grains.get saltversion fedora: 2017.7.3 ubuntu.lxd: 2017.7.4 centos: 2018.3.0 opensuse: 2018.3.0 arch: 2018.3.0

Install a package

opensuse:~ # salt ‘*’ pkg.install mutt arch: -——— mailcap: -——— new: 2.1.48+14+g5811758-1 old: mutt: -——— new: 1.10.0-1 old: centos: -——— mailcap: -——— new: 2.1.41-2.el7 old: mutt: -——— new: 5:1.5.21-27.el7 old: tokyocabinet: -——— new: 1.4.48-3.el7 old: urlview: -——— new: 0.9-15.20121210git6cfcad.el7 old: fedora: -——— mailcap: -——— new: 2.1.48-2.fc27 old: mutt: -——— new: 5:1.9.2-1.fc27 old: perl-Time-Local: -——— new: 1:1.250-394.fc27 old: tokyocabinet: -——— new: 1.4.48-9.fc27 old: urlview: -——— new: 0.9-22.20131022git08767a.fc27 old: opensuse: -——— exim: -——— new: 4.86.2-20.1 old: libgc1: -——— new: 7.2d-11.3 old: libgmime-2_6-0: -——— new: 2.6.20-6.3 old: libgpgme11: -——— new: 1.9.0-1.3 old: libkyotocabinet16: -——— new: 1.2.76-16.1 old: liblua5_2: -——— new: 5.2.4-6.1 old: libmysqlclient18: -——— new: 10.0.34-32.2 old: libnotmuch4: -——— new: 0.22.1-3.17 old: libpq5: -——— new: 9.6.8-15.1 old: libspf2-2: -——— new: 1.2.10-8.1 old: libtalloc2: -——— new: 2.1.10-2.3.1 old: libxapian22: -——— new: 1.2.21-5.3 old: mutt: -——— new: 1.8.2-1.7 old: mutt-doc: -——— new: 1.8.2-1.7 old: mutt-lang: -——— new: 1.8.2-1.7 old: perl-Expect: -——— new: 1.32-5.1 old: perl-IO-Tty: -——— new: 1.12-6.1 old: python-curses: -——— new: 2.7.13-27.3.1 old: python-urwid: -——— new: 1.3.0-6.2 old: urlscan: -——— new: 0.8.3-1.2 old: urlview: -——— new: 0.9-737.1 old: w3m: -——— new: 0.5.3.git20161120-163.3 old: ubuntu.lxd: -——— imap-client: -——— new: 1 old: libgpgme11: -——— new: 1.10.0-1ubuntu1 old: libtokyocabinet9: -——— new: 1.4.48-11 old: mutt: -——— new: 1.9.4-3 old: opensuse:~ #