.. -*- coding: utf-8 -*- :orphan: ============== Installation ============== Installation ============ Installation ------------ Certaines distributions proposent des paquets SaltStack dans leurs entrepôts. Pour Debian par exemple, un simple `apt install salt-master` ou `apt install salt-minion` est suffisant. SaltStack met à disposition des entrepôts de paquets pour plusieurs distributions, ce qui peut permettre d'installer les dernières versions dès leur publication, sans attendre leur intégration dans la distribution utilisée. Pour obtenir la liste, consulter https://repo.saltproject.io/ Configuration initiale ---------------------- Le principal fichier de configuration du *master* est ``/etc/salt/master``. Il permet de configurer p.ex. la racine des fichiers (``file_roots``, par défaut ``/srv/salt``) et où trouver les *pillars* (``pillar_roots``). Si ``file_roots`` détermine où pointe ``salt://`` ; p.ex., par défaut, ``salt://states/vim/.vimrc`` pointe vers le fichier ``.vimrc`` dans ``/srv/salt/states/vim/.vimrc``. Le principal fichier de configuration d'un *minion* est ``/etc/salt/minion``. L'entrée la plus importante de ce fichier est la clé ``master``, qui indique au *minion* son *master*. Cette valeur peut soit être un FQDN ou une adresse IP. Le fichier ``/etc/salt/minion_id`` peut être utilisé pour changer l'identifiant du *minion* qui est par défaut le nom de l'hôte. Ce fichier ne contient que le nouvel identifiant. Initaliser la connexion entre le *master* et les *minions* ---------------------------------------------------------- Pour initialiser la connexion entre le *master* et ses *minions*, il faut que les *minions* s'authentifient auprès du *master* : 1. chaque *minion* génère une pair de clés 2. il soumet la clé publique au *master* 3. le *master* accepte, rejette ou supprime la clé avec la commande ``salt-key`` 4. si le *master* accepte la clé, une communication chiffrée est établie entre ces deux machines Les clés publiques des *minions* sont stockées dans ``/etc/salt/pki/master/minions`` sur le *master*. La clé publique du *master* est stockée dans ``/etc/salt/pki/minion/minion_master.pub`` sur chaque *minion*. .. image:: media/salt-key.png :align: center salt-key -------- Lister toutes les clés : .. code-block:: bash salt-key Accepter la clé d'un *minion* : .. code-block:: bash salt-key -a Accepter toutes les clés : .. code-block:: bash salt-key -A Supprimer la clé d'un *minion* : .. code-block:: bash salt-key -d Supprimer toutes les clés : .. code-block:: bash salt-key -A Pour vérifier les empreintes digitales : 1. afficher l'empreinte sur le *minion* : ``salt-call --local key.finger`` 2. comparer avec l'empreinte de la clé reçue par le *master* : ``salt-key -f `` Si un Salt roster a été mis en place, la commande .. code-block:: bash salt-run manage.safe_accept permet de rajouter un *minion* en intégrant la vérification de l'empreinte digitale. .. warning:: Si l'identifiant d'un *minion* a été changé, il va soumettre une nouvelle clé auprès du *master* qu'il faut accepter pour rétablir la connexion. Il est aussi possible de configurer le *master* d'accepter toutes les clés : .. code-block:: ini auto_accept: True Inversement, il est possible de permettre aux *minions* de se connecter à un *master* même si la clé publique de ce dernier a changé : .. code-block:: ini open_mode: True Droits et permissions --------------------- ``salt-master`` et ``salt-minion`` sont souvent exécutés en tant que ``root``. Ceci n'est pas indispensable, cependant * des fichiers sont par défaut écrits dans ``/var/salt/``, * la clef privée du *master* doit être très bien protégée, * ``salt-minion`` lance souvent des commandes système Il faudrait donc des configurations supplémentaires (adapter les permissions, permettre au ``salt-minion`` d'utiliser ``sudo``, ...) pour qu'ils puissent fonctionner correctement. Compatibilités entre versions ----------------------------- Lors des mises à jour, il est fortement recommandé de mettre à jour le *master* en premier, comme SaltStack ne garantit pas de compatibilité entre des *minions* et un *master* si ce dernier exécute une version antérieure à celle des *minions*. Pour l'inverse, c'est-à-dire le cas où la version du *master* est plus récente que celle des minions, SaltStack essaie de conserver une compatibilité. Seulement en cas de mises à jour de sécurité cette compatiblité peut-être rompue. D'une manière générale, il est conseillé d'avoir un parc de versions de Salt aussi petit que possible, et idéalement, une seule version déployée. .. code-block:: console salt '*' grains.item saltversion salt '*' pkg.version salt-minion Multi-système ============= Généralités ----------- * ``salt-minion`` est géré sur de nombreux systèmes * ``salt-master`` n'est géré que sur les systèmes Unix Distributions Unix ------------------ * Arch Linux : ``yaourt salt`` * Debian : ``apt search salt-`` * Fedora : repos officiels + ``EPEL`` * FreeBSD : FreeBSD ports tree * Gentoo : ``emerge app-admin/salt`` * RHEL / CentOS : ``EPEL`` * Solaris : OpenCSW package repository * Ubuntu : dépots officiels et ``PPA`` * SUSE : ``zypper install salt-minion`` Windows ------- * Installeur Windows * L'installeur demande le nom du *master* et le nom du *minion* * L'installeur est scriptable * ``salt windows-vm sys.list_functions`` est trompeur, certaines fonctions ne marchent pas * Windows ``Powershell`` permet une gestion d'installation ou autres commandes * Fonctionnalité de dépots de logiciels Windows exploitable par salt avec `salt-winrepo `_ * Fonctionnalité étendue de gestion de logiciels avec `chocolatey `_ Mac OS X -------- * utilisation de homebrew_ (système de gestion de paquets pour Mac OS) : .. code-block:: console brew install saltstack .. _homebrew: https://brew.sh/