J’ai créé un rôle Ansible pour la configuration rapide d’un nouveau serveur Debian ou Ubuntu mis en place. Il est aussi utile pour la mise à jour de commandes, clé SSH, nouvel utilisateur, scripts, alias, configuration vim, etc. Ce rôle basic est disponible sur Ansible Galaxy et le projet est disponible sur github également.

Installation du rôle basic

Pour installer ce rôle de configuration sous Debian ou Ubuntu rien de plus simple :

ansible-galaxy install belgotux.basic

Pré-requis sur un host Debian

Un playbook d’initialisation playbook-init-server.yml est à exécuter seulement sur un host Debian. Pour Ubuntu si vous avez installé en y ajoutant votre clé SSH dès l’installation, vous n’aviez rien à faire. Exemple :

ansible-playbook -i inventories/prod roles/basic/playbook-init-server.yml -e 'myhost=node9 user=devops become_meth=sudo' -kK

Pré-requis pour Debian ou Ubuntu

Vous devez copier basic.aliases.example vers basic.aliases pour pouvoir ajouter vos propres alias, il y en a déjà certains utiles dans le fichier d’exemple.

Configuration des variables Ansible

  • bm prend la valeur yes pour installer des outils pour serveur physique
  • ssh_key_filename clé SSH généré pour root, utile pour les accès serveur à serveur (default id_rsa)
  • basic_list_users liste d’utilisateur et clé SSH :
    • name utilisateur
    • primarygroup groupe par défaut de l’utilisateur
    • groups groupes de l’utilisateur
    • pubkeys liste de clés publiques de l’utilisateur, les fichiers dans le dossier files
    • home home utilisateur (default /home/username)
    • shell prompt utilisateur (default /bin/bash)
    • create_home créer le répertoire utilisateur (default true)
    • append ajouter ou remplacer les groupes (default true to append)
    • passwd hash du mot de passe de l’utilisateur
      • mkpasswd --method=sha-512 résultat du genre $6$
      • docker run --rm -it ulikoehler/mkpasswd résultat en yescript $y$ pour ubuntu >22.04
    • generate_ssh_key générer une paire de clé SSH (default false)
  • root_public_keys liste de clés publiques à copier depuis le dossier files pour root
  • bash_alias_shared activer le partage d’alias (installé dans /usr/share uniquement avec l’utilisateur root via remote_user ou become dans le playbook) (default installe seulement les alias dans le répertoire home de l’utilisateur via remote_user)
  • bash_alias_dir_share (default /usr/share)

optional

  • auto_upgrade Configurer inattended-upgrades (default false)
  • basic_packages_default Liste des paquets commun à installer
  • basic_packages_extra Liste d’autres paquets supplémentaire pour un groupe ou une machine spécifiques
  • staff_directories liste des répertoires qui peuvent être modifiés par le groupe staff
  • basic_custom_scripts_common liste des scripts locaux commun à copier dans /usr/local/bin
  • basic_custom_scripts_local liste des scripts locaux supplémentaires à copier dans /usr/local/bin (à utiliser dans hosts)

Exemple de playbook

- hosts: [homeservers,vps]
  remote_user: root
  roles:
    - name: basic
      vars: 
        basic_list_users:
          - name: belgotux
            primarygroup: belgotux
            groups: sudo,users,staff,adm
            shell: "/bin/zsh"
            passwd: $6$xxxx
            pubkeys:
              - xxx.pub
              - yyy.pub
        bash_alias_shared: yes
        staff_directories:
          - /usr/local/bin
          - /usr/local/etc
        auto_upgrade: true
Summary
Ansible rôle de configuration Debian - Ubuntu
Article Name
Ansible rôle de configuration Debian - Ubuntu
Description
Rôle Ansible pour la configuration et l'installation d'outils nécessaires sur des serveurs Debian et Ubuntu comme les scripts, alias, clé SSH, etc
Author