home · contact · privacy
Ansible experiment: add user script.
[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=link 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   # Configure console.
26   - name: symlink console config files
27     file: state=link force=yes src={{item}} dest={{item|basename|regex_replace('___','/')}}
28     with_fileglob: ~/config/ansible/files/console/*
29   - name: ensure locales and console-setup are installed
30     apt: name={{item}} state=present
31     with_items:
32     - locales
33     - console-setup
34   - name: generate en_US.UTF-8 locale
35     locale_gen: name=en_US.UTF-8 state=present
36   - name: run setupcon to apply console settings from /etc/default/
37     command: setupcon
38
39   # Miscellaneous.
40   - name: Ensure minimal dotfile symlinks
41     file: state=link force=yes src={{item}} dest=~/.{{item|basename}}
42     with_fileglob: ~/config/ansible/files/dotfiles/minimal/*
43   - name: Ensure root user dotfile symlinks
44     file: state=link force=yes src={{item}} dest=~/.{{item|basename}}
45     with_fileglob: ~/config/ansible/files/dotfiles/root/*
46   - name: ensure ~/.vimbackups directory
47     file: state=directory dest=~/.vimbackups
48   - name: ensure man-db, manpages is installed
49     apt: name={{item}} state=present
50     with_items:
51     - man-db
52     - manpages
53   - name: set /etc/localtime
54     file: state=link force=yes src=/usr/share/zoneinfo/Europe/Berlin dest=/etc/localtime
55   - name: ensure sudo, git, vim, less are installed
56     apt: name={{item}} state=present
57     with_items:
58     - git
59     - vim
60     - less
61     - sudo
62   - name: ensure boot messages are not cleared on start up
63     replace: dest=/etc/systemd/system/getty.target.wants/getty@tty1.service regexp='^TTYVTDisallocate=yes.*$' replace='TTYVDisallocate=no'
64
65   # Config user.
66   - name: create user plom
67     user: name=plom
68   - name: have config repo in user directory
69     git: repo=git://github.com/plomlompom/config dest=/home/plom/config
70     become_user: plom
71     become_method: su
72   - name: ensure user has sudo privileges
73     command: adduser plom sudo