Skip to content

Instantly share code, notes, and snippets.

@mrlesmithjr
Last active January 30, 2016 20:31
Show Gist options
  • Select an option

  • Save mrlesmithjr/db6ec9589f8e1807863b to your computer and use it in GitHub Desktop.

Select an option

Save mrlesmithjr/db6ec9589f8e1807863b to your computer and use it in GitHub Desktop.
Ubuntu Desktop Like a Boss
---
- name: Set up Fresh Ubuntu Desktop
hosts: all
sudo: true
handlers:
- name: restart avahi-daemon
service:
name: avahi-daemon
state: restarted
- name: restart netatalk
service:
name: netatalk
state: restarted
vars:
- apt_packages:
- name: adobe-flashplugin
state: present
- name: atom #Atom editor
state: present
- name: avahi-daemon
state: present
- name: build-essential
state: present
- name: chromium-browser
state: present
- name: concordance #Logitech Harmony CLI App
state: present
- name: congruity #Logitech Harmony GUI fpr concordance
state: present
- name: cronopete #Time Machine like backups for Ubuntu
state: absent
- name: deja-dup
state: present
- name: digikam
state: present
- name: dkms
state: present
- name: faac
state: present
- name: flac
state: present
- name: gimp
state: present
- name: gimp-data
state: present
- name: gimp-data-extras
state: present
- name: gimp-plugin-registry
state: present
- name: git
state: present
- name: git-review
state: present
- name: google-chrome-stable
state: present
- name: gparted
state: present
- name: grive-tools #Google Drive
state: present
- name: grub-customizer
state: present
- name: handbrake
state: present
- name: keepass2
state: present
- name: kodi
state: present
- name: lame
state: present
- name: libc6-dev
state: present
- name: libdvdnav4
state: present
- name: libdvdread4
state: present
- name: libnss-mdns
state: present
- name: netatalk
state: present
- name: openssh-server
state: present
- name: pkg-config
state: present
- name: python-software-properties
state: present
- name: python-spice-client-gtk
state: present
- name: skype
state: present
- name: spotify-client
state: present
- name: sshpass
state: present
- name: timeshift #Time Machine for Ubuntu
state: present
- name: ubuntu-restricted-extras
state: present
- name: ubuntu-wallpapers
state: present
- name: unity-tweak-tool
state: present
- name: virt-manager #KVM management
state: present
- name: virt-viewer
state: present
- name: virtualbox-5.0
state: present
- name: vlc
state: present
# - name: vmware-view-client
# state: present
- name: vorbis-tools
state: present
- apt_repo_keys:
- id: BBEBDCB318AD50EC6865090613B00F1FD2C19886
keyserver: keyserver.ubuntu.com
state: present
- url: https://dl.google.com/linux/linux_signing_key.pub
state: present
- url: https://www.virtualbox.org/download/oracle_vbox.asc
state: present
- apt_repos:
- repo: 'deb http://archive.canonical.com/ubuntu {{ ansible_distribution_release }} partner'
state: present
- repo: 'deb-src http://archive.canonical.com/ubuntu {{ ansible_distribution_release }} partner'
state: present
- repo: 'deb http://dl.google.com/linux/chrome/deb/ stable main'
state: present
- repo: 'deb http://download.virtualbox.org/virtualbox/debian {{ ansible_distribution_release }} contrib' #Virtualbox
state: present
- repo: 'deb http://repository.spotify.com stable non-free' #Spotify
state: present
- repo: 'ppa:danielrichter2007/grub-customizer' #Grub Customizer
state: present
- repo: 'ppa:nilarimogard/webupd8' #Google Drive grive2
state: present
- repo: 'ppa:otto-kesselgulasch/gimp' #Gimp Photo Editor
state: present
- repo: 'ppa:rastersoft-gmail/cronopetedev' #Time Machine like backups for Ubuntu
state: present
- repo: 'ppa:team-xbmc/ppa' #Kodi
state: present
- repo: 'ppa:teejee2008/ppa'
state: present
- repo: 'ppa:thefanclub/grive-tools' #Google Drive
state: present
- repo: 'ppa:videolan/stable-daily' #VLC
state: present
- repo: 'ppa:webupd8team/atom' #Atom editor
state: present
- avahi_daemon_config: true #Only required if your internal FQDN includes .local - ie. everythingshouldbevirtual.local
- config_timemachine_provider: true #Defines if you would like to make your workstation provide TimeMachine services for OSX clients
- deb_packages:
- name: dropbox
package: dropbox_2015.10.28_amd64.deb
state: present
url: https://www.dropbox.com/download?dl=packages/ubuntu
- name: vagrant
package: vagrant_1.8.1_x86_64.deb
state: present
url: https://releases.hashicorp.com/vagrant/1.8.1
- docker_config_alt_data_dir: false
- docker_alt_data_dir: '/mnt/USBData/docker'
- docker_opts: #defines docker service options to be configured...if different than defaults from ansible-docker role.
- '--dns {{ pri_dns }}'
- '--dns {{ sec_dns }}'
# - '-g {{ docker_alt_data_dir }}' #example to change location of where Docker will store data...to change - change docker_data_dir var above.
- docker_users:
- larry
# - mount_devices: false #defines if devices defined under mounts: should be mounted....define in host_vars/host.yml
# - mounts: #defines devices to mount...define in host_vars/host.yml
# - name: /mnt/TimeMachine
# fstype: ext4
# opts: 'defaults'
# src: 'UUID=5ade3608-d7cd-434b-a18e-8bc979279f6d'
# state: mounted
# - name: /mnt/USBData
# fstype: ext4
# opts: 'defaults'
# src: 'UUID=d0818e3d-efbf-4b5a-ac11-2c994a552023'
# state: mounted
- nvidia_video: true
- timemachine_directory_share: /mnt/TimeMachine
- timemachine_users:
- larry
roles:
- role: ansible-users
- role: ansible-docker
- role: ansible-manage-ssh-keys
- role: ansible-monit
- role: ansible-ntp
- role: ansible-postfix
- role: ansible-rsyslog
- role: ansible-snmpd
- role: ansible-timezone
tasks:
- name: installing pre-reqs
apt:
name: "{{ item }}"
state: present
with_items:
- software-properties-common
- name: adding apt repo keys
apt_key:
keyserver: "{{ item.keyserver|default(omit) }}"
id: "{{ item.id|default(omit) }}"
url: "{{ item.url|default(omit) }}"
state: "{{ item.state }}"
with_items: apt_repo_keys
- name: adding apt repositories
apt_repository:
repo: "{{ item.repo }}"
state: "{{ item.state }}"
with_items: apt_repos
- name: installing packages
apt:
name: "{{ item.name }}"
state: "{{ item.state }}"
with_items: apt_packages
- name: adding SWAT NVIDIA drivers repo (if NVIDIA)
apt_repository:
repo: "ppa:ubuntu-x-swat/x-updates"
state: present
when: nvidia_video is defined and nvidia_video
- name: installing NVIDIA Drivers (if NVIDIA)
apt:
name: "{{ item }}"
state: present
when: nvidia_video is defined and nvidia_video
with_items:
- nvidia-current
- nvidia-settings
- name: downloading additional debian packages to install
get_url:
url: "{{ item.url }}/{{ item.package }}"
dest: "/opt/{{ item.package }}"
with_items: deb_packages
when: item.state != "absent"
- name: installing additional debian packages
apt:
deb: "/opt/{{ item.package }}"
state: "{{ item.state }}"
with_items: deb_packages
#### NOT NEEDED As we modify nsswitch.conf further down....this is only if using a .local unicast DNS name...I AM.. I KNOW>> I KNOW
# - name: modifying Avahi Daemon (.local domains)
# replace:
# dest: /etc/avahi/avahi-daemon.conf
# regexp: "^#domain-name=local"
# replace: "domain-name=.alocal" #This breaks avahi-daemon when setting up for TimeMachine
# notify: restart avahi-daemon
# when: avahi_daemon_config is defined and avahi_daemon_config
- name: configuring nsswitch.conf
template:
src: "templates/etc/nsswitch.conf.j2"
dest: "/etc/nsswitch.conf"
owner: root
group: root
mode: 0644
when: avahi_daemon_config is defined and avahi_daemon_config
- name: installing vmware-view-client #Will not install using apt module for some reason
command: "apt-get install -y vmware-view-client"
args:
creates: /usr/bin/vmware-view
- name: mounting any devices defined
mount:
name: "{{ item.name }}"
src: "{{ item.src }}"
fstype: "{{ item.fstype }}"
opts: "{{ item.opts|default(omit) }}"
state: "{{ item.state }}"
tags:
- mount_devices
with_items: mounts
when: mount_devices is defined and mount_devices
- name: ensuring docker_alt_data_dir exists
file:
dest: "{{ docker_alt_data_dir }}"
state: directory
when: docker_config_alt_data_dir is defined and docker_config_alt_data_dir
- name: setting permissions on device mounts to allow all users r/w
file:
dest: "{{ item.name }}"
mode: 0777
state: directory
tags:
- mount_devices
with_items: mounts
when: mount_devices is defined and mount_devices
- name: configuring TimeMachine services
template:
src: "templates/{{ item }}.j2"
dest: "{{ item }}"
owner: root
group: root
mode: 0644
notify:
- restart avahi-daemon
- restart netatalk
tags:
- timemachine
with_items:
- /etc/avahi/services/afpd.service
when: config_timemachine_provider is defined and config_timemachine_provider
- name: configuring netatalk
template:
src: "templates/etc/netatalk/AppleVolumes.default.j2"
dest: "/etc/netatalk/AppleVolumes.default"
owner: root
group: root
mode: 0644
tags: timemachine
notify:
- restart netatalk
when: config_timemachine_provider is defined and config_timemachine_provider
- name: cleaning up apt packages
command: "{{ item }}"
with_items:
- 'apt-get -y autoremove'
- 'apt-get -y clean'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment