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:
# /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