migrate
This commit is contained in:
@@ -0,0 +1,273 @@
|
||||
CHEZMOI - ANSIBLE Sample file (Setup.yaml)
|
||||
|
||||
|
||||
|
||||
---
|
||||
- name: Machine setup
|
||||
hosts: localhost
|
||||
become: true
|
||||
remote_user: tmeijn
|
||||
connection: local
|
||||
gather_facts: true
|
||||
vars:
|
||||
teams_for_linux_version: "v1.4.37"
|
||||
arch_mapping: # Map ansible architecture {{ ansible_architecture }} names to Docker's architecture names
|
||||
x86_64: amd64
|
||||
aarch64: arm64
|
||||
|
||||
tasks:
|
||||
- name: Setting facts based on ansible_architecture
|
||||
block:
|
||||
- name: Set facts for amd64
|
||||
ansible.builtin.set_fact:
|
||||
aws_ssm_plugin_deb_url: https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb
|
||||
teams_for_linux_deb_url: https://github.com/IsmaelMartinez/teams-for-linux/releases/download/{{ teams_for_linux_version }}/teams-for-linux_{{ teams_for_linux_version | regex_replace('^v','') }}_amd64.deb
|
||||
vscode_deb_url: https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64
|
||||
when: ansible_architecture == 'x86_64'
|
||||
|
||||
- name: Set facts for arm64
|
||||
ansible.builtin.set_fact:
|
||||
aws_ssm_plugin_deb_url: https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb
|
||||
teams_for_linux_deb_url: https://github.com/IsmaelMartinez/teams-for-linux/releases/download/{{ teams_for_linux_version }}/teams-for-linux_{{ teams_for_linux_version | regex_replace('^v','') }}_arm64.deb
|
||||
vscode_deb_url: https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-arm64
|
||||
when: ansible_architecture == 'aarch64'
|
||||
|
||||
- name: Install packages
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- build-essential
|
||||
- curl
|
||||
- gawk
|
||||
- git
|
||||
- gnome-shell-extensions
|
||||
- gnome-tweaks
|
||||
- graphviz
|
||||
- gtk2-engines-murrine
|
||||
- incus
|
||||
- jc
|
||||
- kitty # Our terminal!
|
||||
- nala
|
||||
- network-manager-l2tp
|
||||
- network-manager-l2tp-gnome
|
||||
- pavucontrol
|
||||
- px
|
||||
- qemu-system
|
||||
- timeshift
|
||||
- vim
|
||||
- virt-manager
|
||||
- xclip
|
||||
|
||||
- name: Set Kitty as default
|
||||
ansible.builtin.shell: |
|
||||
sudo update-alternatives --set x-terminal-emulator "$(which kitty)"
|
||||
changed_when: false
|
||||
|
||||
- name: "[BLOCK] Setting up Flatpak"
|
||||
block:
|
||||
- name: Install Flatpak and dependencies if not present
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- flatpak
|
||||
- gnome-software-plugin-flatpak
|
||||
- name: Setup Flathub as a remote
|
||||
community.general.flatpak_remote:
|
||||
name: flathub
|
||||
state: present
|
||||
flatpakrepo_url: https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
- name: Install Flatpak packages
|
||||
community.general.flatpak:
|
||||
name:
|
||||
- org.videolan.VLC
|
||||
- org.gnome.meld
|
||||
- io.podman_desktop.PodmanDesktop
|
||||
- org.flameshot.Flameshot
|
||||
- io.dbeaver.DBeaverCommunity
|
||||
# - org.chromium.Chromium
|
||||
- io.github.seadve.Kooha
|
||||
- com.axosoft.GitKraken
|
||||
- md.obsidian.Obsidian
|
||||
- app.getclipboard.Clipboard
|
||||
state: present
|
||||
|
||||
- name: Install Firefox as snap (arm64 is not available yet on Flatpak)
|
||||
community.general.snap:
|
||||
name: firefox
|
||||
|
||||
- name: "[BLOCK] Install AWS Session Manager Plugin if not present"
|
||||
block:
|
||||
- name: ==== Check if plugin is present
|
||||
become: false
|
||||
ansible.builtin.shell:
|
||||
cmd: command -v session-manager-plugin
|
||||
register: aws_ssm_plugin_installed
|
||||
ignore_errors: true
|
||||
changed_when: false
|
||||
|
||||
- name: ==== Download Plugin
|
||||
ansible.builtin.apt:
|
||||
deb: "{{ aws_ssm_plugin_deb_url }}"
|
||||
state: present
|
||||
when: aws_ssm_plugin_installed is failed
|
||||
|
||||
- name: "[BLOCK] Install Visual Studio Code if not present"
|
||||
block:
|
||||
- name: ==== Check if VSCode is present
|
||||
become: false
|
||||
ansible.builtin.shell:
|
||||
cmd: command -v code
|
||||
register: vscode_installed
|
||||
ignore_errors: true
|
||||
changed_when: false
|
||||
|
||||
- name: ==== Download VSCode
|
||||
ansible.builtin.apt:
|
||||
deb: "{{ vscode_deb_url }}"
|
||||
state: present
|
||||
when: vscode_installed is failed
|
||||
|
||||
- name: "[BLOCK] Install ble.sh if not present"
|
||||
block:
|
||||
- name: ==== Check if ble.sh is present
|
||||
become: false
|
||||
# noqa: command-instead-of-shell
|
||||
ansible.builtin.shell:
|
||||
cmd: command -v ble
|
||||
register: blesh_installed
|
||||
ignore_errors: true
|
||||
changed_when: false
|
||||
- name: ==== Fetch ble.sh repository and install ble.sh
|
||||
become: false
|
||||
# noqa: command-instead-of-shell command-instead-of-module no-changed-when
|
||||
ansible.builtin.shell: |
|
||||
git clone --recursive --depth 1 --shallow-submodules https://github.com/akinomyoga/ble.sh.git
|
||||
make -C ble.sh install PREFIX=~/.local
|
||||
rm -rf ble.sh
|
||||
when: blesh_installed is failed
|
||||
|
||||
- name: "[BLOCK] Add repo, install and configure Docker"
|
||||
block:
|
||||
- name: Add Docker's official GPG key
|
||||
ansible.builtin.apt_key:
|
||||
url: https://download.docker.com/linux/ubuntu/gpg
|
||||
keyring: /etc/apt/keyrings/docker.gpg
|
||||
state: present
|
||||
- name: Add Docker repository
|
||||
ansible.builtin.apt_repository:
|
||||
repo: >-
|
||||
deb [arch={{ arch_mapping[ansible_architecture] | default(ansible_architecture) }}
|
||||
signed-by=/etc/apt/keyrings/docker.gpg]
|
||||
https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable
|
||||
filename: docker
|
||||
state: present
|
||||
- name: Install Docker and related packages
|
||||
ansible.builtin.apt:
|
||||
pkg:
|
||||
- docker-ce
|
||||
- docker-ce-cli
|
||||
- containerd.io
|
||||
state: present
|
||||
update_cache: true
|
||||
- name: Add Docker group
|
||||
ansible.builtin.group:
|
||||
name: docker
|
||||
state: present
|
||||
- name: Add user to Docker group
|
||||
ansible.builtin.user:
|
||||
name: "{{ ansible_user }}"
|
||||
groups: docker
|
||||
append: true
|
||||
- name: Enable and start Docker services
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ item }}"
|
||||
enabled: true
|
||||
state: started
|
||||
loop:
|
||||
- docker.service
|
||||
- containerd.service
|
||||
|
||||
# === NOTE: This is currently not working on Ubuntu Asahi
|
||||
# - name: "[BLOCK] Add repo, install and configure Firefox"
|
||||
# block:
|
||||
# - name: Add Firefox's official GPG key
|
||||
# ansible.builtin.apt_key:
|
||||
# url: https://packages.mozilla.org/apt/repo-signing-key.gpg
|
||||
# keyring: /etc/apt/keyrings/packages.mozilla.org.gpg
|
||||
# state: absent
|
||||
# - name: Add Firefox repository
|
||||
# ansible.builtin.apt_repository:
|
||||
# repo: >-
|
||||
# deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.gpg]
|
||||
# https://packages.mozilla.org/apt mozilla main
|
||||
# filename: mozilla
|
||||
# state: absent
|
||||
# - name: Install Firefox
|
||||
# ansible.builtin.apt:
|
||||
# pkg:
|
||||
# - firefox
|
||||
# state: absent
|
||||
# update_cache: true
|
||||
|
||||
# === NOTE: This is currently not working on Ubuntu Asahi
|
||||
# - name: "[BLOCK] Add repo, install and configure Progressive Web Apps for Firefox"
|
||||
# block:
|
||||
# - name: ==== Add firefoxpwa's official GPG key
|
||||
# ansible.builtin.apt_key:
|
||||
# url: https://packagecloud.io/filips/FirefoxPWA/gpgkey
|
||||
# keyring: /usr/share/keyrings/firefoxpwa-keyring.gpg
|
||||
# state: absent
|
||||
# - name: Add firefoxpwa repository
|
||||
# ansible.builtin.apt_repository:
|
||||
# repo: >-
|
||||
# deb [signed-by=/usr/share/keyrings/firefoxpwa-keyring.gpg]
|
||||
# https://packagecloud.io/filips/FirefoxPWA/any any main
|
||||
# filename: firefoxpwa
|
||||
# state: absent
|
||||
# - name: Install Progressive Web Apps for Firefox
|
||||
# ansible.builtin.apt:
|
||||
# pkg:
|
||||
# - firefoxpwa
|
||||
# state: absent
|
||||
# update_cache: true
|
||||
|
||||
# NOTE: this should be absolutely last as afterwards restart is needed.
|
||||
- name: Install Pop Shell if not present
|
||||
become: false
|
||||
block:
|
||||
- name: Check if extension is present
|
||||
ansible.builtin.shell:
|
||||
cmd: gnome-extensions list | grep pop-shell@system76.com -q
|
||||
register: gnome_pop_shell_installed
|
||||
ignore_errors: true
|
||||
changed_when: false
|
||||
|
||||
- name: Download Plugin
|
||||
ansible.builtin.shell: |
|
||||
npm -g i typescript
|
||||
git clone --recursive --depth 1 --shallow-submodules --branch master_noble https://github.com/pop-os/shell.git
|
||||
cd shell
|
||||
make local-install
|
||||
cd ..
|
||||
rm -rf shell
|
||||
when: gnome_pop_shell_installed is failed
|
||||
|
||||
# - name: Ensure fonts directory
|
||||
# ansible.builtin.file:
|
||||
# path: "~{{ remote_regular_user }}/.fonts"
|
||||
# state: directory
|
||||
# mode: "0755"
|
||||
# owner: "{{ remote_regular_user }}"
|
||||
|
||||
# - name: Check if Jetbrains Mono exists
|
||||
# ansible.builtin.shell: "ls ~{{ remote_regular_user }}/.fonts/JetBrainsMonoNerd*FontMono*"
|
||||
# register: jetbrains_mono_exists
|
||||
# ignore_errors: true
|
||||
# changed_when: false
|
||||
|
||||
# - name: Download Jetbrains mono
|
||||
# when: jetbrains_mono_exists is failed
|
||||
# ansible.builtin.unarchive:
|
||||
# src: https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/JetBrainsMono.zip
|
||||
# dest: "~{{ remote_regular_user }}/.fonts/"
|
||||
# remote_src: true
|
||||
# mode: "0755"
|
||||
# owner: "{{ remote_regular_user }}"
|
||||
Reference in New Issue
Block a user