ansible-dev-box/tasks/toolchains.yml

170 lines
4.4 KiB
YAML

---
- name: Install needed toolchains
apt:
name:
- curl
- gcc
- mypy
- gnupg2
- apt-transport-https
- jsonlint
state: present
- name: Add Yarn repo Apt signing key
apt_key:
id: 72ECF46A56B4AD39C907BBB71646B01B86E50310
url: https://dl.yarnpkg.com/debian/pubkey.gpg
state: present
- name: Add Yarn repo
apt_repository:
repo: deb https://dl.yarnpkg.com/debian/ stable main
state: present
- name: Install Yarn
apt:
name: yarn
state: present
- name: Install from backports
apt:
name:
- mosh
- node-typescript
- "golang-{{ dev_box.golang_version|default('1.14') }}"
state: present
default_release: "{{ ansible_distribution_release }}-backports"
- name: Install eslint with yarn
shell: "yarn add eslint --dev"
- name: Install prettier with yarn
shell: "yarn add --dev --exact prettier"
- name: Retrieve rustup installer
get_url:
url: https://sh.rustup.rs
dest: /tmp/rustup.sh
owner: root
group: root
mode: 0755
- name: Copy rustup installer in each user home
copy:
src: /tmp/rustup.sh
dest: "{{ item.home }}/rustup.sh"
remote_src: true
owner: "{{ item.username }}"
group: "{{ item.group|default(item.username) }}"
mode: 0755
with_items: "{{ dev_box.users }}"
- name: Install rustup for each user
shell:
cmd: "/tmp/rustup.sh -y"
chdir: "{{ item.home }}"
become_user: "{{ item.username }}"
with_items: "{{ dev_box.users }}"
changed_when: false
- name: Install the rust stable toolchain
shell:
cmd: "{{ item.home }}/.cargo/bin/rustup toolchain install stable"
chdir: "{{ item.home }}"
become_user: "{{ item.username }}"
with_items: "{{ dev_box.users }}"
- name: Ensure configuration directories are present
file:
path: "{{ item.0.home }}/.config/zsh/{{ item.1 }}"
state: directory
recurse: yes
owner: "{{ item.0.username }}"
group: "{{ item.0.group|default(item.0.username) }}"
mode: 0755
loop: "{{ dev_box.users|product(['pre', 'post'])|list }}"
- name: Ensure asdf configuration for zsh is present
template:
src: templates/01-asdf.j2
dest: "{{ item.home }}/.config/zsh/pre/01-asdf"
owner: "{{ item.username }}"
group: "{{ item.group|default(item.username) }}"
mode: 0755
loop: "{{ dev_box.users|flatten(levels=1) }}"
- name: Install asdf
git:
repo: https://github.com/asdf-vm/asdf.git
dest: "{{ item.home }}/.asdf"
force: yes
with_items: "{{ dev_box.users }}"
- name: Fix asdf directory permissions
file:
path: "{{ item.home }}/.asdf"
owner: "{{ item.username }}"
group: "{{ item.group|default(item.username) }}"
mode: 0755
with_items: "{{ dev_box.users }}"
- name: Copy elixir installer script
copy:
content: |
#!/usr/bin/env bash
source {{ item.home }}/.asdf/asdf.sh
asdf plugin-add elixir
asdf install elixir {{ dev_box.elixir_version|default('1.10.3-otp-22') }}
asdf global elixir {{ dev_box.elixir_version|default('1.10.3-otp-22') }}
dest: "{{ item.home }}/elixir_installer.sh"
owner: "{{ item.username }}"
group: "{{ item.group|default(item.username) }}"
mode: 0755
with_items: "{{ dev_box.users }}"
- name: Install elixir
shell:
cmd: "{{ item.home }}/elixir_installer.sh"
chdir: "{{ item.home }}"
become_user: "{{ item.username }}"
with_items: "{{ dev_box.users }}"
- name: Get elixir-ls
git:
repo: https://github.com/elixir-lsp/elixir-ls
dest: "/opt/elixir_ls"
force: yes
- name: Remove local tool-versions
file:
path: /opt/elixir_ls/.tool-versions
state: absent
- name: Ensure elixir-ls has needed directory
file:
path: "{{ item.home }}/.elixir_ls"
state: directory
owner: "{{ item.username }}"
group: "{{ item.group|default(item.username) }}"
mode: 0755
with_items: "{{ dev_box.users }}"
- name: Copy elixir-ls installer script
copy:
content: |
#!/usr/bin/env bash
source {{ item.home }}/.asdf/asdf.sh
mix compile && mix elixir_ls.release -o {{ item.home }}/.elixir_ls
dest: "{{ item.home }}/elixir-ls_installer.sh"
owner: "{{ item.username }}"
group: "{{ item.group|default(item.username) }}"
mode: 0755
with_items: "{{ dev_box.users }}"
- name: Compile elixir-ls
shell:
cmd: "{{ item.home }}/elixir-ls_installer.sh"
chdir: "/opt/elixir_ls"
become_user: "{{ item.username }}"
with_items: "{{ dev_box.users }}"