2026-06-06 17:30:00 +03:00
|
|
|
---
|
|
|
|
|
- name: Install fish, neovim, modern CLI tools and set fish as default shell
|
|
|
|
|
hosts: proxmox_vms
|
|
|
|
|
gather_facts: true
|
|
|
|
|
become: true
|
|
|
|
|
|
|
|
|
|
vars:
|
|
|
|
|
target_user: vrubel
|
|
|
|
|
packages:
|
|
|
|
|
- fish
|
|
|
|
|
- neovim
|
|
|
|
|
- lsd
|
|
|
|
|
- bat
|
|
|
|
|
- grc
|
|
|
|
|
- zoxide
|
|
|
|
|
- curl
|
|
|
|
|
- git
|
|
|
|
|
|
|
|
|
|
tasks:
|
|
|
|
|
- name: Install packages
|
|
|
|
|
ansible.builtin.package:
|
|
|
|
|
name: "{{ packages }}"
|
|
|
|
|
state: present
|
|
|
|
|
|
|
|
|
|
- name: Symlink batcat -> bat (Debian workaround)
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
src: /usr/bin/batcat
|
|
|
|
|
dest: /usr/local/bin/bat
|
|
|
|
|
state: link
|
|
|
|
|
when: ansible_facts["os_family"] == "Debian"
|
|
|
|
|
ignore_errors: true
|
|
|
|
|
|
|
|
|
|
- name: Create ~/.config/fish directory
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "/home/{{ target_user }}/.config/fish"
|
|
|
|
|
state: directory
|
|
|
|
|
mode: "0755"
|
|
|
|
|
owner: "{{ target_user }}"
|
|
|
|
|
group: "{{ target_user }}"
|
|
|
|
|
|
|
|
|
|
- name: Deploy fish config
|
|
|
|
|
ansible.builtin.copy:
|
|
|
|
|
src: ../files/config.fish
|
|
|
|
|
dest: "/home/{{ target_user }}/.config/fish/config.fish"
|
|
|
|
|
owner: "{{ target_user }}"
|
|
|
|
|
group: "{{ target_user }}"
|
|
|
|
|
mode: "0644"
|
|
|
|
|
|
|
|
|
|
- name: Deploy fish_plugins
|
|
|
|
|
ansible.builtin.copy:
|
|
|
|
|
src: ../files/fish_plugins
|
|
|
|
|
dest: "/home/{{ target_user }}/.config/fish/fish_plugins"
|
|
|
|
|
owner: "{{ target_user }}"
|
|
|
|
|
group: "{{ target_user }}"
|
|
|
|
|
mode: "0644"
|
|
|
|
|
|
|
|
|
|
- name: Install fisher
|
|
|
|
|
become_user: "{{ target_user }}"
|
|
|
|
|
ansible.builtin.shell:
|
|
|
|
|
cmd: >
|
|
|
|
|
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source &&
|
|
|
|
|
fisher install jorgebucaran/fisher
|
|
|
|
|
executable: /usr/bin/fish
|
|
|
|
|
creates: "/home/{{ target_user }}/.config/fish/functions/fisher.fish"
|
|
|
|
|
|
|
|
|
|
- name: Run fisher update to install plugins
|
|
|
|
|
become_user: "{{ target_user }}"
|
|
|
|
|
ansible.builtin.shell:
|
|
|
|
|
cmd: fisher update
|
|
|
|
|
executable: /usr/bin/fish
|
|
|
|
|
changed_when: true
|
|
|
|
|
|
2026-06-06 22:46:22 +03:00
|
|
|
- name: Remove old nvim config
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "/home/{{ target_user }}/.config/nvim"
|
|
|
|
|
state: absent
|
|
|
|
|
|
2026-06-06 17:30:00 +03:00
|
|
|
- name: Clone LazyVim starter
|
|
|
|
|
become_user: "{{ target_user }}"
|
|
|
|
|
ansible.builtin.git:
|
|
|
|
|
repo: https://github.com/LazyVim/starter
|
|
|
|
|
dest: "/home/{{ target_user }}/.config/nvim"
|
|
|
|
|
|
|
|
|
|
- name: Remove .git from nvim config
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "/home/{{ target_user }}/.config/nvim/.git"
|
|
|
|
|
state: absent
|
|
|
|
|
|
2026-06-06 22:46:22 +03:00
|
|
|
- name: Check if Docker is already installed
|
|
|
|
|
ansible.builtin.shell: docker --version 2>/dev/null && docker compose version 2>/dev/null
|
|
|
|
|
register: docker_check
|
|
|
|
|
failed_when: false
|
|
|
|
|
changed_when: false
|
|
|
|
|
|
|
|
|
|
- name: Install Docker on Debian
|
|
|
|
|
ansible.builtin.apt:
|
|
|
|
|
name:
|
|
|
|
|
- docker.io
|
|
|
|
|
- docker-compose-v2
|
|
|
|
|
state: present
|
|
|
|
|
when:
|
|
|
|
|
- ansible_facts["os_family"] == "Debian"
|
|
|
|
|
- docker_check.rc != 0
|
|
|
|
|
|
|
|
|
|
- name: Install Docker on Fedora
|
|
|
|
|
block:
|
|
|
|
|
- name: Remove moby-engine if present
|
|
|
|
|
ansible.builtin.dnf:
|
|
|
|
|
name: moby-engine
|
|
|
|
|
state: absent
|
|
|
|
|
failed_when: false
|
|
|
|
|
|
|
|
|
|
- name: Add Docker CE repo
|
|
|
|
|
ansible.builtin.get_url:
|
|
|
|
|
url: https://download.docker.com/linux/fedora/docker-ce.repo
|
|
|
|
|
dest: /etc/yum.repos.d/docker-ce.repo
|
|
|
|
|
mode: "0644"
|
|
|
|
|
|
|
|
|
|
- name: Install Docker CE
|
|
|
|
|
ansible.builtin.dnf:
|
|
|
|
|
name:
|
|
|
|
|
- docker-ce
|
|
|
|
|
- docker-ce-cli
|
|
|
|
|
- containerd.io
|
|
|
|
|
- docker-compose-plugin
|
|
|
|
|
state: present
|
|
|
|
|
when:
|
|
|
|
|
- ansible_facts["os_family"] == "RedHat"
|
|
|
|
|
- docker_check.rc != 0
|
|
|
|
|
|
|
|
|
|
- name: Ensure Docker service is running
|
|
|
|
|
ansible.builtin.systemd:
|
|
|
|
|
name: docker
|
|
|
|
|
state: started
|
|
|
|
|
enabled: true
|
|
|
|
|
|
|
|
|
|
- name: Add user to docker group
|
|
|
|
|
ansible.builtin.user:
|
|
|
|
|
name: "{{ target_user }}"
|
|
|
|
|
groups: docker
|
|
|
|
|
append: true
|
|
|
|
|
|
|
|
|
|
- name: Reset SSH connection for group membership
|
|
|
|
|
ansible.builtin.meta: reset_connection
|
|
|
|
|
|
2026-06-06 17:30:00 +03:00
|
|
|
- name: Set fish as default shell
|
|
|
|
|
ansible.builtin.user:
|
|
|
|
|
name: "{{ target_user }}"
|
|
|
|
|
shell: /usr/bin/fish
|