ansible_proxmox_vms/playbooks/shell-setup.yml

150 lines
4.1 KiB
YAML
Raw Normal View History

---
- 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
- name: Remove old nvim config
ansible.builtin.file:
path: "/home/{{ target_user }}/.config/nvim"
state: absent
- 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
- 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
- name: Set fish as default shell
ansible.builtin.user:
name: "{{ target_user }}"
shell: /usr/bin/fish