Feat: dotfiles deployement tested and works
This commit is contained in:
parent
f47b6c6bea
commit
8927cc07e6
|
@ -1,8 +1,4 @@
|
||||||
---
|
---
|
||||||
me:
|
username: 'user1'
|
||||||
username: 'user1'
|
|
||||||
|
|
||||||
config2stow: ["nvim", "tmux", "zsh"]
|
config2stow: ["nvim", "tmux", "zsh"]
|
||||||
|
|
||||||
autofs:
|
|
||||||
- host: nas
|
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
||||||
|
|
|
@ -12,3 +12,5 @@ provisioner:
|
||||||
name: ansible
|
name: ansible
|
||||||
verifier:
|
verifier:
|
||||||
name: testinfra
|
name: testinfra
|
||||||
|
options:
|
||||||
|
sudo: true
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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 }}"
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue