diff --git a/playbooks/alpine.yml b/playbooks/alpine.yml new file mode 100755 index 0000000..2979a48 --- /dev/null +++ b/playbooks/alpine.yml @@ -0,0 +1,7 @@ +--- +- name: alpine workstation + hosts: workstation + roles: + - role: alpine_setup + tags: alpine_setup + diff --git a/roles/alpine_setup/handlers/main.yml b/roles/alpine_setup/handlers/main.yml new file mode 100755 index 0000000..ed97d53 --- /dev/null +++ b/roles/alpine_setup/handlers/main.yml @@ -0,0 +1 @@ +--- diff --git a/roles/alpine_setup/tasks/main.yml b/roles/alpine_setup/tasks/main.yml new file mode 100755 index 0000000..03c07f8 --- /dev/null +++ b/roles/alpine_setup/tasks/main.yml @@ -0,0 +1,51 @@ +--- +- name: Upgrade all packages + apk: + name: "*" + state: latest + update_cache: true + +- name: Install packages + apk: + name: "{{ item }}" + state: present + loop: "{{ packages }}" + +- name: Ensure Users are Configured Correctly + user: + name: "{{ item.value.name }}" + group: "{{ item.value.group }}" + groups: "{{ item.value.groups }}" + state: "{{ item.value.state }}" + create_home: "{{ item.value.create_home }}" + shell: "{{ item.value.shell }}" + loop: "{{ init_users | dict2items }}" + +- name: Create or ensure presence of custom home directories + file: + path: /home/opal/{{ item }} + state: directory + mode: '0755' + owner: opal + group: opal + loop: "{{ create_directories }}" + +- name: Remove default home directories if present + file: + path: /home/opal/{{ item }} + state: absent + loop: "{{ remove_directories }}" + +- name: Create/Ensure ~/.ssh directories + file: + path: "/home/{{ item.value.name }}/.ssh" + state: directory + mode: 0700 + owner: "{{ item.value.name }}" + group: "{{ item.value.group }}" + loop: "{{ init_users | dict2items }}" + +- name: Clone bookmarks git repo + git: + repo: 'https://git.opal.sh/opal/bookmarks.git' + dest: '/home/opal/.local/share/bookmarks' diff --git a/roles/alpine_setup/templates/NetworkManager.conf.j2 b/roles/alpine_setup/templates/NetworkManager.conf.j2 new file mode 100755 index 0000000..2ae904a --- /dev/null +++ b/roles/alpine_setup/templates/NetworkManager.conf.j2 @@ -0,0 +1,6 @@ +# MANAGED BY ANSIBLE # +[main] +plugins=ifupdown,keyfile + +[ifupdown] +managed=true diff --git a/roles/alpine_setup/templates/resolv.conf.j2 b/roles/alpine_setup/templates/resolv.conf.j2 new file mode 100755 index 0000000..efd7a4f --- /dev/null +++ b/roles/alpine_setup/templates/resolv.conf.j2 @@ -0,0 +1,4 @@ +# This file is managed by Ansible # +nameserver 1.1.1.2 +nameserver 1.0.0.2 +nameserver 2606:4700:4700:0:0:0:0:1112 diff --git a/roles/alpine_setup/vars/main.yml b/roles/alpine_setup/vars/main.yml new file mode 100755 index 0000000..77a4bd4 --- /dev/null +++ b/roles/alpine_setup/vars/main.yml @@ -0,0 +1,73 @@ +--- +remove_directories: + - Templates + - Videos + - Documents + - Music + - Downloads + - Pictures + - Public + - Desktop + +create_directories: + - docs + - docs/todo + - music + - dls + - pics + - bin + - src + - .config + - .local/share + - .local/share/bin + +init_users: + opal: + name: opal + group: opal + groups: + - wheel + state: present + shell: /bin/yash + create_home: true + +packages: + - yash + - swaylock + - swayidle + - newsboat + - alacritty + - dunst + - wireplumber + - trash-cli + - pipewire + - pipewire-pulse + - pipewire-alsa + - grim + - grimshot + - brightnessctl + - wlogout + - wdisplays + - wtype + - cups + - bluez + - blueman + - mpv + - lf + - gopass + - neovim + - git + - stow + - feh + - zathura + - pavucontrol + - sshfs + - qutebrowser + - py3-adblock + - pinentry-gtk + - wl-clipboard + - librewolf + - font-noto-emoji + - lsblk + - acpid +