Updates to fix testing

- Don't use tmp, instead put in an /opt/devtools which is optionally
  removed
- Idempotency fixes
- version bumps

Change-Id: Ica3d2371809692bc09780027f0bee49025ac1bee
diff --git a/tasks/Debian.yml b/tasks/Debian.yml
index b61b40e..0e22f53 100644
--- a/tasks/Debian.yml
+++ b/tasks/Debian.yml
@@ -8,7 +8,9 @@
   apt:
     name:
       - acl
+      - autoconf
       - apt-transport-https
+      - bison
       - build-essential
       - ca-certificates
       - curl
@@ -17,6 +19,7 @@
       - git-crypt
       - gnupg
       - jq
+      - libbison-dev
       - libenchant-2-dev
       - libxml2-utils
       - python-is-python3
diff --git a/tasks/k8s.yml b/tasks/k8s.yml
index d9e1cc5..36d1129 100644
--- a/tasks/k8s.yml
+++ b/tasks/k8s.yml
@@ -4,6 +4,13 @@
 # SPDX-FileCopyrightText: 2022 Open Networking Foundation <support@opennetworking.org>
 # SPDX-License-Identifier: Apache-2.0
 
+- name: create k8s sub dir in dist dir
+  file:
+    dest: "{{ devtools_dist_dir }}/k8s"
+    state: directory
+    owner: root
+    group: root
+    mode: 0755
 
 # kubectl
 - name: Download/install kubectl binary
@@ -26,17 +33,17 @@
   get_url:
     url: "{{ devtools_helm_url }}"
     checksum: "{{ devtools_helm_checksum }}"
-    dest: "/tmp/helm.tgz"
+    dest: "{{ devtools_dist_dir }}/helm.tgz"
 
 - name: Unarchive helm
   unarchive:
-    src: "/tmp/helm.tgz"
-    dest: "/tmp"
+    src: "{{ devtools_dist_dir }}/helm.tgz"
+    dest: "{{ devtools_dist_dir }}/k8s"
     remote_src: true
 
 - name: Install helm binary
   copy:
-    src: /tmp/linux-amd64/helm
+    src: "{{ devtools_dist_dir }}/k8s/linux-amd64/helm"
     dest: /usr/local/bin/helm
     mode: "0755"
     remote_src: true
@@ -46,17 +53,18 @@
   get_url:
     url: "{{ devtools_kubeval_url }}"
     checksum: "{{ devtools_kubeval_checksum }}"
-    dest: "/tmp/kubeval.tgz"
+    dest: "{{ devtools_dist_dir }}/kubeval.tgz"
 
 - name: Unarchive kubeval
   unarchive:
-    src: "/tmp/kubeval.tgz"
-    dest: "/tmp"
+    src: "{{ devtools_dist_dir }}/kubeval.tgz"
+    dest: "{{ devtools_dist_dir }}/k8s"
     remote_src: true
+    creates: "{{ devtools_dist_dir }}/k8s/kubeval"
 
 - name: Install kubeval binary
   copy:
-    src: /tmp/kubeval
+    src: "{{ devtools_dist_dir }}/k8s/kubeval"
     dest: /usr/local/bin/kubeval
     mode: "0755"
     remote_src: true
@@ -66,17 +74,18 @@
   get_url:
     url: "{{ devtools_conftest_url }}"
     checksum: "{{ devtools_conftest_checksum }}"
-    dest: "/tmp/conftest.tgz"
+    dest: "{{ devtools_dist_dir }}/conftest.tgz"
 
 - name: Unarchive conftest
   unarchive:
-    src: "/tmp/conftest.tgz"
-    dest: "/tmp"
+    src: "{{ devtools_dist_dir }}/conftest.tgz"
+    dest: "{{ devtools_dist_dir }}/k8s"
     remote_src: true
+    creates: "{{ devtools_dist_dir }}/k8s/conftest"
 
 - name: Install conftest binary
   copy:
-    src: /tmp/conftest
+    src: "{{ devtools_dist_dir }}/k8s/conftest"
     dest: /usr/local/bin/conftest
     mode: "0755"
     remote_src: true
@@ -88,14 +97,3 @@
     checksum: "{{ devtools_fleet_checksum }}"
     dest: /usr/local/bin/fleet
     mode: "0755"
-
-# cleanup
-- name: Cleanup k8s downloads in /tmp
-  file:
-    path: "/tmp/{{ item }}"
-    state: absent
-  with_items:
-    - linux-amd64
-    - helm.tgz
-    - kubeval.tgz
-    - conftest.tgz
diff --git a/tasks/main.yml b/tasks/main.yml
index f4fe901..46a2d7a 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -10,35 +10,43 @@
 - name: include OS-specific tasks
   include_tasks: "{{ ansible_os_family }}.yml"
 
+# create devtools dist dir
+- name: create devtools dist dir
+  file:
+    path: "{{ devtools_dist_dir }}"
+    state: directory
+    owner: root
+    group: root
+    mode: 0755
+
 # repo
 - name: Download repo launcher
   get_url:
     url: "{{ devtools_repo_url }}"
     checksum: "{{ devtools_repo_checksum }}"
-    dest: /tmp/repo.b64
+    dest: "{{ devtools_dist_dir }}/repo.b64"
 
 - name: Decode, fix shebang, and make repo launcher executable
   shell:
     cmd: |
-      base64 --decode /tmp/repo.b64 > /tmp/repo
+      base64 --decode "{{ devtools_dist_dir }}/repo.b64" > \
+                      "{{ devtools_dist_dir }}/repo"
       # force repo launcher to use python3 - not needed if python-is-python3 installed
-      sed -i.bak 's"#!/usr/bin/env python"#!/usr/bin/env python3"' /tmp/repo
-      cp /tmp/repo /usr/local/bin/repo
+      sed -i.bak 's"#!/usr/bin/env python"#!/usr/bin/env python3"' \
+                 "{{ devtools_dist_dir }}/repo"
+      cp "{{ devtools_dist_dir }}/repo" /usr/local/bin/repo
       chmod 755 /usr/local/bin/repo
     creates: /usr/local/bin/repo
 
-# cleanup
-- name: Clean up downloads in /tmp
-  file:
-    path: "/tmp/{{ item }}"
-    state: absent
-  with_items:
-    - repo.b64
-    - repo.bak
-    - repo
-
 - name: Install additional devtools
   include_tasks: "{{ dt_inst_item }}.yml"
   loop: "{{ devtools_install | flatten(levels=1) }}"
   loop_control:
     loop_var: dt_inst_item
+
+# cleanup
+- name: Delete devtools dist dir
+  when: devtools_delete_dist
+  file:
+    path: "{{ devtools_dist_dir }}"
+    state: absent
diff --git a/tasks/shellcheck.yml b/tasks/shellcheck.yml
index deeb6d0..d163a5e 100644
--- a/tasks/shellcheck.yml
+++ b/tasks/shellcheck.yml
@@ -8,26 +8,19 @@
   get_url:
     url: "{{ devtools_shellcheck_url }}"
     checksum: "{{ devtools_shellcheck_checksum }}"
-    dest: "/tmp/shellcheck.tar.xz"
+    dest: "{{ devtools_dist_dir }}/shellcheck.tar.xz"
 
 - name: Unarchive shellcheck
   unarchive:
-    src: "/tmp/shellcheck.tar.xz"
-    dest: "/tmp"
+    src: "{{ devtools_dist_dir }}/shellcheck.tar.xz"
+    dest: "{{ devtools_dist_dir }}"
     remote_src: true
 
 - name: Install shellcheck binary
   copy:
-    src: "/tmp/shellcheck-v{{ devtools_shellcheck_version }}/shellcheck"
+    src: >-
+      {{ devtools_dist_dir }}/shellcheck-v{{
+      devtools_shellcheck_version }}/shellcheck
     dest: /usr/local/bin/shellcheck
     mode: "0755"
     remote_src: true
-
-# cleanup
-- name: Cleanup shellcheck downloads in /tmp
-  file:
-    path: "/tmp/{{ item }}"
-    state: absent
-  with_items:
-    - shellcheck.tar.xz
-    - "shellcheck-v{{ devtools_shellcheck_version }}"
diff --git a/tasks/terraform.yml b/tasks/terraform.yml
index 11bb240..6fbf34a 100644
--- a/tasks/terraform.yml
+++ b/tasks/terraform.yml
@@ -9,17 +9,17 @@
   get_url:
     url: "{{ devtools_terraform_url }}"
     checksum: "{{ devtools_terraform_checksum }}"
-    dest: "/tmp/terraform.zip"
+    dest: "{{ devtools_dist_dir }}/terraform.zip"
 
 - name: Unarchive terraform
   unarchive:
-    src: "/tmp/terraform.zip"
-    dest: "/tmp"
+    src: "{{ devtools_dist_dir }}/terraform.zip"
+    dest: "{{ devtools_dist_dir }}"
     remote_src: true
 
 - name: Install terraform binary
   copy:
-    src: /tmp/terraform
+    src: "{{ devtools_dist_dir }}/terraform"
     dest: /usr/local/bin/terraform
     mode: "0755"
     remote_src: true
@@ -31,11 +31,3 @@
     checksum: "{{ devtools_tfmask_checksum }}"
     dest: /usr/local/bin/tfmask
     mode: "0755"
-
-# cleanup
-- name: Cleanup terraform downloads in /tmp
-  file:
-    path: "/tmp/{{ item }}"
-    state: absent
-  with_items:
-    - terraform.zip