Skip to content

Instantly share code, notes, and snippets.

@bitsandbooks
Last active June 17, 2021 19:40
Show Gist options
  • Save bitsandbooks/025b9dd3d12273cc7711b0925f96e0f1 to your computer and use it in GitHub Desktop.
Save bitsandbooks/025b9dd3d12273cc7711b0925f96e0f1 to your computer and use it in GitHub Desktop.
Elk Lab Ansible
---
- hosts: 127.0.0.1
connection: local
tasks:
- name: ensure personalized dconf settings
dconf:
key: "{{ item.key }}"
value: "{{ item.value }}"
state: present
with_items:
- key: /org/gtk/settings/file-chooser/clock-format
value: ["12h"]
- key: /org/gnome/desktop/interface/clock-show-weekday
value: "true"
- key: /org/gnome/desktop/a11y/always-show-universal-access-status
value: "true"
- key: /org/gnome/mutter/center-new-windows
value: "true"
- key: /org/gnome/desktop/peripherals/touchpad/two-finger-scrolling-enabled
value: "true"
- key: /org/gnome/desktop/session/idle-delay
value: ['uint32 900']
- key: /org/gnome/desktop/notifications/show-in-lock-screen
value: "false"
- key: /org/gnome/shell/enabled-extensions
value: ['drive-menu@gnome-shell-extensions.gcampax.github.com']
- key: /org/gnome/shell/favorite-apps
value: ['org.gnome.Nautilus.desktop', 'org.gnome.Terminal.desktop', 'org.mozilla.Firefox.desktop', 'com.sublimetext.three.desktop', 'org.inkscape.Inkscape.desktop']
- key: /org/gnome/desktop/screensaver/lock-delay
value: ['uint32 1800']
- key: /org/gnome/software/first-run
value: "false"
- key: /org/gnome/software/show-nonfree-prompt
value: "false"
- key: /org/gnome/system/location/enabled
value: "true"
- key: /org/gnome/settings-daemon/peripherals/keyboard/numlock-state
value: ['on']
- key: /org/gnome/control-center/last-panel
value: ['background']
- name: set desktop background & colors
block:
- name: set desktop picture options
dconf:
key: /org/gnome/desktop/background/picture-options
value: "true"
- name: set desktop colors
dconf:
key: "{{ item }}"
value: ["#000000000000"]
with_items:
- /org/gnome/desktop/background/primary-color
- /org/gnome/desktop/background/secondary-color
- name: set desktop background
dconf:
key: /org/gnome/desktop/background/picture-uri
value: ["{{ item }}"]
with_first_found:
- files:
- fedora-printed.jpg
paths:
- /usr/share/backgrounds/fedora-workstation/
---
- hosts: 127.0.0.1
connection: local
become: yes
vars:
class_user:
username: elklab
passwd: "{{ lookup('file', './el-password.txt') }}"
# generate password hash with `ansible localhost -i /dev/null -m debug -a "msg={{ 'mysecretpassword' | password_hash('sha512', 'mysecretsalt') }}"`
gecos: "Elk Lab Class"
groups_fedora:
- wheel
groups_ubuntu:
- dialout
- sudo
default_group: egvpl
packages_fedora:
- "@base-x"
- adobe-source-code-pro-fonts
- ansible
- cabextract
- chrome-gnome-shell
- chromium
- curl
- dconf-editor
- deltarpm
- detox # ?
- eog
- evince
- fedora-workstation-backgrounds
- file-roller
- file-roller-nautilus
- gcc
- gedit
- git
- gnome-backgrounds
- gnome-calculator
- gnome-characters
- gnome-color-manager
- gnome-disk-utility
- gnome-font-viewer
- gnome-logs
- gnome-maps
- gnome-screenshot
- gnome-shell
- gnome-shell-extension-drive-menu
- gnome-software
- gnome-terminal
- gnome-tweaks
- gnome-weather
- gnu-free-fonts-common
- gnu-free-mono-fonts
- gnu-free-sans-fonts
- gnu-free-serif-fonts
- inxi # ?
- htop
- kernel-devel
- make
- most # ?
- nano
- nautilus
- perl
- python3-devel
- samba-client
- trash-cli
- vim-minimal
- xdg-user-dirs
- xdg-user-dirs-gtk
packages_ubuntu:
- apt-transport-https
- build-essential
- cabextract
- chromium-browser
- curl
- dconf-editor
- flatpak
- firefox
- git
- gnome-software-plugin-flatpak
- gnome-tweaks
- python3
- python3-pip
- software-properties-common
- vim-tiny
pip_packages:
- Pillow
- pip
- psutil
- PyYAML
tasks:
- name: ensure hostname is set
hostname:
name: "{{ ansible_distribution|lower }}-vm"
- name: ensure presence of {{ default_group }} group
group:
name: "{{ default_group }}"
state: present
- name: ensure presence of user {{ class_user.username }}
user:
name: "{{ class_user.username }}"
password: "{{ class_user.passwd }}"
comment: "{{ class_user.gecos }}"
group: "{{ default_group }}"
append: yes
- name: tasks for fedora
block:
- name: ensure presence of packages
package:
name: "{{ packages_fedora }}"
state: present
- name: add fedora flatpak remote
flatpak_remote:
name: fedora
state: present
flatpakrepo_url: "oci+https://registry.fedoraproject.org"
- name: install flatpaks from fedora
flatpak:
name: "{{ item }}"
remote: fedora
state: present
with_items:
- "org.mozilla.Firefox"
- name: ensure presence of other packages and repos
package:
name: "{{ item }}"
state: present
with_items:
- "https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ ansible_distribution_major_version }}.noarch.rpm"
- "https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-{{ ansible_distribution_major_version }}.noarch.rpm"
- "https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm"
- name: install packages
package:
name: "{{ packages_fedora }}"
state: present
- name: ensure user is in appropriate groups
user:
name: "{{ class_user.username }}"
groups: "{{ class_user.groups_fedora }}"
append: yes
when: ansible_facts['distribution'] == 'Fedora'
- name: tasks for ubuntu
block:
- name: ensure user is in appropriate groups
user:
name: "{{ class_user.username }}"
groups: "{{ class_user.groups_ubuntu }}"
append: yes
- name: ensure presence of elklab-related packages
package:
name: "{{ packages_ubuntu }}"
state: present
when: ansible_facts['distribution'] == 'Ubuntu'
- name: ensure presence of flathub flatpak repository
flatpak_remote:
name: flathub
state: present
flatpakrepo_url: https://dl.flathub.org/repo/flathub.flatpakrepo
- name: ensure pip is symlink for pip3
file:
src: /usr/bin/pip3
dest: /usr/local/bin/pip
state: link
owner: root
group: root
- name: ensure presence of elklab-related pip packages
pip:
name: "{{ pip_packages }}"
state: latest
- name: get default runlevel
command: systemctl get-default
register: runlevel
changed_when: false
- name: set graphical runlevel
command: systemctl set-default graphical.target
when: runlevel.stdout != "graphical.target"
# - name: is graphical currently active
# command: systemctl is-active graphical.target
# register: graphical
# - name: Switch to graphical runlevel
# command: systemctl isolate graphical.target
# when: graphical.stdout != "active"
- name: ensure presence of flatpaks
flatpak:
name: "{{ item }}"
remote: flathub # unnecessary?
state: present
with_items:
- cc.arduino.arduinoide
- com.sublimetext.three
- org.blender.Blender
- org.gimp.GIMP
- org.inkscape.Inkscape
- org.videolan.VLC
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment