Mise en place de Salt

Salt est un environnement de déploiement, de configuration et d'administration opensource et développé en langage Python. Cet outil repose sur la description d'actions à réaliser ou vérifier afin de faire évoluer une plateforme d'un état vers un autre. Il peut s'utiliser avec ou sans agent pré-installé.

Le déploiement est réalisé en deux étapes:

  • sans agent, pour la mise en place de l'infrastructure Salt;
  • avec agent, pour tout le reste.

Configuration de la machine maître

À partir d'une machine qui fera office de système maître pour Salt:

  • configuration du dépôt salt sur cette machine maître. En effet, les paquets actuellement présents dans Debian Jessie sont très anciens. Une installation à partir de SaltStack est conseillée (détails sur l'installation).

    # wget -O - https://repo.saltstack.com/apt/debian/8/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
    # echo "deb http://repo.saltstack.com/apt/debian/8/amd64/latest jessie main" > /etc/apt/sources.list.d/saltstack.list
    # apt-get update
    
  • installation des paquets salt:

    # apt-get install salt-master salt-ssh
    
  • configuration d'un environnement salt

    • définition de l'environnement: création du fichier /etc/salt/master.d/default.conf

      # cat <<EOF > /etc/salt/master.d/default.conf
      file_roots:
        base:
          - /srv/salt/states
        pillar_roots:
          base:
          - /srv/salt/pillars
        ext_pillar:
          - file_tree:
            root_dir: /srv/salt/ext_pillars
            follow_dir_links: True
            keep_newline: True
      EOF
      
    • création du fichier de l'ensemble des cibles:

      # cat <<EOF > /tmp/salt-ssh-roster
      ctrl-1:
        host: 192.168.122.11
        user: root
      
      ctrl-2:
        host: 192.168.122.12
        user: root
      
      ctrl-3:
        host: 192.168.122.13
        user: root
      EOF
      
    • vérification de l'accès SSH sur les machines cibles (avec éventuellement acceptation des clés de machine):

      # ssh ctrl-1
      
    • vérification de l'accès SSH par salt:

      # salt '*' --roster-file /tmp/salt-ssh-roster test.ping
      ctrl-2:
          True
      ctrl-1:
          True
      ctrl-3:
          True
      
    • déploiement des agents salt:

      # salt '*' --roster-file /tmp/salt-ssh-roster state.apply saltstack
      

Déploiement des agents

Le déploiement des agents se fait à l'aide d'un fichier de configuration salt. Dans un second temps, les communications entres le maître et ses agents étant authentifiées, il est nécessaire de valider un échange de clé entres les équipements concernés.

  • création du fichier saltstack-bootstrap. Ce fichier permet l'installation de l'agent salt sur la machine visée:

    # cat <<EOF > /srv/salt/states/saltstack-bootstrap.sls
    salt-minion:
      pkgrepo:
        - managed
        - humanname: SaltStack Repo
        - name: deb http://repo.saltstack.com/apt/debian/8/amd64/latest {{ grains['lsb_distrib_codename'] }} main
        - dist: {{ grains['lsb_distrib_codename'] }}
        - key_url: https://repo.saltstack.com/apt/debian/8/amd64/latest/SALTSTACK-GPG-KEY.pub
      pkg:
        - latest
    EOF
    
  • mise en œuvre de ce fichier sur tous les nœuds cibles:

    # salt '*' state.apply saltstack-bootstrap
    
  • Après quelques secondes pour qu'un premier contact entres les agents et le maître se fasse. On vérifie la disponibilité des minions:

    # salt-key
    Accepted Keys:
    Denied Keys:
    Unaccepted Keys:
    ctrl-1.api.runstack.net
    ctrl-2.api.runstack.net
    ctrl-3.api.runstack.net
    Rejected Keys:
    

    et on valide globalement toutes les clés en attentes (-A) sans confirmation supplémentaire (-y):

    # salt-key -A -y
    The following keys are going to be accepted:
    Unaccepted Keys:
    ctrl-1.api.runstack.net
    ctrl-2.api.runstack.net
    ctrl-3.api.runstack.net
    Key for minion ctrl-1.api.runstack.net accepted.
    Key for minion ctrl-2.api.runstack.net accepted.
    Key for minion ctrl-3.api.runstack.net accepted.
    

Vérification de la plateforme

L'installation est validée par le simple test:

# salt '*' test.ping
ctrl-3.api.runstack.net:
    True
ctrl-2.api.runstack.net:
    True
ctrl-1.api.runstack.net:
    True

Automatisation

À l'aide de l'outil osfs, cet état correspond à salt:

# osfs env-build --target salt

Première page / Page précédante / Sommaire / Page suivante / Dernière page