Index Saltstack – Les commandes utiles

index saltstack alt index saltstack

Cet Index Saltstack va porter sur les commandes basiques du logiciel du même nom.

Saltstack est un logiciel de gestion de configuration et d’orchestration de parcs informatiques. Il fonctionne comme Metasploit (listener/paylaoad).

On installera donc salt-master sur la machine qui va gérer, puis salt-minion sur toutes les machines qui auront besoin d’être gérées.

Il faudra également configurer vos salt-minions afin qu’ils pointent vers votre salt-master.
Pour mieux comprendre son infrastructure, aidez-vous du schema ci-dessous.

Si vous avez changé des paramètres ou encore modifié les reactors de Saltstack, pensez à redémarrez le service pour que les changements soient pris en compte.

index saltstack-image

# Installation automatique de Saltstack

curl -o bootstrap-salt.sh -L https://bootstrap.saltstack.com
sudo sh bootstrap-salt.sh -P

# Salt master configuration file for states on minions
#/srv/salt

 

# Appliquer une state (top.sls, init.sls)

salt '*' state.highstate

 

# Tester une commande avant de l’envoyer en prod par exemple

salt '*' state.highstate test=True
salt '*' state.sls test=True

 

# Lancer une commande sur un minion

salt '*' cmd.run "service httpd restart"

 

# Surveiller les logs du serveur saltstack pour vérifier l’application d’une state

salt-run state.event pretty=True

 

# Vider le cache présent sur les minions

salt '*' state.clear_cache

 

# Voir le mot de passe hashé d’un utilisateur

salt '*' shadow.info username

 

# Changer le mot de passe d’un utilisateur

# Générer le hash du mot de passe

python -c "import crypt; print crypt.crypt('password', '\$6\$SALTsalt')

salt '*' shadow.set_password user 'passwordhash'

 

# Installer un paquet

pkg-name:
 pkg:
 - installed (use - remove to remove a package)

 

# Installer plusieurs paquets

{% for p in ['openssl-devel', 'libtool', 'wget'] %}
 {{ p }}:
 pkg.installed:
 - order: 1
 - skip_verify: true
 {% endfor %}

 

Index Saltstack : la suite

 

# Surveilleur un fichier et effectuer un service restart si le fichier est modifié

/etc/ssh/sshd_config:
 file.managed:
 - order: 10
 - source: salt://path/to/sshd_config
 restart_sshd:
 cmd.wait:
 - name: /etc/init.d/sshd restart
 - watch:
 - file: /etc/ssh/sshd_config

 

# File modification

/etc/ssh/banner:
 file:
 - managed
 - user: root
 - group: root
 - mode: 644
 - source salt://servers/sshbanner
 - require:
 - pkg: openssh-server

 

# Ajouter un utilisateur

username:
 user.present:
 - fullname: First Last
 - shell: /bin/bash
 - home: /home/username
 - password: PASSWORD_HASH
 - enforce_password: false
 - groups:
 - wheel
 - storage
 - games

 

# Supprimer un utilisateur

username:
 user.absent:
 - purge: true
 - force: true

 

# Installer un paquet avec RPM

nameofpkg_install:
 cmd.run:
 - name: rpm -Uvh /path/to/package.rpm
 - unless: rpm -qa | grep pkgname

 

# Afficher la version utilisée de saltstack

salt 'minion' test.version

# Appliquer une state à un minion

salt 'minion' state.sls states.docker

 

# Lister les opérations en cours

salt-run jobs.active

 

#Lister les opérations lancées en dernier

salt-run jobs.last_run target=nodename

 

# Tuer une opération en cours en utilisant

salt '*' saltutil.kill_job <jid>

 

#Copier un fichier d’un minion vers le master (attention !)

#Sera copié dans /var/cache/salt/master/minions/minion_id/files/

salt 'minion' cp.push /tmp/file

 

# Lancer un module depuis une state file

retrieve:
module.run
- name: cp.push
- path:
/tmp/vault.hc

 

# Copier un fichier du master vers le minion

salt 'minion' cp.get_file salt://files/myfile.txt /etc/myfile.txt

 

Sans Orchestrate (master-side):

# /srv/salt/do_thing_on_minion_then_master.sls
# Run with `salt-run state.orch do_thing_on_minion_then_master`
do_thing_on_minion:
 salt.state:
 - tgt: <the minion>
 - sls: <the sls>

do_thing_on_master:
 file.touch:
 - name: /path/to/file/on/master
 - require:
 - salt: do_thing_on_minion

 

TODO: REACTOR, VIRTUALENV/LOG-OBFUSCATION-FOR-SECURITY

 

C’était l’Index Saltstack. Vous trouverez d’autres Index en parcourant le site.