add ansible playbook setup
This commit is contained in:
parent
78bfbc3ed6
commit
c01fe6acce
9 changed files with 184 additions and 14 deletions
27
bootstrap/bootstrap.sh
Executable file
27
bootstrap/bootstrap.sh
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eou pipefail
|
||||
|
||||
if ! command -v uv >/dev/null 2>&1; then
|
||||
echo -e "Installing UV...\n"
|
||||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
fi
|
||||
|
||||
echo -e "Executing playbook...\n"
|
||||
|
||||
if [[ -d ~/.config/dotfiles ]]; then
|
||||
pushd ~/.config/dotfiles/bootstrap/ || exit
|
||||
|
||||
# dotfiles are cloned, executed localy
|
||||
uvx --from ansible ansible-playbook --ask-become-pass -v bootstrap.yaml
|
||||
|
||||
else
|
||||
|
||||
# dotfiles are not cloned, executed remotly
|
||||
uvx --from ansible ansible-pull --ask-become-pass --url ssh://git@git.alecodes.page:24062/alecodes/dots.git bootstrap/bootstrap.yaml
|
||||
|
||||
fi
|
||||
|
||||
popd || exit
|
||||
|
||||
echo -e "Done!\n"
|
||||
66
bootstrap/bootstrap.yaml
Normal file
66
bootstrap/bootstrap.yaml
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
- name: Bootstrap system installation
|
||||
hosts: localhost
|
||||
vars_files:
|
||||
- ./variables.yaml
|
||||
tasks:
|
||||
- name: Fedora setup
|
||||
when: ansible_facts['distribution'] == "Fedora"
|
||||
block:
|
||||
- name: Enable copr repos
|
||||
become: true
|
||||
loop: "{{ distros.fedora.copr }}"
|
||||
community.general.copr:
|
||||
state: enabled
|
||||
name: "{{ item }}"
|
||||
|
||||
- name: Install packages
|
||||
become: true
|
||||
ansible.builtin.package:
|
||||
state: present
|
||||
name: "{{ distros.Global.packages }}"
|
||||
|
||||
- name: 'Ensure rustup is setup'
|
||||
ansible.builtin.command: "{{ (ansible_facts['pkg_mgr'] in ['dnf5']) | ternary('rustup-init -y --no-modify-path', 'rustup --no-modify-path -y') }}"
|
||||
args:
|
||||
creates: ~/.cargo/env
|
||||
|
||||
- name: "Installing Cargo Binstall"
|
||||
ansible.builtin.unarchive:
|
||||
remote_src: true
|
||||
src: https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz
|
||||
dest: "{{ ansible_env.HOME }}/.cargo/bin/"
|
||||
keep_newer: true
|
||||
extra_opts:
|
||||
- "--no-anchored"
|
||||
- "cargo-binstall"
|
||||
|
||||
|
||||
- name: 'Install cargo packages'
|
||||
loop: "{{ distros[ansible_facts['distribution']].cargo }}"
|
||||
notify: Update dots
|
||||
ansible.builtin.command:
|
||||
cmd: "cargo binstall --no-confirm --locked {{ item.pkg }}"
|
||||
creates: "{{ ansible_env.HOME }}/.cargo/bin/{{ item.bin }}"
|
||||
|
||||
- name: Generate an OpenSSH keypair
|
||||
community.crypto.openssh_keypair:
|
||||
path: ~/.ssh/id_ed25519
|
||||
type: ed25519
|
||||
|
||||
- name: Clone dotfiles
|
||||
ignore_errors: true
|
||||
notify: Update dots
|
||||
ansible.builtin.git:
|
||||
accept_newhostkey: true
|
||||
repo: ssh://git@git.alecodes.page:24062/alecodes/dots.git
|
||||
dest: ~/.config/dotfiles
|
||||
update: true
|
||||
version: main
|
||||
|
||||
handlers:
|
||||
- name: Update dots
|
||||
block:
|
||||
- name: Deploy dots
|
||||
ansible.builtin.command: tuckr add *
|
||||
- name: Install yazi packages
|
||||
ansible.builtin.command: ya pkg install
|
||||
74
bootstrap/variables.yaml
Normal file
74
bootstrap/variables.yaml
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
distros:
|
||||
Fedora:
|
||||
copr:
|
||||
- atim/lazygit
|
||||
- the4runner/firefox-dev
|
||||
packages: {}
|
||||
cargo:
|
||||
- pkg: yazi-fm
|
||||
bin: yazi
|
||||
- pkg: yazi-cli
|
||||
bin: yazi
|
||||
|
||||
Global:
|
||||
packages:
|
||||
- adwaita-cursor-theme
|
||||
- adwaita-icon-theme
|
||||
- adwaita-icon-theme-legacy
|
||||
- adwaita-mono-fonts
|
||||
- adwaita-sans-fonts
|
||||
- bat
|
||||
- breeze-icon-theme
|
||||
- breeze-icon-theme-fedora
|
||||
- curl
|
||||
- duf
|
||||
- eza
|
||||
- fd-find
|
||||
- firefox-dev
|
||||
- fish
|
||||
- flatpak
|
||||
- fzf
|
||||
- git
|
||||
- grim
|
||||
- kitty
|
||||
- lazygit
|
||||
- neovim
|
||||
- nodejs
|
||||
- openssh
|
||||
- openssh-askpass
|
||||
- openssh-clients
|
||||
- openssh-server
|
||||
- openssl
|
||||
- openssl-devel
|
||||
- openssl-libs
|
||||
- php-cli
|
||||
- php-common
|
||||
- php-intl
|
||||
- php-mbstring
|
||||
- php-pecl-zip
|
||||
- php-process
|
||||
- php-soap
|
||||
- php-xml
|
||||
- rhythmbox
|
||||
- ripgrep
|
||||
- rofi-themes
|
||||
- rofi-wayland
|
||||
- rofimoji
|
||||
- rootfiles
|
||||
- rsync
|
||||
- rustup
|
||||
- sd
|
||||
- sed
|
||||
- sushi
|
||||
- swappy
|
||||
- tailscale
|
||||
- tealdeer
|
||||
- trash-cli
|
||||
- tree
|
||||
- tree-sitter-cli
|
||||
- udisks2
|
||||
- unrar
|
||||
- unrar-free
|
||||
- unzip
|
||||
- zip
|
||||
- zoxide
|
||||
Loading…
Add table
Add a link
Reference in a new issue