splitting roles

This commit is contained in:
2021-03-03 13:34:26 +00:00
parent 199e0449e6
commit 743c1f8a57
8 changed files with 209 additions and 163 deletions

View File

@@ -0,0 +1,6 @@
- name: Remove temporary directory
tags: always
file:
path: "{{ temp_install_dir.path }}"
state: absent
when: temp_install_dir.path is defined

10
roles/go/tasks/main.yml Normal file
View File

@@ -0,0 +1,10 @@
- name: Install and configure GO
tags: go
become: true
# become_user: "{{ default_user }}"
block:
- name: Install and configure GO
include_role:
name: fubarhouse.golang
vars:
GOPATH: "{{ default_user_home }}/go"

View File

@@ -0,0 +1,40 @@
- name: Install and configure Python + tools
tags: python
become: true
become_user: "{{ default_user }}"
block:
- name: Install Pyenv
shell: curl https://pyenv.run | zsh
args:
creates: "{{ default_user_home }}/.pyenv/bin/pyenv"
environment:
PYENV_ROOT: "{{ default_user_home }}/.pyenv"
- name: Install Pyenv version of Python
shell: "{{ default_user_home }}/.pyenv/bin/pyenv install {{ pyenv_python_version }}"
args:
creates: "{{ default_user_home }}/.pyenv/versions/{{ pyenv_python_version }}/bin/python"
- name: Install pipx
command: python3 -m pip install pipx --user
args:
creates: "{{ default_user_home }}/.local/bin/pipx"
- name: Install pipx packages
shell: "{{ default_user_home }}/.local/bin/pipx install {{ item }}"
loop: "{{ pipx_packages }}"
- name: Install Poetry
shell: curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3
args:
creates: "{{ default_user_home }}/.poetry/bin/poetry"
- name: Install Poetry plugin for oh-my-zsh
shell: |
mkdir {{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry
{{ default_user_home }}/.poetry/bin/poetry completions zsh > {{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry/_poetry
args:
creates: "{{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry"
- name: Configure Poetry
command: "{{ default_user_home }}/.poetry/bin/poetry config virtualenvs.in-project true"

17
roles/rust/tasks/main.yml Normal file
View File

@@ -0,0 +1,17 @@
- name: Install and configure Rust
tags: rust
become: true
become_user: "{{ default_user }}"
block:
- name: Install Rust toolchain
shell: curl https://sh.rustup.rs -sSf | sh -s -- -y
args:
creates: "{{ default_user_home }}/.cargo/bin/rustup"
environment:
RUSTUP_HOME: "{{ default_user_home }}/.rustup"
CARGO_HOME: "{{ default_user_home }}/.cargo"
- name: Install base rust programs
shell: "{{ default_user_home }}/.cargo/bin/cargo install {{ item }}"
loop: "{{ cargo_packages }}"
when: install_cargo_packages

View File

@@ -0,0 +1,32 @@
- name: Initial server setup
tags: setup
block:
- name: Create default user
user:
name: "{{ default_user }}"
password: "{{ default_user_password | password_hash('sha512') }}"
groups: sudo
create_home: yes
shell: /bin/zsh
generate_ssh_key: yes
ssh_key_bits: 2048
ssh_key_file: .ssh/id_rsa
update_password: always
state: present
- name: Ensure sudo group has passwordless sudo privileges
lineinfile:
dest: /etc/sudoers
state: present
regexp: "^%sudo"
line: "%sudo ALL=(ALL) NOPASSWD:ALL"
validate: "/usr/sbin/visudo -cf %s"
- name: Upgrade apt packages
apt:
update_cache: yes
upgrade: full
- name: Install apt packages
apt:
name: "{{ packages_to_install }}"

View File

@@ -1,45 +1,26 @@
---
- name: Create default user
user:
name: "{{ default_user }}"
password: "{{ default_user_password | password_hash('sha512') }}"
groups: sudo
create_home: yes
shell: /bin/zsh
generate_ssh_key: yes
ssh_key_bits: 2048
ssh_key_file: .ssh/id_rsa
update_password: always
state: present
- name: Ensure sudo group has passwordless sudo privileges
lineinfile:
dest: /etc/sudoers
state: present
regexp: "^%sudo"
line: "%sudo ALL=(ALL) NOPASSWD:ALL"
validate: "/usr/sbin/visudo -cf %s"
- name: Upgrade apt packages
apt:
update_cache: yes
upgrade: full
- name: Install apt packages
apt:
name: "{{ packages_to_install }}"
- name: Get default user home
- name: Configure shell for default user
tags: shell
become: true
become_user: "{{ default_user }}"
block:
- name: Get default user home
getent:
database: passwd
key: "{{ default_user }}"
split: ":"
tags: always
- name: Set default user home
- name: Set default user home
set_fact:
default_user_home: "{{ getent_passwd[default_user][4] }}"
tags: always
- name: Install .tmux.conf to default user
- name: Install and configure default user environment
become: true
become_user: "{{ default_user }}"
block:
- name: Install .tmux.conf to default user
copy:
src: .tmux.conf
dest: "{{ default_user_home }}/.tmux.conf"
@@ -48,39 +29,34 @@
force: yes
mode: 0644
- name: Create temporary install directory
- name: Create temporary install directory
tempfile:
path: "/home/{{ default_user }}"
state: directory
suffix: .tmp
register: temp_install_dir
changed_when: false
become: true
become_user: "{{ default_user }}"
tags: always
- name: Download oh-my-zsh
- name: Download oh-my-zsh
get_url:
url: https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh
dest: "{{ temp_install_dir.path }}"
mode: 0777
become: true
become_user: "{{ default_user }}"
- name: Install oh-my-zsh
- name: Install oh-my-zsh
shell: "sh {{ temp_install_dir.path }}/install.sh --unattended"
args:
creates: "{{ default_user_home }}/.oh-my-zsh"
become: true
become_user: "{{ default_user }}"
- name: Install powerlevel10k theme
- name: Install powerlevel10k theme
git:
repo: "https://gitee.com/romkatv/powerlevel10k.git"
version: master
dest: "{{ default_user_home }}/.oh-my-zsh/custom/themes/powerlevel10k"
depth: 1
- name: Install zsh-syntax-highlighting
- name: Install zsh-syntax-highlighting
git:
repo: "https://github.com/zsh-users/zsh-syntax-highlighting.git"
version: master
@@ -88,7 +64,7 @@
clone: yes
update: yes
- name: Install zsh-autosuggestions
- name: Install zsh-autosuggestions
git:
repo: https://github.com/zsh-users/zsh-autosuggestions
version: master
@@ -96,7 +72,7 @@
clone: yes
update: yes
- name: Install .zshrc to default user
- name: Install .zshrc to default user
template:
src: .zshrc.j2
dest: "{{ default_user_home }}/.zshrc"
@@ -105,7 +81,7 @@
force: yes
mode: 0644
- name: Install .p10k.zsh to default user
- name: Install .p10k.zsh to default user
copy:
src: .p10k.zsh
dest: "{{ default_user_home }}/.p10k.zsh"
@@ -113,63 +89,3 @@
group: "{{default_user}}"
force: yes
mode: 0644
- name: Install Rustup
shell: curl https://sh.rustup.rs -sSf | sh -s -- -y
args:
creates: "{{ default_user_home }}/.cargo/bin/rustup"
environment:
RUSTUP_HOME: "{{ default_user_home }}/.rustup"
CARGO_HOME: "{{ default_user_home }}/.cargo"
become: true
become_user: "{{ default_user }}"
- name: Install pyenv
shell: curl https://pyenv.run | zsh
args:
creates: "{{ default_user_home }}/.pyenv/bin/pyenv"
environment:
PYENV_ROOT: "{{ default_user_home }}/.pyenv"
become: true
become_user: "{{ default_user }}"
- name: Install pyenv version of python
shell: "{{ default_user_home }}/.pyenv/bin/pyenv install {{ pyenv_python_version }}"
args:
creates: "{{ default_user_home }}/.pyenv/versions/{{ pyenv_python_version }}/bin/python"
become: true
become_user: "{{ default_user }}"
- name: Install pipx
command: python3 -m pip install pipx --user
args:
creates: "{{ default_user_home }}/.local/bin/pipx"
become: true
become_user: "{{ default_user }}"
- name: Install poetry
shell: curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3
args:
creates: "{{ default_user_home }}/.poetry/bin/poetry"
become: true
become_user: "{{ default_user }}"
- name: Install poetry plugin for oh-my-zsh
shell: |
mkdir {{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry
{{ default_user_home }}/.poetry/bin/poetry completions zsh > {{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry/_poetry
args:
creates: "{{ default_user_home }}/.oh-my-zsh/custom/plugins/poetry"
become: true
become_user: "{{ default_user }}"
- name: Configure poetry
command: "{{ default_user_home }}/.poetry/bin/poetry config virtualenvs.in-project true"
become: true
become_user: "{{ default_user }}"
- name: Install base rust programs
shell: "{{ default_user_home }}/.cargo/bin/cargo install {{ item }}"
loop: "{{ cargo_packages }}"
become: true
become_user: "{{ default_user }}"

View File

@@ -191,11 +191,17 @@ export PATH="$HOME/.poetry/bin:$PATH"
################################################################
source "$HOME/.cargo/env"
################################################################
# GO #
################################################################
export GOBIN="$HOME/go/bin"
export PATH="/usr/local/go/bin:$HOME/go/bin:$PATH"
################################################################
# APPS #
################################################################
# AWS
# complete -C "$HOME/.local/bin/aws_completer" aws
complete -C "$HOME/.local/bin/aws_completer" aws
# TFEnv
export PATH="$PATH:$HOME/.tfenv/bin"

View File

@@ -0,0 +1,19 @@
- name: Install and configure Terraform
tags: terraform
become: true
become_user: "{{ default_user }}"
block:
- name: Install tfenv
git:
repo: https://github.com/tfutils/tfenv.git
version: master
dest: "{{ default_user_home }}/.tfenv"
depth: 1
- name: Install latest version of Terraform
shell: "{{ default_user_home }}/.tfenv/bin/tfenv install latest"
args:
creates: "{{ default_user_home }}/.tfenv/version"
- name: Use latest version of Terraform
shell: "{{ default_user_home }}/.tfenv/bin/tfenv use latest"