Skip to content

Commit

Permalink
feat(asdf): only install global asdf tools from ansible
Browse files Browse the repository at this point in the history
  • Loading branch information
smoyer64 committed Jul 5, 2024
1 parent bb8774c commit 1940782
Show file tree
Hide file tree
Showing 7 changed files with 162 additions and 187 deletions.
7 changes: 6 additions & 1 deletion bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
sudo apt install -y git curl python3-venv python3-pip

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0
echo
echo "# BEGIN ANSIBLE MANAGED BLOCK for asdf" >> "$HOME/.bashrc"
echo '. "$HOME/.asdf/asdf.sh"' >> "$HOME/.bashrc"
echo '. "$HOME/.asdf/completions/asdf.bash"' >> "$HOME/.bashrc"
. "$HOME/.bashrc"
echo "# END ANSIBLE MANAGED BLOCK for asdf" >> "$HOME/.bashrc"

#
# Install Ansible via asdf
Expand All @@ -21,7 +23,10 @@ echo '. "$HOME/.asdf/completions/asdf.bash"' >> "$HOME/.bashrc"
# Make a bin directory in the user's home directory
#
mkdir -p "$HOME/bin"
echo
echo "# BEGIN ANSIBLE MANAGED BLOCK FOR \$HOME/bin"
echo 'export "PATH=$HOME/bin:$PATH"' >> "$HOME/.bashrc"
echo "# END ANSIBLE MANAGED BLOCK FOR \$HOME/bin"

#
# Install Workstation
Expand Down
86 changes: 34 additions & 52 deletions roles/asdf/tasks/main.yaml
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
---
#

- name: install asdf
git:
repo: https://github.com/asdf-vm/asdf.git
dest: ~/.asdf
version: "{{ asdf_version }}"
update: no
tags:
- asdf

- name: make bash version executable
file:
path: ~/.asdf/asdf.sh
mode: 0500
tags:
- asdf

- name: symlink to the asdf bash executable
file:
src: ~/.asdf/asdf.sh
dest: ~/bin/asdf
mode: 0500
state: link
tags:
- asdf
# - name: install asdf
# git:
# repo: https://github.com/asdf-vm/asdf.git
# dest: ~/.asdf
# version: "{{ asdf_version }}"
# update: no
# tags:
# - asdf

# - name: make bash version executable
# file:
# path: ~/.asdf/asdf.sh
# mode: 0500
# tags:
# - asdf

# - name: symlink to the asdf bash executable
# file:
# src: ~/.asdf/asdf.sh
# dest: ~/bin/asdf
# mode: 0500
# state: link
# tags:
# - asdf

- name: install asdf and associated completions
blockinfile:
Expand All @@ -37,16 +37,16 @@
tags:
- asdf

- name: add the up-to-date ansible asdf plugin
shell: asdf plugin add ansible https://github.com/Bleacks/asdf-ansible-plugin.git
environment:
GITHUB_API_TOKEN: "{{ GITHUB_API_TOKEN }}"
register: ansible_plugin_add_result
changed_when: '"already added" not in ansible_plugin_add_result.stdout'
failed_when: "ansible_plugin_add_result.rc == 1"
tags:
- asdf
- new-ansible
# - name: add the up-to-date ansible asdf plugin
# shell: asdf plugin add ansible https://github.com/Bleacks/asdf-ansible-plugin.git
# environment:
# GITHUB_API_TOKEN: "{{ GITHUB_API_TOKEN }}"
# register: ansible_plugin_add_result
# changed_when: '"already added" not in ansible_plugin_add_result.stdout'
# failed_when: "ansible_plugin_add_result.rc == 1"
# tags:
# - asdf
# - new-ansible

- name: get asdf version
shell: asdf version
Expand Down Expand Up @@ -130,21 +130,3 @@
tags:
- asdf

- name: remove global tools installed by deprecated Ansible plays
include_tasks: removes.yml
args:
apply:
become: yes
loop: "{{ removes }}"
loop_control:
loop_var: remove_item
tags:
- asdf

- name: remove local tools installed by deprecated Ansible plays
include_tasks: removes.yml
loop: "{{ cleans }}"
loop_control:
loop_var: remove_item
tags:
- asdf
23 changes: 20 additions & 3 deletions roles/asdf/tasks/tools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
environment:
GITHUB_API_TOKEN: "{{ GITHUB_API_TOKEN }}"
register: plugin_add_result
changed_when: "plugin_add_result.rc == 0"
changed_when:
- plugin_add_result.rc == 0
- '"already added" not in plugin_add_result.stdout'
failed_when: "plugin_add_result.rc == 1"
tags:
- asdf
Expand All @@ -16,7 +18,22 @@
environment:
GITHUB_API_TOKEN: "{{ GITHUB_API_TOKEN }}"
register: tool_version_installed_result
changed_when: "'Downloading' in tool_version_installed_result.stdout"
changed_when: "'already installed' not in tool_version_installed_result.stdout"
tags:
- asdf

- name: get the current global version for {{ tool_item.name }}
shell: asdf list {{ tool_item.name }} | grep '*' | cut -f 2 -d '*'
register: current_tool_version_result
changed_when: false
tags:
- asdf

- name: get the latest available version for {{ tool_item.name }}
shell: asdf list all {{ tool_item.name }} | tail -n 1
register: latest_tool_version_result
changed_when: false
failed_when: latest_tool_version_result == ""
tags:
- asdf

Expand All @@ -25,7 +42,7 @@
environment:
GITHUB_API_TOKEN: "{{ GITHUB_API_TOKEN }}"
register: plugin_global_version_set_result
changed_when: "tool_version_installed_result is changed"
changed_when: current_tool_version_result.stdout != latest_tool_version_result.stdout
failed_when: "plugin_global_version_set_result.rc > 0"
tags:
- asdf
99 changes: 35 additions & 64 deletions roles/asdf/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,76 +1,47 @@
---
#

cleans:
- { path: "~/go/bin", pattern: "^go1\\..*$"}
- { path: "~/go/bin", pattern: "^protoc-gen-go(-grpc)?$"}
- { path: "~/", pattern: "^sdk$"}

removes:
- { path: "/opt", pattern: "^op$"}
- { path: "/usr/bin", pattern: "^op$"}
- { path: "/opt", pattern: "^go$"}
- { path: "/usr/bin", pattern: "^go(fmt)?$"}
- { path: "/usr/share", pattern: "^go-tools$"}
- { path: "/opt", pattern: "^helm$"}
- { path: "/usr/bin", pattern: "^helm$"}
- { path: "/opt", pattern: "^kube(ctx|ns)$"}
- { path: "/usr/bin", pattern: "^kube(ctx|ns)$"}
- { path: "/etc/bash_completion.d", pattern: "^kube(ctx|ns)$"}
- { path: "/opt", pattern: "^kubeseal$"}
- { path: "/usr/bin", pattern: "^kubeseal$"}
- { path: "/opt", pattern: "^kustomize-.*"}
- { path: "/usr/bin", pattern: "^kustomize$"}
- { path: "/opt", pattern: "^minikube$"}
- { path: "/usr/bin", pattern: "^minikube$"}
- { path: "/opt", pattern: "^skaffold$"}
- { path: "/usr/bin", pattern: "^skaffold$"}
- { path: "/opt", pattern: "^terraform$"}
- { path: "/usr/bin", pattern: "^terraform$"}
- { path: "/opt", pattern: "^terragrunt$"}
- { path: "/usr/bin", pattern: "^terragrunt$"}

tools:
- { name: "1password-cli", version: "{{ op_cli_version }}"}
- { name: "act", version: "{{ act_version }}"}
- { name: "ant", version: "{{ ant_version }}"}
# - { name: "act", version: "{{ act_version }}"}
# - { name: "ant", version: "{{ ant_version }}"}
- { name: "awscli", version: "{{ awscli_version }}"}
- { name: "aws-vault", version: "{{ aws_vault_version }}"}
- { name: "bazel", version: "{{ bazel_version }}"}
# - { name: "bazel", version: "{{ bazel_version }}"}
- { name: "chezmoi", version: "{{ chezmoi_version }}"}
- { name: "direnv", version: "{{ direnv_version }}"}
- { name: "github-cli", version: "{{ github_cli_version }}"}
- { name: "golang", version: "{{ golang_version }}"}
- { name: "golangci-lint", version: "{{ golangci_lint_version }}"}
- { name: "gomigrate", version: "{{ gomigrate_version }}"}
- { name: "gradle", version: "{{ gradle_version }}"}
- { name: "grpcurl", version: "{{ grpcurl_version }}"}
- { name: "helm", "version": "{{ helm_version }}"}
- { name: "java", version: "{{ java_version }}"}
# - { name: "golang", version: "{{ golang_version }}"}
# - { name: "golangci-lint", version: "{{ golangci_lint_version }}"}
# - { name: "gomigrate", version: "{{ gomigrate_version }}"}
# - { name: "gradle", version: "{{ gradle_version }}"}
# - { name: "grpcurl", version: "{{ grpcurl_version }}"}
# - { name: "helm", "version": "{{ helm_version }}"}
# - { name: "java", version: "{{ java_version }}"}
# - { name: "jq", version: "{{ jq_version }}"}
- { name: "k6", version: "{{ k6_version }}"}
- { name: "k9s", version: "{{ k9s_version }}"}
- { name: "kind", version: "{{ kind_version }}"}
- { name: "ko", version: "{{ ko_version }}"}
- { name: "krew", version: "{{ krew_version }}"}
- { name: "kubectl", version: "{{ kubectl_version }}"}
- { name: "kubeseal", version: "{{ kubeseal_version }}"}
- { name: "kustomize", version: "{{ kustomize_version }}"}
# - { name: "k6", version: "{{ k6_version }}"}
# - { name: "k9s", version: "{{ k9s_version }}"}
# - { name: "kind", version: "{{ kind_version }}"}
# - { name: "ko", version: "{{ ko_version }}"}
# - { name: "krew", version: "{{ krew_version }}"}
# - { name: "kubectl", version: "{{ kubectl_version }}"}
# - { name: "kubeseal", version: "{{ kubeseal_version }}"}
# - { name: "kustomize", version: "{{ kustomize_version }}"}
# - { name: "linkerd", version: "{{ linkerd_version }}"}
- { name: "mage", version: "{{ mage_version }}"}
- { name: "make", version: "{{ make_version }}"}
- { name: "maven", version: "{{ maven_version }}"}
- { name: "minikube", version: "{{ minikube_version }}"}
- { name: "nancy", version: "{{ nancy_version }}"}
- { name: "nodejs", version: "{{ nodejs_version }}"}
- { name: "protoc", version: "{{ protoc_version }}"}
- { name: "protoc-gen-go", version: "{{ protoc_gen_version }}"}
- { name: "protoc-gen-go-grpc", version: "{{ protoc_gen_grpc_version }}"}
- { name: "semver", version: "{{ semver_version }}"}
- { name: "skaffold", version: "{{ skaffold_version }}"}
- { name: "sops", version: "{{ sops_version }}"}
- { name: "swag", version: "{{ swag_version }}"}
- { name: "terraform", version: "{{ terraform_version }}"}
- { name: "terragrunt", version: "{{ terragrunt_version }}"}
- { name: "tflint", version: "{{ tflint_version }}"}
- { name: "yq", version: "{{ yq_version }}"}
# - { name: "mage", version: "{{ mage_version }}"}
# - { name: "make", version: "{{ make_version }}"}
# - { name: "maven", version: "{{ maven_version }}"}
# - { name: "minikube", version: "{{ minikube_version }}"}
# - { name: "nancy", version: "{{ nancy_version }}"}
# - { name: "nodejs", version: "{{ nodejs_version }}"}
# - { name: "protoc", version: "{{ protoc_version }}"}
# - { name: "protoc-gen-go", version: "{{ protoc_gen_version }}"}
# - { name: "protoc-gen-go-grpc", version: "{{ protoc_gen_grpc_version }}"}
# - { name: "semver", version: "{{ semver_version }}"}
# - { name: "skaffold", version: "{{ skaffold_version }}"}
# - { name: "sops", version: "{{ sops_version }}"}
# - { name: "swag", version: "{{ swag_version }}"}
# - { name: "terraform", version: "{{ terraform_version }}"}
# - { name: "terragrunt", version: "{{ terragrunt_version }}"}
# - { name: "tflint", version: "{{ tflint_version }}"}
# - { name: "yq", version: "{{ yq_version }}"}
4 changes: 2 additions & 2 deletions roles/local/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
- name: add ~/bin to path
blockinfile:
path: "~/.bashrc"
marker: "# {mark} ANSIBLE MANAGED BLOCK FOR ~/bin"
marker: "# {mark} ANSIBLE MANAGED BLOCK FOR $HOME/bin"
block: |
# usermode programs will be installed here:
export PATH=~/bin:$PATH
export "PATH=$HOME/bin:$PATH"
tags:
- local

Expand Down
76 changes: 38 additions & 38 deletions versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,57 +3,57 @@
# https://dl.pstmn.io/download/version/5.0.0/linux64

#Ansible
ansible_minimum_version: 2.6.0
ansible_minimum_version: 2.10.17

#Apache Studio
studio_version: 2.0.0
studio_build: 20210717-M17

#asdf managed tool versions
act_version: latest
ant_version: latest
# act_version: latest
# ant_version: latest
asdf_version: v0.10.2
awscli_version: latest
aws_vault_version: latest
bazel_version: latest
# bazel_version: latest
chezmoi_version: latest
direnv_version: latest
github_cli_version: latest
golang_version: latest
golangci_lint_version: latest
gomigrate_version: latest
gradle_version: latest
grpcurl_version: latest
helm_version: latest
java_version: openjdk-17.0.2
jq_version: latest
k6_version: latest
k9s_version: latest
kind_version: latest
ko_version: 0.12.0
krew_version: latest
kubectl_version: latest
kubeseal_version: 0.18.2
kustomize_version: latest
linkerd_version: 2.12.0
mage_version: latest
make_version: latest
maven_version: latest
minikube_version: latest
nancy_version: latest
nodejs_version: latest
# golang_version: latest
# golangci_lint_version: latest
# gomigrate_version: latest
# gradle_version: latest
# grpcurl_version: latest
# helm_version: latest
# java_version: openjdk-17.0.2
# jq_version: latest
# k6_version: latest
# k9s_version: latest
# kind_version: latest
# ko_version: 0.12.0
# krew_version: latest
# kubectl_version: latest
# kubeseal_version: 0.18.2
# kustomize_version: latest
# linkerd_version: 2.12.0
# mage_version: latest
# make_version: latest
# maven_version: latest
# minikube_version: latest
# nancy_version: latest
# nodejs_version: latest
op_cli_version: latest
protoc_version: latest
protoc_gen_version: latest
protoc_gen_grpc_version: latest
semver_version: latest
skaffold_version: latest
sops_version: latest
swag_version: 1.16.2
terraform_version: latest
terragrunt_version: latest
tflint_version: latest
yq_version: latest
# protoc_version: latest
# protoc_gen_version: latest
# protoc_gen_grpc_version: latest
# semver_version: latest
# skaffold_version: latest
# sops_version: latest
# swag_version: 1.16.2
# terraform_version: latest
# terragrunt_version: latest
# tflint_version: latest
# yq_version: latest

#go manaaged tool versions
delve_version: latest
Expand Down
Loading

0 comments on commit 1940782

Please sign in to comment.