Créez et automatiser son infrastructure sur Raspberry

Print Friendly, PDF & Email

Raspberry, ces micro-serveurs qui permettent de prendre de plus en plus de plaisir depuis la version 4 et ses 4 gigas de RAM. Pour un coût économique, vous pouvez vous faire plaisir et jouer les sysadmin à domicile. Un bon moyen d’apprendre quelques astuces et bonnes pratiques.

Alors certes, vous allez y passer du temps mais vous allez y prendre du plaisir. en plus pour une fois vous serrez le seul à décider de ce que vous faites et comment vous le faites.

Je vous propose donc une série dédiée à l’automatisation sur raspberry d’une petite infra web.

Les users pour commencer

Avant d’arriver sur un serveur, vous devez au moins y accéder en ssh. Mais pas question d’utiliser le user par défaut raspberry. Il est logique de se créer ses propres users et de supprimer ce user raspberry qui représente un grand risque de sécurité car présent sur tous les raspberry.

Mais on va quand même pas se palucher ça à la main ? et non ansible est là pour vous aider.

Ansible : l’automatisation

Très simplement ansible va vous permettre de mettre en place votre infrastructure de raspberry. Et rien de tel que de créer des users pour le faire.

Pour débuter notre formation, nous allons découvrir l’inventory. Il s’agit de la liste de serveurs qui peut être décrite soit en yaml ou en json. Personnellement je préfère le format yaml que l’on retrouve dans tous les autres fichiers ansible.

Et voici ce que donne mon inventory :

all:
  children:
    door:
      hosts:
        192.168.1.31:
    back:
      hosts:
        192.168.1.41:
        192.168.1.42:

Notre fichier playbook va pour l’instant simplement décrire les tâches réalisées en appelant des modules.

- name: deploy users
  hosts: all
  become: yes
  vars:
    users_admin:
    - "xavki"
    users_no_admin:
    - "xavier"
  tasks:
  - name: create group admin
    group:
      name: "admin"
      state: present

  - name: create admin user accounts
    user:
      name: "{{ item }}"
      groups: "admin"
    with_items:
    - "{{ users_admin }}"
 
  - name: create standard user accounts
    user:
      name: "{{ item }}"
    with_items:
    - "{{ users_no_admin }}"

  - name: add authorized keys
    authorized_key:
      user: "{{ item }}"
      key: "{{ lookup('file', 'files/'+ item + '.key.pub') }}"
    with_items: 
    - "{{ users_admin }}"
    - "{{ users_no_admin }}"
 
  - name: "Allow admin users to sudo without a password"
    lineinfile:
      dest: "/etc/sudoers"
      state: "present"
      regexp: "^%sudo"
      line: "%admin ALL=(ALL) NOPASSWD: ALL"

Source : https://gitlab.com/xavki/raspberry-tricks/-/tree/master/1-create-users

Découvrez  Raspberry et Ansible : gestion des clefs SSH et suppression du user par défaut