first commit
This commit is contained in:
commit
5a481bcc14
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Le Garage Numérique
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
34
README.md
Normal file
34
README.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# Debian 13 Ansible workstation installation
|
||||||
|
|
||||||
|
Collection of ansible roles to provision a debian 13 workstation locally
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install ansible
|
||||||
|
```
|
||||||
|
|
||||||
|
## Utilisation
|
||||||
|
|
||||||
|
- Test with vagrant:
|
||||||
|
> Create a trixi vagrant box [here](https://git.legaragenumerique.fr/GARAGENUM/packer-box-deb13)
|
||||||
|
|
||||||
|
- Install all:
|
||||||
|
```bash
|
||||||
|
ansible-playbook playbooks/install.yml --ask-become-pass
|
||||||
|
```
|
||||||
|
|
||||||
|
- Install only one role:
|
||||||
|
```bash
|
||||||
|
ansible-playbook playbooks/install.yml --ask-become-pass --tags ollama
|
||||||
|
```
|
||||||
|
|
||||||
|
## To add
|
||||||
|
|
||||||
|
- [ ] hugo (extended)
|
||||||
|
|
||||||
|
## To test
|
||||||
|
|
||||||
|
- [x] ollama
|
||||||
|
- [x] steam
|
||||||
|
- [ ] virtualbox
|
||||||
29
Vagrantfile
vendored
Normal file
29
Vagrantfile
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
require 'yaml'
|
||||||
|
|
||||||
|
settings = YAML.load_file('settings.yml')
|
||||||
|
|
||||||
|
VAGRANTFILE_API_VERSION = "2"
|
||||||
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||||
|
config.ssh.insert_key = false
|
||||||
|
config.vm.synced_folder ".", "/vagrant", disabled: true
|
||||||
|
|
||||||
|
# Box configuration (globale)
|
||||||
|
config.vm.box = settings['box']['name']
|
||||||
|
# config.vm.box_url = settings['box']['url']
|
||||||
|
|
||||||
|
settings['vms'].each do |vm|
|
||||||
|
config.vm.define vm['name'] do |node|
|
||||||
|
node.vm.hostname = vm['hostname']
|
||||||
|
node.vm.network :private_network, ip: vm['ip']
|
||||||
|
# provider
|
||||||
|
config.vm.provider settings['provider']['type'].to_sym do |v|
|
||||||
|
v.memory = vm['memory']
|
||||||
|
|
||||||
|
# Provisioning configuration for Ansible.
|
||||||
|
config.vm.provision "ansible" do |ansible|
|
||||||
|
ansible.playbook = "playbooks/install.yml"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
5
ansible.cfg
Normal file
5
ansible.cfg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[defaults]
|
||||||
|
inventory = inventory.ini
|
||||||
|
roles_path = roles
|
||||||
|
host_key_checking = False
|
||||||
|
retry_files_enabled = False
|
||||||
14
files/sources.list
Normal file
14
files/sources.list
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
deb https://deb.debian.org/debian/ trixie contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://deb.debian.org/debian/ trixie-updates contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie-updates contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://deb.debian.org/debian/ trixie-proposed-updates contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie-proposed-updates contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://deb.debian.org/debian/ trixie-backports contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie-backports contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://security.debian.org/debian-security/ trixie-security contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://security.debian.org/debian-security/ trixie-security contrib main non-free non-free-firmware
|
||||||
37
group_vars/all.yml
Normal file
37
group_vars/all.yml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
timezone: Europe/Paris
|
||||||
|
ansible_user: "{{ lookup('env', 'USER') }}"
|
||||||
|
|
||||||
|
common:
|
||||||
|
apt_update_cache: true
|
||||||
|
apt_upgrade: true
|
||||||
|
|
||||||
|
devtools:
|
||||||
|
tabby_version: "1.0.215"
|
||||||
|
tabby_deb_url: "https://github.com/Eugeny/tabby/releases/download/v{{ tabby_version }}/tabby-{{ tabby_version }}-linux-x64.deb"
|
||||||
|
go_version: "1.22.1"
|
||||||
|
go_arch: "amd64"
|
||||||
|
go_tarball: "go{{ go_version }}.linux-{{ go_arch }}.tar.gz"
|
||||||
|
go_url: "https://go.dev/dl/{{ go_tarball }}"
|
||||||
|
go_install_dir: /usr/local
|
||||||
|
|
||||||
|
element:
|
||||||
|
element_version: "1.11.73"
|
||||||
|
element_deb_url: "https://packages.element.io/debian/pool/main/e/element-desktop/element-desktop_{{ element_version }}_amd64.deb"
|
||||||
|
|
||||||
|
ollama:
|
||||||
|
ollama_install_script: https://ollama.com/install.sh
|
||||||
|
ollama_service_name: ollama
|
||||||
|
ollama_user: ollama
|
||||||
|
ollama_bin: /usr/local/bin/ollama
|
||||||
|
ollama_models:
|
||||||
|
- llama3.2:3b
|
||||||
|
|
||||||
|
wine:
|
||||||
|
winehq_repo_url: https://dl.winehq.org/wine-builds/debian/dists/trixie/winehq-trixie.sources
|
||||||
|
winehq_key_url: https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
winehq_keyring: /etc/apt/keyrings/winehq-archive.key
|
||||||
|
winehq_packages:
|
||||||
|
- winehq-stable
|
||||||
6
inventory.ini
Normal file
6
inventory.ini
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[debian]
|
||||||
|
# Execute on local machine
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
# Exexcute on distant server
|
||||||
|
# 123.456.78.90 ansible_user=user ansible_port=22
|
||||||
18
playbooks/install.yml
Normal file
18
playbooks/install.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
- name: Installation Debian 13 complète
|
||||||
|
hosts: all
|
||||||
|
become: yes
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- common
|
||||||
|
- devtools
|
||||||
|
- docker
|
||||||
|
- ollama
|
||||||
|
- discord
|
||||||
|
- element
|
||||||
|
- wine
|
||||||
|
- steam
|
||||||
|
- brave
|
||||||
|
- freetube
|
||||||
|
- virtualbox
|
||||||
|
- vlc
|
||||||
33
roles/brave/tasks/main.yml
Normal file
33
roles/brave/tasks/main.yml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
- name: Vérifier que le système est Debian
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- ansible_facts['distribution'] == "Debian"
|
||||||
|
fail_msg: "Ce rôle est prévu uniquement pour Debian"
|
||||||
|
tags: brave
|
||||||
|
|
||||||
|
- name: Installer curl
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: curl
|
||||||
|
state: present
|
||||||
|
tags: brave
|
||||||
|
|
||||||
|
- name: Télécharger la clé GPG de Brave
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
|
||||||
|
dest: /usr/share/keyrings/brave-browser-archive-keyring.gpg
|
||||||
|
mode: '0644'
|
||||||
|
tags: brave
|
||||||
|
|
||||||
|
- name: Ajouter le dépôt Brave
|
||||||
|
ansible.builtin.apt_repository:
|
||||||
|
repo: "deb [arch=amd64 signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main"
|
||||||
|
state: present
|
||||||
|
filename: brave-browser-release
|
||||||
|
tags: brave
|
||||||
|
|
||||||
|
- name: Installer Brave
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: brave-browser
|
||||||
|
state: present
|
||||||
|
tags: brave
|
||||||
3
roles/common/defaults/main.yml
Normal file
3
roles/common/defaults/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
apt_update_cache: true
|
||||||
|
apt_upgrade: true
|
||||||
14
roles/common/files/sources.list
Normal file
14
roles/common/files/sources.list
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
deb https://deb.debian.org/debian/ trixie contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://deb.debian.org/debian/ trixie-updates contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie-updates contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://deb.debian.org/debian/ trixie-proposed-updates contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie-proposed-updates contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://deb.debian.org/debian/ trixie-backports contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://deb.debian.org/debian/ trixie-backports contrib main non-free non-free-firmware
|
||||||
|
|
||||||
|
deb https://security.debian.org/debian-security/ trixie-security contrib main non-free non-free-firmware
|
||||||
|
# deb-src https://security.debian.org/debian-security/ trixie-security contrib main non-free non-free-firmware
|
||||||
54
roles/common/tasks/main.yml
Normal file
54
roles/common/tasks/main.yml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
- name: Mise à jour APT
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
cache_valid_time: 3600
|
||||||
|
tags: common
|
||||||
|
|
||||||
|
- name: Déployer /etc/apt/sources.list
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: files/sources.list
|
||||||
|
dest: /etc/apt/sources.list
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
backup: yes
|
||||||
|
tags: common
|
||||||
|
|
||||||
|
- name: Attendre que le verrou APT soit libéré
|
||||||
|
ansible.builtin.shell: while fuser /var/lib/apt/lists/lock /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend > /dev/null 2>&1; do sleep 1; done
|
||||||
|
changed_when: false
|
||||||
|
tags: common
|
||||||
|
|
||||||
|
- name: Mettre à jour le cache APT
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: apt-get update
|
||||||
|
become: yes
|
||||||
|
changed_when: false
|
||||||
|
tags: common
|
||||||
|
|
||||||
|
- name: Mettre à jour tous les paquets
|
||||||
|
ansible.builtin.apt:
|
||||||
|
upgrade: dist
|
||||||
|
when: apt_upgrade
|
||||||
|
tags: common
|
||||||
|
|
||||||
|
- name: Paquets de base
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- rsyslog
|
||||||
|
- ca-certificates
|
||||||
|
- curl
|
||||||
|
- wget
|
||||||
|
- gnupg
|
||||||
|
- git
|
||||||
|
- vim
|
||||||
|
- htop
|
||||||
|
- btop
|
||||||
|
- fail2ban
|
||||||
|
- net-tools
|
||||||
|
- resolvconf
|
||||||
|
- wireguard
|
||||||
|
- python3-venv
|
||||||
|
state: present
|
||||||
|
tags: common
|
||||||
89
roles/devtools/tasks/main.yml
Normal file
89
roles/devtools/tasks/main.yml
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
---
|
||||||
|
- name: Installer outils développeur
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- build-essential
|
||||||
|
- python3
|
||||||
|
- python3-pip
|
||||||
|
- python3-venv
|
||||||
|
- linuxlogo
|
||||||
|
- lolcat
|
||||||
|
- vagrant
|
||||||
|
- kew
|
||||||
|
state: present
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
# VScodium
|
||||||
|
- name: Ajouter la clé GPG VSCodium
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg
|
||||||
|
dest: /usr/share/keyrings/vscodium.gpg
|
||||||
|
mode: '0644'
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
- name: Ajouter le dépôt VSCodium
|
||||||
|
ansible.builtin.apt_repository:
|
||||||
|
repo: "deb [signed-by=/usr/share/keyrings/vscodium.gpg] https://download.vscodium.com/debs vscodium main"
|
||||||
|
filename: vscodium
|
||||||
|
state: present
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
- name: Installer VSCodium
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: codium
|
||||||
|
update_cache: true
|
||||||
|
state: present
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
|
||||||
|
# Tabby.sh
|
||||||
|
- name: Télécharger Tabby
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ tabby_deb_url }}"
|
||||||
|
dest: /tmp/tabby.deb
|
||||||
|
mode: '0644'
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
- name: Installer Tabby
|
||||||
|
ansible.builtin.apt:
|
||||||
|
deb: /tmp/tabby.deb
|
||||||
|
state: present
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
- name: Vérifier si Go est déjà installé
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "{{ go_install_dir }}/go/bin/go"
|
||||||
|
register: go_installed
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
# Go
|
||||||
|
- name: Télécharger Go {{ go_version }}
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ go_url }}"
|
||||||
|
dest: "/tmp/{{ go_tarball }}"
|
||||||
|
mode: '0644'
|
||||||
|
when: not go_installed.stat.exists
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
- name: Supprimer ancienne installation Go
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ go_install_dir }}/go"
|
||||||
|
state: absent
|
||||||
|
when: not go_installed.stat.exists
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
- name: Installer Go {{ go_version }}
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: "/tmp/{{ go_tarball }}"
|
||||||
|
dest: "{{ go_install_dir }}"
|
||||||
|
remote_src: true
|
||||||
|
when: not go_installed.stat.exists
|
||||||
|
tags: devtools
|
||||||
|
|
||||||
|
- name: Ajouter Go au PATH global
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: /etc/profile.d/go.sh
|
||||||
|
mode: '0755'
|
||||||
|
content: |
|
||||||
|
export PATH=$PATH:/usr/local/go/bin
|
||||||
|
tags: devtools
|
||||||
9
roles/devtools/vars/main.yml
Normal file
9
roles/devtools/vars/main.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
tabby_version: "1.0.215"
|
||||||
|
tabby_deb_url: "https://github.com/Eugeny/tabby/releases/download/v{{ tabby_version }}/tabby-{{ tabby_version }}-linux-x64.deb"
|
||||||
|
|
||||||
|
go_version: "1.22.1"
|
||||||
|
go_arch: "amd64"
|
||||||
|
go_tarball: "go{{ go_version }}.linux-{{ go_arch }}.tar.gz"
|
||||||
|
go_url: "https://go.dev/dl/{{ go_tarball }}"
|
||||||
|
go_install_dir: /usr/local
|
||||||
0
roles/discord/tasks/main.yml
Normal file
0
roles/discord/tasks/main.yml
Normal file
19
roles/docker/tasks/main.yml
Normal file
19
roles/docker/tasks/main.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
- name: Installer Docker
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- docker.io
|
||||||
|
- docker-compose
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Activer Docker
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: docker
|
||||||
|
state: started
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
- name: Ajouter l'utilisateur au groupe docker
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: "{{ ansible_user }}"
|
||||||
|
groups: docker
|
||||||
|
append: true
|
||||||
13
roles/element/tasks/main.yml
Normal file
13
roles/element/tasks/main.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
- name: Télécharger Element Desktop
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ element_deb_url }}"
|
||||||
|
dest: /tmp/element-desktop.deb
|
||||||
|
mode: '0644'
|
||||||
|
tags: element
|
||||||
|
|
||||||
|
- name: Installer Element Desktop
|
||||||
|
ansible.builtin.apt:
|
||||||
|
deb: /tmp/element-desktop.deb
|
||||||
|
state: present
|
||||||
|
tags: element
|
||||||
3
roles/element/vars/main.yml
Normal file
3
roles/element/vars/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
element_version: "1.11.73"
|
||||||
|
element_deb_url: "https://packages.element.io/debian/pool/main/e/element-desktop/element-desktop_{{ element_version }}_amd64.deb"
|
||||||
20
roles/freetube/tasks/main.yml
Normal file
20
roles/freetube/tasks/main.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
- name: Vérifier que le système est Debian
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- ansible_facts['distribution'] == "Debian"
|
||||||
|
fail_msg: "Ce rôle est prévu uniquement pour Debian"
|
||||||
|
tags: freetube
|
||||||
|
|
||||||
|
- name: Télécharger le paquet FreeTube
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://github.com/FreeTubeApp/FreeTube/releases/download/v0.23.15-beta/freetube_0.23.15_beta_amd64.deb
|
||||||
|
dest: /tmp/freetube.deb
|
||||||
|
mode: '0644'
|
||||||
|
tags: freetube
|
||||||
|
|
||||||
|
- name: Installer le paquet FreeTube
|
||||||
|
ansible.builtin.apt:
|
||||||
|
deb: /tmp/freetube.deb
|
||||||
|
state: present
|
||||||
|
tags: freetube
|
||||||
5
roles/ollama/defaults/main.yml
Normal file
5
roles/ollama/defaults/main.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
ollama_install_script: https://ollama.com/install.sh
|
||||||
|
ollama_models: []
|
||||||
|
ollama_service_name: ollama
|
||||||
|
ollama_bin: /usr/local/bin/ollama
|
||||||
5
roles/ollama/handlers/main.yml
Normal file
5
roles/ollama/handlers/main.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
- name: Restart Ollama
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: ollama
|
||||||
|
state: restarted
|
||||||
41
roles/ollama/tasks/install.yml
Normal file
41
roles/ollama/tasks/install.yml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
- name: Vérifier que le système est Linux
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- ansible_facts.system == "Linux"
|
||||||
|
fail_msg: "Ollama est uniquement supporté sur Linux"
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- name: Vérifier si Ollama est déjà installé
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "{{ ollama_bin }}"
|
||||||
|
register: ollama_bin_stat
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- name: Installer curl (prérequis)
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: curl
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- name: Télécharger le script d’installation Ollama
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ ollama_install_script }}"
|
||||||
|
dest: /tmp/ollama_install.sh
|
||||||
|
mode: '0755'
|
||||||
|
when: not ollama_bin_stat.stat.exists
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- name: Installer Ollama
|
||||||
|
ansible.builtin.command: /tmp/ollama_install.sh
|
||||||
|
when: not ollama_bin_stat.stat.exists
|
||||||
|
notify: Restart Ollama
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- name: Activer et démarrer le service Ollama
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: "{{ ollama_service_name }}"
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
|
tags: ollama
|
||||||
6
roles/ollama/tasks/main.yml
Normal file
6
roles/ollama/tasks/main.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- import_tasks: install.yml
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- import_tasks: models.yml
|
||||||
|
tags: ollama
|
||||||
6
roles/ollama/tasks/models.yml
Normal file
6
roles/ollama/tasks/models.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
- name: Pull ollama models
|
||||||
|
become: true
|
||||||
|
command: >
|
||||||
|
{{ ollama_bin }} pull {{ item.name }}
|
||||||
|
loop: "{{ ollama_models }}"
|
||||||
|
tags: ollama
|
||||||
24
roles/steam/tasks/main.yml
Normal file
24
roles/steam/tasks/main.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
- name: Vérifier que le système est Debian
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- ansible_facts['distribution'] == "Debian"
|
||||||
|
fail_msg: "Ce rôle est prévu uniquement pour Debian"
|
||||||
|
tags: steam
|
||||||
|
|
||||||
|
- name: Ajouter l’architecture i386
|
||||||
|
ansible.builtin.command: dpkg --add-architecture i386
|
||||||
|
register: add_i386
|
||||||
|
changed_when: add_i386.rc == 0
|
||||||
|
tags: steam
|
||||||
|
|
||||||
|
- name: Mettre à jour le cache APT
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: yes
|
||||||
|
tags: steam
|
||||||
|
|
||||||
|
- name: Installer Steam
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: steam
|
||||||
|
state: present
|
||||||
|
tags: steam
|
||||||
5
roles/virtualbox/defaults/main.yml
Normal file
5
roles/virtualbox/defaults/main.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
virtualbox_version: "7.0"
|
||||||
|
virtualbox_package: "virtualbox-{{ virtualbox_version }}"
|
||||||
|
virtualbox_repo_key_url: "https://www.virtualbox.org/download/oracle_vbox_2016.asc"
|
||||||
|
virtualbox_repo_url: "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian trixie contrib"
|
||||||
70
roles/virtualbox/tasks/main.yml
Normal file
70
roles/virtualbox/tasks/main.yml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
- name: Install prerequisites
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- apt-transport-https
|
||||||
|
- ca-certificates
|
||||||
|
- gnupg
|
||||||
|
- lsb-release
|
||||||
|
- dkms
|
||||||
|
- build-essential
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Disable KVM modules if present
|
||||||
|
block:
|
||||||
|
- name: Check if kvm modules are loaded
|
||||||
|
shell: |
|
||||||
|
lsmod | grep -E 'kvm_intel|kvm_amd|kvm' || true
|
||||||
|
register: kvm_modules
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Blacklist KVM modules
|
||||||
|
copy:
|
||||||
|
dest: /etc/modprobe.d/disable-kvm.conf
|
||||||
|
content: |
|
||||||
|
# Disabled for VirtualBox compatibility
|
||||||
|
blacklist kvm
|
||||||
|
blacklist kvm_intel
|
||||||
|
blacklist kvm_amd
|
||||||
|
when: kvm_modules.stdout != ""
|
||||||
|
|
||||||
|
- name: Remove loaded KVM modules immediately
|
||||||
|
shell: |
|
||||||
|
rmmod kvm_intel || true
|
||||||
|
rmmod kvm_amd || true
|
||||||
|
rmmod kvm || true
|
||||||
|
when: kvm_modules.stdout != ""
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- name: Télécharger et convertir la clé GPG de VirtualBox
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: curl -fsSL {{ virtualbox_repo_key_url }} | gpg --dearmor -o /usr/share/keyrings/virtualbox.gpg
|
||||||
|
creates: /usr/share/keyrings/virtualbox.gpg
|
||||||
|
|
||||||
|
- name: Add VirtualBox apt repository
|
||||||
|
ansible.builtin.apt_repository:
|
||||||
|
repo: "deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] {{ virtualbox_repo_url }}"
|
||||||
|
state: present
|
||||||
|
filename: virtualbox
|
||||||
|
update_cache: no
|
||||||
|
|
||||||
|
- name: Update apt cache
|
||||||
|
apt:
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Install VirtualBox
|
||||||
|
apt:
|
||||||
|
name: "{{ virtualbox_package }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Ensure vboxdrv is loaded
|
||||||
|
command: /sbin/vboxconfig
|
||||||
|
register: vboxconfig
|
||||||
|
changed_when: "'done' in vboxconfig.stdout"
|
||||||
|
|
||||||
|
- name: Add user to vboxusers group
|
||||||
|
user:
|
||||||
|
name: "{{ ansible_user }}"
|
||||||
|
groups: vboxusers
|
||||||
|
append: yes
|
||||||
18
roles/vlc/tasks/main.yml
Normal file
18
roles/vlc/tasks/main.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
- name: Vérifier que le système est Debian
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- ansible_facts['distribution'] == "Debian"
|
||||||
|
fail_msg: "Ce rôle est prévu uniquement pour Debian"
|
||||||
|
tags: steam
|
||||||
|
|
||||||
|
- name: Mettre à jour le cache APT
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: yes
|
||||||
|
tags: vlc
|
||||||
|
|
||||||
|
- name: Installer VLC
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: vlc
|
||||||
|
state: present
|
||||||
|
tags: vlc
|
||||||
6
roles/wine/defaults/main.yml
Normal file
6
roles/wine/defaults/main.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
winehq_repo_url: https://dl.winehq.org/wine-builds/debian/dists/trixie/winehq-trixie.sources
|
||||||
|
winehq_key_url: https://dl.winehq.org/wine-builds/winehq.key
|
||||||
|
winehq_keyring: /etc/apt/keyrings/winehq-archive.key
|
||||||
|
winehq_packages:
|
||||||
|
- winehq-stable
|
||||||
55
roles/wine/tasks/main.yml
Normal file
55
roles/wine/tasks/main.yml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
- name: Vérifier que le système est Debian
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- ansible_facts['distribution'] == "Debian"
|
||||||
|
fail_msg: "Ce rôle est prévu uniquement pour Debian"
|
||||||
|
tags: wine
|
||||||
|
|
||||||
|
- name: Ajouter l’architecture i386
|
||||||
|
ansible.builtin.command: dpkg --add-architecture i386
|
||||||
|
register: add_i386
|
||||||
|
changed_when: add_i386.rc == 0
|
||||||
|
tags: wine
|
||||||
|
|
||||||
|
- name: Créer le dossier keyrings
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/apt/keyrings
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
tags: wine
|
||||||
|
|
||||||
|
- name: Télécharger et installer la clé WineHQ
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ winehq_key_url }}"
|
||||||
|
dest: /tmp/winehq.key
|
||||||
|
mode: '0644'
|
||||||
|
tags: wine
|
||||||
|
|
||||||
|
- name: Convertir la clé en keyring GPG
|
||||||
|
ansible.builtin.command: >
|
||||||
|
gpg --dearmor
|
||||||
|
-o {{ winehq_keyring }}
|
||||||
|
/tmp/winehq.key
|
||||||
|
args:
|
||||||
|
creates: "{{ winehq_keyring }}"
|
||||||
|
tags: wine
|
||||||
|
|
||||||
|
- name: Ajouter le dépôt WineHQ
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ winehq_repo_url }}"
|
||||||
|
dest: /etc/apt/sources.list.d/winehq-trixie.sources
|
||||||
|
mode: '0644'
|
||||||
|
tags: wine
|
||||||
|
|
||||||
|
- name: Mettre à jour le cache APT
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: yes
|
||||||
|
tags: wine
|
||||||
|
|
||||||
|
- name: Installer WineHQ Stable (avec recommandations)
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: "{{ winehq_packages }}"
|
||||||
|
state: present
|
||||||
|
install_recommends: yes
|
||||||
|
tags: wine
|
||||||
16
settings.yml
Normal file
16
settings.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
vms:
|
||||||
|
- name: "server-1"
|
||||||
|
hostname: "server-1"
|
||||||
|
ip: "192.168.60.2"
|
||||||
|
memory: 1024
|
||||||
|
|
||||||
|
box:
|
||||||
|
# via Vagrant cloud registry
|
||||||
|
name: "garagenum/debian-13"
|
||||||
|
# Via garagenum registry
|
||||||
|
# url: "https://git.legaragenumerique.fr/GARAGENUM/vagrant-boxes/raw/main/debian-13/debian-13-3-3.box"
|
||||||
|
|
||||||
|
|
||||||
|
provider:
|
||||||
|
type: "virtualbox"
|
||||||
|
# linked_clone: false
|
||||||
Loading…
x
Reference in New Issue
Block a user