Partie commune à tous les systèmes

À partir de maintenant, l'ensemble des déploiements et configuration ne se feront qu'avec l'aide de salt. En conséquence, chacune des sections décrira la configuration système recherchée ainsi que le fichier de configuration salt associé.

La première étape consiste à:

  • déployer l'ensemble des paquets devant être présent sur les nœuds de la plateforme:
    • shorewall: firewall sur le nœud
    • libvirt: ainsi que ces dépendances pour la gestion des environnements de virtualisation (LXC et KVM)
    • rsyslog: pour la gestion des journaux
    • sudo: permet l'exécution de commande avec des droits différents
    • outils classique d'administration: vim, screen, multitail
  • configurer les outils déployés:
    • apt
    • ssh
    • compte root
    • gestion des comptes utilisateurs
    • exim4 (MTA)
    • NTP (synchronisation des horloges)
    • interfaces réseaux

Paramétrage de apt

Il s'agit principalement de:

  • empêcher l'installation automatique des paquets: suggérés ou recommandés
  • installer le support à HTTPS (utiliser pour l'installation de Ceph notamment)
# cat <<EOF > /srv/salt/states/common/apt.sls
/etc/apt/apt.conf.d/90local:
  file.managed:
    - contents:
      - APT::Install-Recommends "0";
      - APT::Install-Suggests "0";
      - APT::Default-Release "jessie";

apt-transport-https:
  pkg.installed
EOF

Paramétrage de SSH

Il s'agit essentiellement de déployer les fichiers des clés systèmes afin d'éviter les questions de confirmation d'identité (nécessaire pour Ceph).

Ce fichier doit être fournir à l'emplacement: /srv/salt/ext_pillars/hosts/ctrl-[123]/ssh_known_hosts.

# cat << EOF > /srv/salt/states/common/ssh.sls
/etc/ssh/ssh_known_hosts:
  file.managed:
    - contents_pillar: ssh_known_hosts
EOF

Configuration de root et des utilisateurs

Configuration du MTA (exim4)

Pour cette infrastructure, les mails ne sont pas traités en local. L'ensemble des MTA sont configurés pour relayer les messages vers MTA principal.

La configuration se fait en 2 temps:

  • mise à jour du fichier /etc/exim4/update-exim4.conf.conf

    # cat <<EOF >/srv/salt/states/common/exim4/files/update-exim4.conf.conf
    dc_eximconfig_configtype='satellite'
    dc_other_hostnames=''
    dc_local_interfaces='127.0.0.1 ; ::1'
    dc_readhost={{pillar['mail']['readhost']}}
    dc_relay_domains=''
    dc_minimaldns='false'
    dc_relay_nets=''
    dc_smarthost={{pillar['mail']['smarthost']}}
    CFILEMODE='644'
    dc_use_split_config='false'
    dc_hide_mailname='true'
    dc_mailname_in_oh='true'
    dc_localdelivery='mail_spool'
    EOF
    
  • exécution de l'outil de configuration update-exim4.conf

    # cat <<EOF >/srv/salt/states/common/exim4/init.sls
    /etc/exim4/update-exim4.conf.conf:
      file.managed:
        - source: salt://common/exim4/files/update-exim4.conf.conf
        - template: jinja
    
    update-exim4.conf:
      cmd.run:
        - onchanges:
          - file: /etc/exim4/update-exim4.conf.conf
    EOF
    

Synchronisation des horloges

La synchronisation des horloges des différents systèmes est primordiale. En effet, les mécanismes de détection de défaillance (pacemaker, Ceph, etc) sont largement basés sur une hypothèse d'horloges précises et synchronisées.

Pour ce but, nous déployons l'outil standard NTP. Les ctrls se synchronisent sur des sources externes (*.debian.pool.ntp.org) alors que les éventuels autres nœuds se synchronisent sur les ctrls.

Les fichiers de configuration sont:

  • /srv/salt/states/common/files/ntp.conf:

    ntp.conf (Source)

    # /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
    
    driftfile /var/lib/ntp/ntp.drift
    
    
    # Enable this if you want statistics to be logged.
    #statsdir /var/log/ntpstats/
    
    statistics loopstats peerstats clockstats
    filegen loopstats file loopstats type day enable
    filegen peerstats file peerstats type day enable
    filegen clockstats file clockstats type day enable
    
    
    # You do need to talk to an NTP server or two (or three).
    #server ntp.your-provider.example
    
    # pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
    # pick a different set every time it starts up.  Please consider joining the
    # pool: <http://www.pool.ntp.org/join.html>
    {% if grains['host'] in ['ctrl-1', 'ctrl-2', 'ctrl-3'] %}
    server 0.debian.pool.ntp.org iburst
    server 1.debian.pool.ntp.org iburst
    server 2.debian.pool.ntp.org iburst
    server 3.debian.pool.ntp.org iburst
    {% else %}
    server ctrl-1.srv iburst
    server ctrl-2.srv iburst
    server ctrl-3.srv iburst
    {% endif %}
    
    # Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
    # details.  The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
    # might also be helpful.
    #
    # Note that "restrict" applies to both servers and clients, so a configuration
    # that might be intended to block requests from certain clients could also end
    # up blocking replies from your own upstream servers.
    
    # By default, exchange time with everybody, but don't allow configuration.
    restrict -4 default kod notrap nomodify nopeer noquery
    restrict -6 default kod notrap nomodify nopeer noquery
    
    # Local users may interrogate the ntp server more closely.
    restrict 127.0.0.1
    restrict ::1
    
    # Clients from this (example!) subnet have unlimited access, but only if
    # cryptographically authenticated.
    #restrict 192.168.123.0 mask 255.255.255.0 notrust
    
    
    # If you want to provide time to your local subnet, change the next line.
    # (Again, the address is an example only.)
    #broadcast 192.168.123.255
    
    # If you want to listen to time broadcasts on your local subnet, de-comment the
    # next lines.  Please do this only if you trust everybody on the network!
    #disable auth
    #broadcastclient
    
  • /srv/salt/states/common/ntp.sls:

    # cat <<EOF > /srv/salt/states/common/ntp.sls
    ntp:
      pkg:
        - installed
      service.running:
        - watch:
          - file: /etc/ntp.conf
    
    
    /etc/ntp.conf:
      file.managed:
        - source: salt://common/files/ntp.conf
        - template: jinja
    EOF
    

Configurations des interfaces réseaux

Installation de paquets

Automatisation

L'intégration au sein de salt de tout ces modules se fait avec le fichier:

# cat <<EOF >/srv/salt/states/common/init.sls
include:
  - common.apt
  - common.ssh
  - common.root
  - common.exim4
  - common.ntp
  - common.setupbase
  - users
  - common.network
  - shorewall
  - common.virtualisation
EOF

Ainsi que la définition d'un fichier pour l'orchestrateur. Dans le cas de common, l'orchestrateur n'est pas utile. Par contre, pour les modules suivant où un autre de déploiement entres les serveurs doit être respecté, la définition du fichier d'orchestration devient nécessaire.

# cat <<EOF > /srv/salt/states/orch/common.sls
common_setup:
  salt.state:
    - tgt: '*'
    - sls: common
EOF

La mise en œuvre de toutes ces configurations se fait avec:

# salt-run state.orchestrate orch.common

À l'aide de l'outil osfs, pour tout reconstruire jusqu'à cette étape, il suffit de faire:

# osfs env-build --target common

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