🔧 🏠 Always WIP
dnf install git- Installer mise
git clone https://github.com/sylvainmetayer/dotfiles.git $HOME/dotfilescd $HOME/dotfiles && mise trust && mise install- Optionnel, pour l'autocomplétion des commandes ansible :
activate-global-python-argcomplete --dest ~/.bashrc.d/chmod +x ~/.bashrc.d/python-argcomplete
mise installe uv et Python, et active automatiquement le virtualenv .venv (dépendances déclarées dans pyproject.toml).
Les rôles et collections Galaxy s'installent avec :
mise run installLes playbooks sont aplatis dans le dossier playbook/ à la racine. Chaque machine possède un fichier setup-<host>.yaml correspondant à une entrée de inventory.yml.
| Machine | Fichier | Commande |
|---|---|---|
| Dell (Fedora perso) | playbook/setup-dell.yaml |
ansible-playbook playbook/setup-dell.yaml -K |
| Home (Fedora desktop) | playbook/setup-home.yaml |
ansible-playbook playbook/setup-home.yaml -K (ou mise run home) |
| GOP (Laptop entreprise) | playbook/setup-gop.yaml |
ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible_vault.txt ansible-playbook playbook/setup-gop.yaml -K |
Chaque rôle est associé à un tag, ce qui permet de rejouer une partie seulement :
ansible-playbook playbook/setup-home.yaml -K --tags gnomeVariables non sensibles par machine : host_vars/<host>.yaml. Variables partagées : group_vars/all.yaml.
Pour récupérer la valeur SSH_AUTH_SOCK (utile pour KeepassXC) : systemctl status --user ssh-agent puis configurer KeepassXC avec ce socket.
mise run lint # ansible-lint
mise run lint-fix # ansible-lint --fix
yamllint .Le playbook GOP ajoute le rôle gop contenant des tâches spécifiques. Certains fichiers sont chiffrés via Ansible Vault. Gestion des outils (ex plugins) désormais via mise_global_plugins dans host_vars.
Pré-requis :
- Base de données
selfhosted.kdbxdisponible (sinon la télécharger depuis https://r.sylvain.dev/dotfiles-database). - Exécuter
./scripts/extract-secrets.sh DATABASE_LOCATIONpour extraire le mot de passe (stocké dans~/.ansible_vault.txt).
Fichiers sensibles :
FILE=$HOME/dotfiles/roles/gop/templates/aws_config.j2
FILE=$HOME/dotfiles/roles/gop/templates/ssh_hosts.j2
FILE=$HOME/dotfiles/playbooks/gop/locals.ymlOpérations Vault :
ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible_vault.txt ansible-vault view $FILE
ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible_vault.txt ansible-vault edit $FILE
ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible_vault.txt ansible-vault encrypt $FILE
ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible_vault.txt ansible-vault decrypt $FILEExécution :
ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible_vault.txt ansible-playbook playbook/setup-gop.yaml -KLa publication de la collection sylvainmetayer.workstation est automatique : un push sur main déclenche le workflow Deploy Collection, qui incrémente la version dans galaxy.yml puis build et publie sur Galaxy.
Manuellement :
ansible-galaxy collection build
ansible-galaxy collection publish sylvainmetayer-workstation-<version>.tar.gz --token TOKEN