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 On macOS, it might be needed to specify the full path to the pip3 executable: - `override_pip_exe`: Set a custom pip executable (default: n.a.) 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") - `user_lang_latex`: Boolean to install a LaTeX distribution and configure VS Code (default: false) 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