139 lines
6.5 KiB
Markdown
139 lines
6.5 KiB
Markdown
## Ajout de la gestion d'une nouvelle machine
|
||
|
||
1. Activer l'environnement virtuel de DebOps et se placer à la racine
|
||
de son projet DebOps :
|
||
|
||
source ~/src/debops-venv/bin/activate
|
||
cd ~/src/cargoday.debops/ansible
|
||
|
||
1. Éditer le fichier **ansible/inventory/hosts** et ajouter une
|
||
nouvelle machine dans le groupe **debops\_all\_hosts** :
|
||
|
||
[debops_all_hosts]
|
||
bullseye.ipr ansible_ssh_host=bullseye.ipr.univ-rennes1.fr
|
||
|
||
1. Créer une clef SSH pour son utilisateur si ce n'est pas déjà
|
||
fait :
|
||
|
||
ssh-keygen -t ed25519
|
||
|
||
1. S'assurer que l'utilisateur actuel est bien autorisé à se
|
||
connecter en tant que **root** via SSH avec sa clef privée :
|
||
|
||
ANS_HOST_FQDN="bullseye.ipr.univ-rennes1.fr
|
||
ANS_HOST="bullseye.ipr
|
||
ssh-copy-id root@"${ANS_HOST_FQDN:=/dev/null}"
|
||
|
||
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "~/.ssh/id_ed25519.pub"
|
||
The authenticity of host 'bullseye.ipr.univ-rennes1.fr (WWW.XXX.YYY.ZZZ)' can't be established.
|
||
ECDSA key fingerprint is SHA256:HxPXY3xoXHzEynZA3lppYueGXds77hLxXRawWmSeVWY.
|
||
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes <=========
|
||
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
|
||
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
|
||
root@bullseye.ipr.univ-rennes1.fr's password: <=========
|
||
|
||
Number of key(s) added: 1
|
||
|
||
Now try logging into the machine, with: "ssh 'root@bullseye.ipr.univ-rennes1.fr'"
|
||
and check to make sure that only the key(s) you wanted were added.
|
||
|
||
1. Créer un premier fichier de variables pour toutes les machines
|
||
afin d'autoriser les connexions SSH des utilisateurs avec un mot
|
||
de passe.
|
||
|
||
Le fichier [ansible/inventory/group_vars/all/sshd.yml][sshd file]
|
||
permettra de surcharger les valeurs par défaut des variables du
|
||
rôle **debops.sshd** :
|
||
|
||
---
|
||
|
||
# vars file for all hosts to configure sshd role
|
||
|
||
# Allow password authentication
|
||
sshd__password_authentication: 'yes'
|
||
|
||
|
||
1. Lors de l'ajout d'une nouvelle machine, la première chose à faire
|
||
est d'appliquer l'un des playbooks DebOps dédié au **bootstrap** :
|
||
|
||
Ces playbooks permettent entre autre d'installer le minimum
|
||
requis pour qu'Ansible et DebOps s'appliquent correctement sur la
|
||
nouvelle machine.
|
||
* `debops bootstrap -u root -l "${ANS_HOST:=/dev/null}"`
|
||
|
||
Ce premier playbook **bootstrap** va automatiquement créer un
|
||
premier utilisateur sur la machine distante avec le même nom
|
||
d'utilisateur que celui utilisé pour lancer la commande
|
||
`debops` et y transférer sa clef SSH.
|
||
|
||
Cet utilisateur sera également placé dans le groupe **admins**
|
||
et pourra lancer des commandes via `sudo`.
|
||
|
||
* `debops bootstrap-ldap -u root -l "${ANS_HOST:=/dev/null}"`
|
||
|
||
Ce second playbook **bootstrap-ldap** va configurer une
|
||
authentification LDAP via le rôle **debops.nslcd** et nécessite
|
||
donc une petite configuration supplémentaire via un fichier
|
||
d'inventaire dédié (ex. ansible/inventory/group\_vars/all/nslcd.conf).
|
||
Voir [la documentation dédiée à debops.nslcd][debops doc nslcd]
|
||
et au minimum les paramètres :
|
||
|
||
* nslcd\_\_ldap\_binddn
|
||
* nslcd\_\_ldap\_bindpw (possibilité de chiffrer via ansible-vault)
|
||
* nslcd\_\_ldap\_base\_dn
|
||
* Un exemple de fichier de configuration est également disponible
|
||
sous [cargoday.debops/ansible/inventory/group_vars/all/nslcd.yml][nslcd file]
|
||
|
||
|
||
* Exemple de résultat après l'application d'un playbook bootstrap :
|
||
|
||
PLAY RECAP *****************************************************************************
|
||
bullseye.ipr : ok=250 changed=124 unreachable=0 failed=0 skipped=103 rescued=0 ignored=0
|
||
|
||
Install PKI packages ---------------------------------------------------- 9.25s
|
||
Create base directory hierarchy ----------------------------------------- 8.26s
|
||
Flush handlers for PKI -------------------------------------------------- 7.38s
|
||
Install packages for nslcd support -------------------------------------- 6.32s
|
||
Install required APT packages ------------------------------------------- 4.77s
|
||
Install required packages ----------------------------------------------- 4.20s
|
||
Install atd ------------------------------------------------------------- 4.18s
|
||
Install Libuser requested packages -------------------------------------- 4.02s
|
||
Gather Ansible facts if needed ------------------------------------------ 3.91s
|
||
Ensure that requested UNIX system groups exist -------------------------- 3.83s
|
||
|
||
1. Il est ensuite normalement possible de se connecter en SSH :
|
||
|
||
ssh "${ANS_HOST_FQDN}"
|
||
marvin@bullseye.ipr.univ-rennes1.fr's password:
|
||
Creating directory '/home/marvin'.
|
||
Linux bullseye 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64
|
||
----------------------------------------------------------------------
|
||
This system is managed by Ansible, manual changes will be lost
|
||
----------------------------------------------------------------------
|
||
$ hostname -f
|
||
bullseye.univ-rennes1.fr
|
||
|
||
|
||
### DH params
|
||
|
||
L'exécution de la toute première commande `debops` peut être un peu
|
||
longue car elle va générer des paramètres Diffie-Hellman qui seront
|
||
utilisés par défaut une première fois sur les nouvelles machines.
|
||
|
||
Un job `atd` est ensuite placé sur les machines pour les régénérer
|
||
afin qu'ils soient uniques et propres à chaque hôte.
|
||
|
||
Pour plus d'informations, voir les documentations relatives à :
|
||
|
||
* [la configuration d'une nouvelle machine][debops doc configuration machine]
|
||
* [les informations liées au premier lancement de dhparam][debops doc dhparam]
|
||
|
||
|
||
<!--Liste des URLs utilisées dans le doc :-->
|
||
[debops doc bootstrap]: https://docs.debops.org/en/master/introduction/getting-started.html#bootstrap-a-new-host
|
||
[debops doc nslcd]: https://docs.debops.org/en/master/ansible/roles/nslcd/defaults/main.html#ldap-environment
|
||
[sshd file]: cargoday.debops/ansible/inventory/group_vars/all/sshd.yml
|
||
[nslcd file]: cargoday.debops/ansible/inventory/group_vars/all/nslcd.yml
|
||
[debops doc configurahttps://docs.debops.org/en/master/introduction/getting-started.html#bootstrap-a-new-hosttion machine]: https://docs.debops.org/en/master/introduction/getting-started.html#configure-the-remote-host
|
||
[debops doc dhparam]: https://docs.debops.org/en/master/ansible/roles/dhparam/getting-started.html#initial-configuration
|