113 lines
3.9 KiB
Markdown
113 lines
3.9 KiB
Markdown
Common
|
|
=========
|
|
|
|
Common user settings and tools used by Jannik Beyerstedt.
|
|
This role is compatible with Debian based systems, macOS, CentOS (no development toolchains) and ArchLinux (no updates).
|
|
|
|
|
|
Requirements
|
|
------------
|
|
|
|
Have a user set up on the machine, to which you can connecto via a ssh key.
|
|
This user must also have sudo right without asking for a password!
|
|
(e.g. using `%sudo ALL=(ALL) NOPASSWD:ALL` when editing the sudoers file with `sudo visudo`)
|
|
|
|
|
|
Role Variables
|
|
--------------
|
|
|
|
This role uses the apt package manager on Debian based hosts.
|
|
But for some operating systems the `ansible_os_family` variable is not set to "Debian" by the fact gathering even if it is Debian based (like Mendel GNU/Linux on the Google Coral Dev Board).
|
|
- `override_os_family`: Set to "Debian" in the host inventory, if `ansible_os_family` is not set correctly
|
|
|
|
The User Setup will change the user shell and global gitconfig. This can be disabled:
|
|
- `usersetup_chsh`: Boolean to enable changing the user shell to zsh (default: true)
|
|
- `usersetup_gitconfig`: Boolean to disable overriding the global gitconfig (default: true)
|
|
* `gitconfig_name`: User's name in .gitconfig file (default: n.a.)
|
|
* `gitconfig_email`: User's email in .gitconfig file (default: n.a.)
|
|
- `usersetup_virtualenvwrapper`: Boolean to enable the virtualenvwrapper plugin in oh-my-zsh (default: false)
|
|
|
|
The development environment for different programming languages can be setup automatically.
|
|
To enable, that Visual Studio Code will be installed and configured, set `user_vscode` to true, otherwise only the bare development toolchain will be installed.
|
|
For a GUI/ Desktop machine, you can enable to install and configure VS Code:
|
|
- `user_vscode`: Boolean to install and set the basic configuration of VS Code (default: false)
|
|
- `user_lang_cpp`: Boolean to install C/C++ dev tools and configure VS Code (default: false)
|
|
- `user_lang_python`: Boolean to install Python dev tools and configure VS Code (default: false)
|
|
- `user_lang_golang`: Boolean to install Golang dev tools and configure VS Code (default: false)
|
|
* `user_lang_golang_gopath`: Install path for golang (default: "{{ ansible_user_dir }}/Development/go")
|
|
|
|
By default, this role will run updates, install some essential tools, set up the user's shell and copy the dotfiles.
|
|
If you just want to have the dotfiles managed by ansible, set `common_settingsonly` to true!
|
|
This can be useful, if you have no sudo rights, because tool installation will need these.
|
|
|
|
|
|
Dependencies
|
|
------------
|
|
|
|
none
|
|
|
|
|
|
Example Playbook
|
|
----------------
|
|
|
|
You can simply run the whole role:
|
|
```yml
|
|
- name: Basic User Shell Setup
|
|
hosts: all
|
|
tasks:
|
|
- name: Basics - Update first
|
|
include_role:
|
|
name: common
|
|
tasks_from: update
|
|
when: common_settingsonly | default(false) == false
|
|
- name: Basics - Install essential tools
|
|
include_role:
|
|
name: common
|
|
tasks_from: essentials
|
|
when: common_settingsonly | default(false) == false
|
|
- name: Basics - Install more tools
|
|
include_role:
|
|
name: common
|
|
tasks_from: tools
|
|
when: common_settingsonly | default(false) == false
|
|
|
|
- name: Basics - Setup user shell
|
|
include_role:
|
|
name: common
|
|
tasks_from: usersetup
|
|
when: common_settingsonly | default(false) == false
|
|
- name: Basics - Install dotfiles
|
|
import_role:
|
|
name: common
|
|
tasks_from: usersettings
|
|
|
|
# Additional Tasks for Specific Host Types (not included in the role's main.yml)
|
|
|
|
# more tools for your main machine
|
|
- name: Basics - Install user's working utilities
|
|
import_role:
|
|
name: common
|
|
tasks_from: usertools
|
|
|
|
# install programming languages and optionally VS Code
|
|
- name: Basics - Install and configure development env (and VS Code)
|
|
import_role:
|
|
name: common
|
|
tasks_from: devel
|
|
```
|
|
|
|
Or call the different tasks individually:
|
|
```yml
|
|
- name: Basic User Shell Setup
|
|
hosts: all
|
|
tasks:
|
|
- import_role:
|
|
name: common
|
|
```
|
|
|
|
|
|
License
|
|
-------
|
|
|
|
GPLv3
|