Install And Use SALTStack In A Mixed Environment - Page 2
Testing the installed SaltStack
PING all running minions from Salt Master:
root@salt-master:~# salt '*' test.ping
You can use regexp in its name:
root@salt-master:~# salt 'salt-[m]*' test.ping
The result should be something like this:
salt-minion1.test.local: True salt-minion2.test.local: True
root@salt-master:~# salt 'salt-[!m]*' test.ping
The result should be something like this:
salt-centos: True
Single usage of SaltStack
The following examples manage Salt-Minions from Salt-Master
Ask hostnames:
root@salt-master:~# salt '*' grains.item host
salt-minion1.test.local: host: salt-minion1 salt-minion2.test.local: host: salt-minion2 salt-centos: host: salt-centos
Ask Operating systems:
root@salt-master:~# salt '*' grains.item os
salt-minion2.test.local: os: Debian salt-minion1.test.local: os: Debian salt-centos: os: CentOS
Find files by name:
root@salt-master:~# salt '*' file.find /etc name=host\*.\*
salt-centos: - /etc/host.conf - /etc/hosts.allow - /etc/hosts.deny salt-minion2.test.local: - /etc/host.conf - /etc/hosts.allow - /etc/hosts.deny - /etc/init.d/hostname.sh salt-minion1.test.local: - /etc/host.conf - /etc/hosts.allow - /etc/hosts.deny - /etc/init.d/hostname.sh
Find content of text file:
root@salt-master:~# salt '*' file.contains /etc/ssh/sshd_config 'Port'
salt-centos: True salt-minion1.test.local: True salt-minion2.test.local: True
Edit content of text file:
root@salt-master:~# salt '*' file.sed /etc/ssh/sshd_config 'Port 22' 'Port 2201'
salt-minion2.test.local: ---------- pid: 2555 retcode: 0 stderr: stdout: salt-minion1.test.local: ---------- pid: 2476 retcode: 0 stderr: stdout: salt-centos: ---------- pid: 1490 retcode: 0 stderr: stdout:
Create folder:
root@salt-master:~# salt '*' file.makedirs /tmp/testFolder/
salt-minion2.test.local: None salt-minion1.test.local: None salt-centos: None
Create empty file:
root@salt-master:~# salt '*' file.touch /tmp/testFolder/emptyFile
salt-centos: True salt-minion1.test.local: True salt-minion2.test.local: True
Remove directory tree:
root@salt-master:~# salt '*' file.remove /tmp/testFolder/
salt-minion1.test.local: True salt-minion2.test.local: True salt-centos: True
Manage /etc/hosts file:
root@salt-master:~# salt '*' hosts.add_host 192.168.122.1 kvmhost.test.local
salt-minion2.test.local: True salt-centos: True salt-minion1.test.local: True
Manage services on Minions from Master:
salt '*' service.get_all
salt '*' service.status nginx
salt '*' service.reload ssh
salt '*' service.disable rsync
salt '*' service.get_disabled
You will receive Fails if service is not installed.
Package installation to Minions from Master:
We can install packages by one single command on various distributions at the same time by:
root@salt-master:/srv/salt# salt '*' pkg.install subversion
salt-centos: ---------- apr: ---------- new: 1.3.9-5.el6_2 old: apr-util: ---------- new: 1.3.9-3.el6_0.1 old: gnutls: ---------- new: 2.8.5-10.el6_4.2 old: libproxy: ---------- new: 0.3.0-4.el6_3 old: libproxy-bin: ---------- new: 0.3.0-4.el6_3 old: libproxy-python: ---------- new: 0.3.0-4.el6_3 old: libtasn1: ---------- new: 2.3-3.el6_2.1 old: neon: ---------- new: 0.29.3-3.el6_4 old: pakchois: ---------- new: 0.4-3.2.el6 old: perl-URI: ---------- new: 1.40-2.el6 old: subversion: ---------- new: 1.6.11-9.el6_4 old: salt-minion1.test.local: ---------- libapr1: ---------- new: 1.4.6-3+deb7u1 old: libaprutil1: ---------- new: 1.4.1-3 old: libneon27-gnutls: ---------- new: 0.29.6-3 old: libsvn1: ---------- new: 1.6.17dfsg-4+deb7u4 old: subversion: ---------- new: 1.6.17dfsg-4+deb7u4 old:
After the installation, we can check the result:
root@salt-master:/srv/salt# salt '*' cmd.run "svn --version --quiet"
salt-minion2.test.local: 1.6.17 salt-minion1.test.local: 1.6.17 salt-centos: 1.6.11
Install MYSQL on Debian minions
It is a bit complicated than a single package
root@salt-master:~# salt 'salt-mini*' pkg.install python-mysqldb
salt-minion1.test.local: ---------- libmysqlclient18: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-common: ---------- new: 5.5.31+dfsg-0+wheezy1 old: python-mysqldb: ---------- new: 1.2.3-2 old: salt-minion2.test.local: ---------- libmysqlclient18: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-common: ---------- new: 5.5.31+dfsg-0+wheezy1 old: python-mysqldb: ---------- new: 1.2.3-2 old:
If you try out this command on all of your servers, you can see, something went wrong with CentOS.
You can see details in /var/log/salt/minion. If it not tell you enough, raise loglevel in /etc/salt/minion.
I will not go into the details, but not difficult to solve this.
If you want to manage mysql by SaltStack, you should have a file mysql_salt.conf.
As it was mentioned previously, you can manage this remotely too:
root@salt-master:~# salt 'salt-mini*' file.append /etc/salt/minion.d/mysql_salt.conf \ "mysql.host: 'localhost'" \ "mysql.port: 3306" \ "mysql.user: 'root'" \ "mysql.pass: ''" \ "mysql.db: 'mysql'"
salt-minion2.test.local: Wrote 5 lines to "/etc/salt/minion.d/mysql_salt.conf" salt-minion1.test.local: Wrote 5 lines to "/etc/salt/minion.d/mysql_salt.conf"
At this point Salt-Minion restart needed.
The salt can not restart itself as "salt 'salt-mini*' service.restart salt-minion", so you have to use a trick:
root@salt-master:~# salt 'salt-mini*' cmd.run "/etc/init.d/salt-minion restart"
salt-minion2.test.local: Restarting salt minion control daemon: salt-minion. salt-minion1.test.local: Restarting salt minion control daemon: salt-minion.
root@salt-master:~# salt 'salt-mini*' pkg.install mysql-server
salt-minion1.test.local: ---------- libaio1: ---------- new: 0.3.109-3 old: libdbd-mysql-perl: ---------- new: 4.021-1+b1 old: libdbi-perl: ---------- new: 1.622-1 old: libhtml-template-perl: ---------- new: 2.91-1 old: libnet-daemon-perl: ---------- new: 0.48-1 old: libplrpc-perl: ---------- new: 0.2020-2 old: mysql-client-5.5: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-server: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-server-5.5: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-server-core-5.5: ---------- new: 5.5.31+dfsg-0+wheezy1 old: salt-minion2.test.local: ---------- libaio1: ---------- new: 0.3.109-3 old: libdbd-mysql-perl: ---------- new: 4.021-1+b1 old: libdbi-perl: ---------- new: 1.622-1 old: libhtml-template-perl: ---------- new: 2.91-1 old: libnet-daemon-perl: ---------- new: 0.48-1 old: libplrpc-perl: ---------- new: 0.2020-2 old: mysql-client-5.5: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-server: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-server-5.5: ---------- new: 5.5.31+dfsg-0+wheezy1 old: mysql-server-core-5.5: ---------- new: 5.5.31+dfsg-0+wheezy1 old:
MySQL management on Minions from Salt-master
By now, you can use SaltStack DB managment commands on your Debian machines:
root@salt-master:~# salt 'salt-mini*' mysql.db_create 'dbname'
salt-minion2.test.local: True salt-minion1.test.local: True
root@salt-master:~# salt 'salt-mini*' mysql.db_list
salt-minion2.test.local: - information_schema - dbname - mysql - performance_schema - test salt-minion1.test.local: - information_schema - dbname - mysql - performance_schema - test