home · contact · privacy
ec592c674b9d8e4d73d19e32fdb2a99a4a409d2e
[config] / ansible / config.yml
1 ---
2 - hosts: all
3   user: root
4   become: yes
5   tasks:
6
7   - name: symlink system files
8     file: state=hard force=yes src={{item}} dest={{item|basename|regex_replace('___','/')}}
9     with_fileglob: ~/config/ansible/files/system/*
10   - name: set hostname for current session
11     shell: hostname w530
12
13   # Configure package management.
14   - name: update package lists
15     apt: update_cache=yes
16   - name: check for initial_purge_happened flag
17     stat: path=flags/initial_purge_happened
18     register: initial_purge
19   - name: perform initial purge
20     include: tasks/initial_purge.yml
21     when: initial_purge.stat.exists == False
22   - name: APT - dist-upgrade
23     apt: upgrade=dist
24
25   # Upgrade kernel.
26   - name: ensure newest kernel and grub are installed
27     apt: name={{item}} state=present
28     with_items:
29     - linux-image-amd64
30     - grub2
31   - name: update grub
32     shell: update-grub
33
34   # Ensure power management.
35   - name: ensure newest kernel and grub are installed
36     apt: name={{item}} state=present
37     with_items:
38     - tlp
39     - acpi-call-dkms
40   - name: start TLP
41     shell: tlp start
42
43   # Configure console.
44   - name: symlink console config files
45     file: state=link force=yes src={{item}} dest={{item|basename|regex_replace('___','/')}}
46     with_fileglob: ~/config/ansible/files/console/*
47   - name: ensure locales and console-setup are installed
48     apt: name={{item}} state=present
49     with_items:
50     - locales
51     - console-setup
52   - name: generate en_US.UTF-8 locale
53     locale_gen: name=en_US.UTF-8 state=present
54   - name: run setupcon to apply console settings from /etc/default/
55     command: setupcon
56
57   # Miscellaneous.
58   - name: Ensure dotfile symlinks
59     file: state=link force=yes src={{item}} dest=~/.{{item|basename}}
60     with_fileglob:
61     - ~/config/dotfiles/minimal/*
62     - ~/config/dotfiles/root/*
63   - name: ensure ~/.vimbackups directory
64     file: state=directory dest=~/.vimbackups
65   - name: ensure man-db, manpages is installed
66     apt: name={{item}} state=present
67     with_items:
68     - man-db
69     - manpages
70   - name: set /etc/localtime
71     file: state=link force=yes src=/usr/share/zoneinfo/Europe/Berlin dest=/etc/localtime
72   - name: ensure sudo, git, vim, less, openssh are installed
73     apt: name={{item}} state=present
74     with_items:
75     - git
76     - vim
77     - less
78     - sudo
79     - openssh-client
80   - name: ensure boot messages are not cleared on start up
81     replace: dest=/etc/systemd/system/getty.target.wants/getty@tty1.service regexp='^TTYVTDisallocate=yes.*$' replace='TTYVTDisallocate=no'
82
83   # Config user.
84   - name: create user plom with sudo privileges and bash shell
85     user: name=plom groups=sudo shell=/bin/bash
86   - name: have config repo in user directory
87     git: repo=https://github.com/plomlompom/config dest=/home/plom/config
88     become_user: plom
89     become_method: su
90
91   # Ensure X window environment.
92   - name: ensure minimal X window environment
93     apt: name={{item}} state=present
94     with_items:
95     - xserver-xorg-core
96     - xserver-xorg-input-evdev  # supports all input devices the kernel knows about
97     - xinit  # contains startx
98     - libpam-systemd  # needed to start X as non-root
99   - name: ensure 3d acceleration and optimus switch
100     apt: name={{item}} state=present
101     with_items:
102     - linux-headers-amd64  # necessary to build proper nvidia-driver module
103     - libgl1-mesa-dri  # necessary for OpenGL 3D acceleration to work
104     - libglu1-mesa  # necessary for OpenGL 3D acceleration to work
105     - bumblebee-nvidia
106     - primus
107   - name: ensure basic X tools
108     apt: name={{item}} state=present
109     with_items:
110     - xterm
111     - x11-xserver-utils  # includes xrdb which applies .Xresources files
112     - redshift 
113     - i3
114     - i3status
115     - dmenu
116
117   # Set up pentadactyl.
118   - name: ensure browser environment
119     apt: name={{item}} state=present
120     with_items:
121     - iceweasel
122     - xul-ext-noscript
123     - xul-ext-pentadactyl
124     - vim-gtk  # used by pentadactyl for text editing