En partant d’un archlinux vierge avec juste openssh installé, setup d’un projet ansible et installation de k3s

Accès et inventaire

Il y a dans le repo un vagrantfile et l’inventaire ansible correspondant. Dans un premier temps le mini pc n’est utilisé par personne, donc le mini pc fait office d’env de dev et ca provoque le premier problème: comment y acceder?

Je veux acceder à mon server dans 3 situations differentes:

  • depuis mon propre reseau
  • depuis l’exterieur (en 4g par exemple)
  • depuis le reseau de mon travail (a travers un proxy)

Pour ça, je vais masquer ces complications à ansible en confiant tout a une config ssh par cas. Ma clé ssh est dans l’emplacement par defaut (~/.ssh/id_rsa) et l’inventaire ‘live’ du projet ansible n’a qu’un host:

sillykube

Depuis mon réseau

Le cas le plus simple le serveur repond sur le port classique avec cette configuration ssh:

Host sillykube
    Hostname 192.168.86.20
    User XXXXXXXX

Depuis l’exterieur

J’ai configuré mon routeur pour que le port 2222 (par exemple) renvoie vers le port 22 de mon serveur

Host sillykube
    Hostname 111.111.111.111 # mon ip externe
    User XXXXXXXX
    Port 2222

Depuis le travail

Pour sortir du reseau, je dois passer par un proxy authentifié. Pour ça j’ai besoin de corkscrew (sudo pacman -S corkscrew) et d’un fichier contenant mon mot de passe.

/home/bruno_paulin/.ssh/auth:

MON_LOGIN:MON_PASSWORD

Le fichier de configuration ssh se complexifie un peu pour passer par corkscrew:

Host sillykube
    Hostname 111.111.111.111 # mon ip externe
    User XXXXXXXX
    Port 2222
    ProxyCommand corkscrew <PROXY_IP> <PROXY_PORT> %p /home/bruno_paulin/.ssh/auth

Au final, j’ai ces 3 fichiers ignorés a la racine du repo et je suis a un lien symbolique de pouvoir acceder a mon serveur quelque soit la situation.

Playbook système

Comme sur mon poste je vais utiliser yay pour installer les packages natifs et les packages aur de la meme maniere.

Pour ca, une collection ansible existe: ansible-aur que j’installe avec ansible-galaxy collection install kewlfft.aur

Yay ne pouvant pas se lancer en root mais ayant besoin du mot de passe root plus tard dans le process, il faut créer un user pouvant acceder a pacman sans avoir a taper un mot de passe:

- name: Create the `aur_builder` user
    become: true
    ansible.builtin.user:
    name: aur_builder
    create_home: true
    group: wheel

- name: Allow the `aur_builder` user to run `sudo pacman` without a password
    become: true
    ansible.builtin.lineinfile:
    path: /etc/sudoers.d/11-install-aur_builder
    line: 'aur_builder ALL=(ALL) NOPASSWD: /usr/bin/pacman'
    mode: '600'
    create: true
    validate: 'visudo -cf %s'

On peut maintenant installer les packages de build (qui seront de toute facon utiles a un moment ou a un autre pour contruire les packages aur) et utiliser makepkg (natif) pour installer yay

- name: install build packages
    become: true
    ansible.builtin.pacman:
    name:
        - base-devel
    update_cache: true
    state: present

- name: Install yay using makepkg if it isn't installed already
    kewlfft.aur.aur:
    name: yay
    use: makepkg
    state: present
    become: true
    become_user: aur_builder

Et pour finir l’installation du systeme, j’installe quelques packages basiques toujours utiles

- name: Install common packages
  kewlfft.aur.aur:
  name:
    - htop
    - ncdu
    - p7zip
    - speedtest-cli
    - vim
    - jq
    - curl
  use: yay
  state: present
  become: true
  become_user: aur_builder