diff --git a/README.md b/README.md index a062b16..474cbed 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ This playbook defines the configuration for all servers / devices controlled by Following roles have been defined to make creating a server configuration easy: +- **account** installs an user account preconfigured with tmux, vim and zsh. - **acme** defines roles for handling the automatic handling of certificates with *acme.sh* - **application** installs main application - **certificate** issues a given certificate diff --git a/roles/account/defaults/main.yml b/roles/account/defaults/main.yml new file mode 100644 index 0000000..14f426f --- /dev/null +++ b/roles/account/defaults/main.yml @@ -0,0 +1,4 @@ +--- + +sudo: no +zsh_theme: agnoster diff --git a/roles/account/tasks/main.yml b/roles/account/tasks/main.yml new file mode 100644 index 0000000..10be75e --- /dev/null +++ b/roles/account/tasks/main.yml @@ -0,0 +1,47 @@ +--- + +- name: Install required packages + apt: + state: present + name: + - git + - httpie + - man + - thefuck + - tmux + - zsh + +- name: Configure user account {{ username }} + user: + name: "{{ username }}" + home: "/home/{{ username }}" + create_home: yes + move_home: yes + shell: /bin/zsh + groups: + - "{{ sudo | ternary('sudo', '') }}" + append: yes + password: "{{ password | password_hash('sha512', LOCAL_SALT) }}" + update_password: on_create + generate_ssh_key: yes + ssh_key_type: ed25519 + ssh_key_file: .ssh/id_ed25519 + ssh_key_passphrase: "{{ password }}" + ssh_key_comment: "{{ username }}@{{ ansible_fqdn }} {{ ansible_date_time.date }}" + +- name: Download oh-my-zsh for user {{ username }} + become_user: "{{ username }}" + git: + repo: https://github.com/robbyrussell/oh-my-zsh.git + dest: ~/.oh-my-zsh + +- name: Configure oh-my-zsh + become_user: "{{ username }}" + template: + src: template.zshrc + dest: ~/.zshrc + force: no + +# TODO tmux configuration + +# TODO vim configuration diff --git a/roles/account/templates/template.zshrc b/roles/account/templates/template.zshrc new file mode 100644 index 0000000..de02a1c --- /dev/null +++ b/roles/account/templates/template.zshrc @@ -0,0 +1,120 @@ +# If you come from bash you might have to change your $PATH. +# export PATH=$HOME/bin:/usr/local/bin:$PATH + +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes +ZSH_THEME="{{ zsh_theme }}" + +# Set list of themes to pick from when loading at random +# Setting this variable when ZSH_THEME=random will cause zsh to load +# a theme from this variable instead of looking in ~/.oh-my-zsh/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment the following line to disable bi-weekly auto-update checks. +DISABLE_AUTO_UPDATE="false" +DISABLE_UPDATE_PROMPT="true" + +# Uncomment the following line to change how often to auto-update (in days). +export UPDATE_ZSH_DAYS=2 + +# Uncomment the following line to disable colors in ls. +DISABLE_LS_COLORS="false" + +# Uncomment the following line to disable auto-setting terminal title. +DISABLE_AUTO_TITLE="false" + +# Uncomment the following line to enable command auto-correction. +ENABLE_CORRECTION="false" + +# Uncomment the following line to display red dots whilst waiting for completion. +COMPLETION_WAITING_DOTS="false" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# You can set one of the optional three formats: +# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# or set a custom format using the strftime function format specifications, +# see 'man strftime' for details. +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? +# Standard plugins can be found in ~/.oh-my-zsh/plugins/* +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=( + colored-man-pages + colorize + command-not-found + common-aliases + debian + emoji-clock + git + httpie + lol + magic-enter + man + systemd + thefuck + themes + tmux + ufw +) + +MAGIC_ENTER_GIT_COMMAND='git status -u .' +MAGIC_ENTER_OTHER_COMMAND='ls -lh .' + +ZSH_TMUX_AUTOSTART=true +ZSH_TMUX_AUTOCONNECT=true +ZSH_TMUX_AUTOQUIT=true + +export ANSIBLE_NOCOWS=1 + +source $ZSH/oh-my-zsh.sh + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh"