1.7 KiB
1.7 KiB
CLI Standardization
Ansible project to deploy a modern CLI environment (Fish + Starship + modern coreutils) to Arch and Ubuntu/Debian hosts.
What it installs
- Fish shell 4.x (PPA on Ubuntu, pacman on Arch)
- Starship prompt (official binary installer)
- fzf — fuzzy finder
- zoxide — smarter cd
- bat — cat with syntax highlighting
- eza — modern ls
- fd — modern find
- ripgrep — fast grep
- Fisher plugin manager + plugins
Dev workflow
# Lint
ansible-lint playbook.yml
# Syntax check
ansible-playbook playbook.yml --syntax-check
# Dry run
ansible-playbook playbook.yml -i inventory.yml --check --diff
# Deploy
ansible-playbook playbook.yml -i inventory.yml
ansible-playbook playbook.yml -i inventory.yml --limit manjaro-dev
Role structure
roles/cli_modern/
├── defaults/main.yml # All configurable variables
├── tasks/
│ ├── main.yml # Task dispatcher
│ ├── packages-archlinux.yml # Arch/Manjaro packages
│ ├── packages-debian.yml # Ubuntu/Debian packages + Fish PPA
│ ├── starship.yml # Starship binary install
│ ├── fisher.yml # Fisher + plugin sync
│ ├── config.yml # Deploy config templates
│ └── default-shell.yml # Set Fish as login shell
└── templates/
├── config.fish.j2 # Fish shell config
├── starship.toml.j2 # Starship prompt config
└── fish_plugins.j2 # Fisher plugin list
Configuration
All options are in roles/cli_modern/defaults/main.yml. Override per-host
in host_vars/ or per-group in group_vars/.