Feat: dotfiles deployement tested and works

This commit is contained in:
Bertrand Benjamin 2022-01-10 05:24:47 +01:00
parent f47b6c6bea
commit 8927cc07e6
7 changed files with 70 additions and 40 deletions

View File

@ -1,8 +1,4 @@
--- ---
me:
username: 'user1' username: 'user1'
config2stow: ["nvim", "tmux", "zsh"] config2stow: ["nvim", "tmux", "zsh"]
autofs:
- host: nas

View File

@ -1,2 +0,0 @@
Nas_commun -rw,soft,intr,rsize=8192,wsize=8192 nas:/mnt/DocNas/Commun
Nas_perso -rw,soft,intr,rsize=8192,wsize=8192 nas:/mnt/DocNas/Benjamin

View File

@ -1,8 +1,43 @@
--- ---
- name: Converge - name: Converge
hosts: all hosts: all
vars:
users:
- username: user1
config2stow: ["nvim", "tmux", "zsh"]
password: "$y$j9T$PR8GfM2MjGudOCd7hF9NP1$/qRGtuNuWaRVVGmB1A4rgtaT0MMB9IoB4fnaxW1kvf4" #plop
- username: user2
password: "$y$j9T$PR8GfM2MjGudOCd7hF9NP1$/qRGtuNuWaRVVGmB1A4rgtaT0MMB9IoB4fnaxW1kvf4" #plop
config2stow: ["nvim", "tmux"]
pre_tasks:
- name: update_cache for arch
pacman:
update_cache: yes
become: yes
when: ansible_os_family == "Archlinux"
- name: update_cache for debian
apt:
update_cache: yes
become: yes
when: ansible_os_family == "Debian"
- name: Create user
ansible.builtin.user:
name: "{{ item.username }}"
password: "{{ item.password }}" #plop
state: present
with_items: "{{ users }}"
become: yes
tasks: tasks:
- name: "Include dotfiles" - name: "Include dotfiles"
include_role: include_role:
name: "dotfiles" name: "dotfiles"
become: true vars:
username: "{{ user.username }}"
config2stow: "{{ user.config2stow }}"
loop: "{{ users }}"
loop_control:
loop_var: user

View File

@ -12,3 +12,5 @@ provisioner:
name: ansible name: ansible
verifier: verifier:
name: testinfra name: testinfra
options:
sudo: true

View File

@ -1,17 +1,23 @@
"""Role testing files using testinfra.""" """Role testing files using testinfra."""
USER1 = "user1"
USER2 = "user2"
def test_stow_installed(host): def test_stow_installed(host):
stow = host.package("stow") stow = host.package("stow")
assert stow.is_installed assert stow.is_installed
def test_dotfile_cloned(host): def test_dotfile_cloned(host):
homepath = host.run("pwd").stdout[:-1] dotfiles = host.file(f"/home/{USER1}/.dotfiles")
dotfiles = host.file(homepath + "/.dotfiles")
assert dotfiles.exists assert dotfiles.exists
assert dotfiles.user == USER1
dotfiles = host.file(f"/home/{USER2}/.dotfiles")
assert dotfiles.exists
assert dotfiles.user == USER2
def test_dotfile_stowed(host): def test_dotfile_stowed(host):
homepath = host.run("pwd").stdout[:-1] homepath = f"/home/{USER1}"
nvim = host.file(homepath + "/.config/nvim/") nvim = host.file(homepath + "/.config/nvim/")
assert nvim.exists assert nvim.exists
tmux = host.file(homepath + "/.tmux/") tmux = host.file(homepath + "/.tmux/")
@ -21,3 +27,13 @@ def test_dotfile_stowed(host):
zsh = host.file(homepath + "/.config/zsh/") zsh = host.file(homepath + "/.config/zsh/")
assert zsh.exists assert zsh.exists
homepath = f"/home/{USER2}"
nvim = host.file(homepath + "/.config/nvim/")
assert nvim.exists
tmux = host.file(homepath + "/.tmux/")
assert tmux.exists
zshenv = host.file(homepath + "/.zshenv")
assert not zshenv.exists
zsh = host.file(homepath + "/.config/zsh/")
assert not zsh.exists

View File

@ -1,18 +0,0 @@
---
- name: Create NAS share directory
file:
path: "/media/{{ item.host }}"
state: directory
with_items: "{{ autofs }}"
- name: Activate NAS shares for autofs
lineinfile:
path: /etc/autofs/auto.master
line: "/media/{{ item.host }} /etc/autofs/auto.{{ item.host }} --timeout=60 --browse"
with_items: "{{ autofs }}"
- name: NAS autofs config file
template:
src: "files/autofs.{{ item.host }}"
dest: "/etc/autofs/auto.{{ item.host }}"
with_items: "{{ autofs }}"

View File

@ -10,23 +10,24 @@
- name: Clone dotfiles - name: Clone dotfiles
ansible.builtin.git: ansible.builtin.git:
repo: 'https://git.opytex.org/lafrite/dotfiles.git' repo: 'https://git.opytex.org/lafrite/dotfiles.git'
dest: ~/.dotfiles dest: "/home/{{ username }}/.dotfiles"
become: true become: yes
become_user: "{{ me.username }}"
- name: user owns its dotfiles
ansible.builtin.file:
path: "/home/{{ username }}/.dotfiles"
owner: "{{ username }}"
become: yes
- name: stow configs - name: stow configs
ansible.builtin.command: ansible.builtin.command:
cmd: stow {{ item }} cmd: stow {{ item }}
chdir: ~/.dotfiles/ chdir: "/home/{{ username }}/.dotfiles"
with_items: "{{ config2stow }}" with_items: "{{ config2stow }}"
become: true become: yes
become_user: "{{ me.username}}"
- name: home mounts
import_tasks: home_mounts.yml
- name: Gnome config - name: Gnome config
import_tasks: gnome.yml import_tasks: gnome.yml
become: true #become: true
become_user: "{{ me.username }}" become_user: "{{ username }}"
when: no # soucis avec la version de psutil when: no # soucis avec la version de psutil