[TryMOS] Update image build fileset

 * add ansible playbooks for image build/install
 * move inventory files to Ansible folder

Related-Prod: PRODX-53424
Change-Id: I01d32082190ab20ac5bc3f64a2a268e063e33c68
diff --git a/trymos/image_build/ansible/ansible.cfg b/trymos/image_build/ansible/ansible.cfg
new file mode 100644
index 0000000..1c7972d
--- /dev/null
+++ b/trymos/image_build/ansible/ansible.cfg
@@ -0,0 +1,2 @@
+[defaults]
+roles_path=/srv/ansible/roles:/srv/virtual_lab/ansible/roles:/root/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/srv/ansible
\ No newline at end of file
diff --git a/trymos/image_build/ansible/build-image.yaml b/trymos/image_build/ansible/build-image.yaml
new file mode 100644
index 0000000..efb5e28
--- /dev/null
+++ b/trymos/image_build/ansible/build-image.yaml
@@ -0,0 +1,27 @@
+---
+- name: Deploy initial controllers
+  hosts: k8s_controllers[0]
+  become: true
+  become_user: root
+  tasks:
+  - name: Initialize clients
+    include_role:
+      name: rvl
+      tasks_from: clients
+  - name: Setup SSL certs
+    include_role:
+      name: rvl
+      tasks_from: certs
+  - name: Update hosts file for local registry
+    ansible.builtin.lineinfile:
+      path: /etc/hosts
+      regexp: '^127\.0\.0\.1'
+      line: 127.0.0.1 localhost registry.it.just.works
+  - name: Setup Docker registry
+    include_role:
+      name: rvl
+      tasks_from: registry
+  - name: Mirror images/binaries/charts
+    include_role:
+      name: rvl
+      tasks_from: mirror
diff --git a/trymos/image_build/ansible/inventory/master/single_node.yaml b/trymos/image_build/ansible/inventory/master/single_node.yaml
new file mode 100644
index 0000000..ba809ed
--- /dev/null
+++ b/trymos/image_build/ansible/inventory/master/single_node.yaml
@@ -0,0 +1,39 @@
+---
+all:
+  vars:
+    ansible_ssh_user: ubuntu
+    k0s_worker_on_controller: true
+    k0s_no_taints: true
+    k0s_version: 1.31.8+k0s.0
+    ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
+    kubeconfig: "{{ inventory_dir }}/artifacts/k0s-kubeconfig.yml"
+    rvl_images_build_rockoon: false
+    rvl_images_build_loci: false
+    rvl_registry_source: systemd
+    rvl_mirror_images: true
+    rvl_mirror_charts: true
+    rvl_mirror_binaries: true
+    rvl_images_build_tag: 1.1.6-dev9
+    rvl_images_base_url: "{{ rvl_registry_host }}"
+    rvl_binary_base_url: "{{ rvl_registry_https_url }}"
+    rvl_chart_ref_rockoon: "{{ rvl_registry_https_url }}/openstack/helm/rockoon/rockoon-1.1.6-dev9.tgz"
+    rvl_mirror_rockoon_chart: "{{ rvl_binary_public_base_url }}/openstack/helm/rockoon/rockoon-1.1.6-dev9.tgz"
+    rvl_openvpn_enable: true
+
+  hosts:
+    oc-virtual-lab-server-ctl-01:
+      ansible_host: localhost
+      ansible_connection: local
+
+  children:
+    computes:
+      hosts:
+        oc-virtual-lab-server-ctl-01:
+    controllers:
+      hosts:
+        oc-virtual-lab-server-ctl-01:
+    k8s_controllers:
+      hosts:
+        oc-virtual-lab-server-ctl-01:
+    k8s_workers:
+      hosts:
diff --git a/trymos/image_build/ansible/inventory/mosk-25.1/single_node.yaml b/trymos/image_build/ansible/inventory/mosk-25.1/single_node.yaml
new file mode 100644
index 0000000..008adab
--- /dev/null
+++ b/trymos/image_build/ansible/inventory/mosk-25.1/single_node.yaml
@@ -0,0 +1,41 @@
+---
+all:
+  vars:
+    ansible_ssh_user: ubuntu
+    k0s_worker_on_controller: true
+    k0s_no_taints: true
+    k0s_version: 1.27.16+k0s.0
+    ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
+    kubeconfig: "{{ inventory_dir }}/artifacts/k0s-kubeconfig.yml"
+    rvl_images_build_rockoon: false
+    rvl_images_build_loci: false
+    rvl_registry_source: systemd
+    rvl_mirror_images: true
+    rvl_mirror_charts: true
+    rvl_mirror_binaries: true
+    rvl_images_build_tag: 1.0.7
+    rvl_binary_public_base_url: https://binary.mirantis.com
+    rvl_images_public_base_url: mirantis.azurecr.io
+    rvl_images_base_url: "{{ rvl_registry_host }}"
+    rvl_binary_base_url: "{{ rvl_registry_https_url }}"
+    rvl_chart_ref_rockoon: "{{ rvl_registry_https_url }}/openstack/helm/rockoon/rockoon-1.0.7.tgz"
+    rvl_mirror_rockoon_chart: "{{ rvl_binary_public_base_url }}/openstack/helm/rockoon/rockoon-1.0.7.tgz"
+    rvl_openvpn_enable: true
+
+  hosts:
+    oc-virtual-lab-server-ctl-01:
+      ansible_host: localhost
+      ansible_connection: local
+
+  children:
+    computes:
+      hosts:
+        oc-virtual-lab-server-ctl-01:
+    controllers:
+      hosts:
+        oc-virtual-lab-server-ctl-01:
+    k8s_controllers:
+      hosts:
+        oc-virtual-lab-server-ctl-01:
+    k8s_workers:
+      hosts:
diff --git a/trymos/image_build/env/master/packer.env b/trymos/image_build/env/master/packer.env
index b63300e..45dfc86 100644
--- a/trymos/image_build/env/master/packer.env
+++ b/trymos/image_build/env/master/packer.env
@@ -1,3 +1,3 @@
 export IMAGE_BASE_URL=${IMAGE_BASE_URL:-"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"}
 export IMAGE_MD5_URL=${IMAGE_MD5_URL:-"https://cloud-images.ubuntu.com/jammy/current/MD5SUMS"}
-export INVENTORY_FILE=${INVENTORY_FILE:-"./env/master/single_node_inventory.yaml"}
+export INVENTORY_FILE=${INVENTORY_FILE:-"./ansible/inventory/master/single_node.yaml"}
diff --git a/trymos/image_build/env/master/single_node_inventory.yaml b/trymos/image_build/env/master/single_node_inventory.yaml
deleted file mode 100644
index 7d50aea..0000000
--- a/trymos/image_build/env/master/single_node_inventory.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-all:
-  vars:
-    ansible_ssh_user: ubuntu
-    k0s_worker_on_controller: true
-    k0s_no_taints: true
-    k0s_version: 1.31.8+k0s.0
-    ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
-    rvl_images_build_rockoon: false
-    rvl_images_build_loci: false
-    rvl_images_build_tag: 1.1.4-dev72
-    rvl_images_rockoon: docker-dev-kaas-virtual.docker.mirantis.net/openstack/rockoon
-    rvl_chart_ref_rockoon: https://artifactory.mcp.mirantis.net/artifactory/binary-dev-kaas-local/openstack/helm/rockoon/rockoon-1.1.4-dev72.tgz
-    rvl_dns_nameservers:
-    - 172.18.176.6
-
-  hosts:
-    oc-virtual-lab-server-ctl-01:
-      ansible_host: localhost
-      ansible_connection: local
-
-  children:
-    computes:
-      hosts:
-        oc-virtual-lab-server-ctl-01:
-    controllers:
-      hosts:
-        oc-virtual-lab-server-ctl-01:
-    k8s_controllers:
-      hosts:
-        oc-virtual-lab-server-ctl-01:
-    k8s_workers:
-      hosts:
diff --git a/trymos/image_build/env/mosk-25.1/packer.env b/trymos/image_build/env/mosk-25.1/packer.env
index 96348ec..cb1a09e 100644
--- a/trymos/image_build/env/mosk-25.1/packer.env
+++ b/trymos/image_build/env/mosk-25.1/packer.env
@@ -1,3 +1,3 @@
 export IMAGE_BASE_URL=${IMAGE_BASE_URL:-"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"}
 export IMAGE_MD5_URL=${IMAGE_MD5_URL:-"https://cloud-images.ubuntu.com/jammy/current/MD5SUMS"}
-export INVENTORY_FILE=${INVENTORY_FILE:-"./env/mosk-25.1/single_node_inventory.yaml"}
+export INVENTORY_FILE=${INVENTORY_FILE:-"./ansible/inventory/mosk-25.1/single_node.yaml"}
diff --git a/trymos/image_build/env/mosk-25.1/single_node_inventory.yaml b/trymos/image_build/env/mosk-25.1/single_node_inventory.yaml
deleted file mode 100644
index 7401e3b..0000000
--- a/trymos/image_build/env/mosk-25.1/single_node_inventory.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-all:
-  vars:
-    ansible_ssh_user: ubuntu
-    k0s_worker_on_controller: true
-    k0s_no_taints: true
-    k0s_version: 1.27.16+k0s.0
-    ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
-    rvl_images_build_rockoon: false
-    rvl_images_build_loci: false
-    rvl_images_build_tag: 1.0.7
-    rvl_images_rockoon: mirantis.azurecr.io/openstack/rockoon
-    rvl_chart_ref_rockoon: https://binary.mirantis.com/openstack/helm/rockoon/rockoon-1.0.7.tgz
-    rvl_images_public_base_url: mirantis.azurecr.io
-    rvl_binary_public_base_url: https://binary.mirantis.com
-
-  hosts:
-    oc-virtual-lab-server-ctl-01:
-      ansible_host: localhost
-      ansible_connection: local
-
-  children:
-    computes:
-      hosts:
-        oc-virtual-lab-server-ctl-01:
-    controllers:
-      hosts:
-        oc-virtual-lab-server-ctl-01:
-    k8s_controllers:
-      hosts:
-        oc-virtual-lab-server-ctl-01:
-    k8s_workers:
-      hosts:
diff --git a/trymos/image_build/scripts/build-image.sh b/trymos/image_build/scripts/build-image.sh
new file mode 100755
index 0000000..c7140ad
--- /dev/null
+++ b/trymos/image_build/scripts/build-image.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+set -ex
+
+LOG_FILE=${LOG_FILE:-"/var/log/build-image.log"}
+
+apt update -y
+DEBIAN_FRONTEND=noninteractive apt install -y moreutils
+
+exec > >(ts '[%Y-%m-%d %H:%M:%S]' | tee -a "${LOG_FILE}" )
+exec 2> >(ts '[%Y-%m-%d %H:%M:%S]' | tee -a "${LOG_FILE}" >&2)
+
+DEBIAN_FRONTEND=noninteractive apt install -y python3-pip
+
+PIP_BREAK_SYSTEM_PACKAGES=1 pip3 install ansible jmespath
+
+ansible-galaxy collection install bodsch.core
+ansible-galaxy collection install bodsch.scm
+ansible-galaxy collection install community.docker
+ansible-galaxy role install bodsch.k0s
+ansible-galaxy role install cloudalchemy.coredns
+
+TOP_DIR="$(cd "$(dirname "$0")" && pwd)"
+INVENTORY_FILE=${INVENTORY_FILE:-"${TOP_DIR}/../single_node.yaml"}
+PRE_INSTALL_INVENTORY=/tmp/pre_install.yaml
+HOSTNAME=$(hostname)
+
+cp ${INVENTORY_FILE} ${PRE_INSTALL_INVENTORY}
+sed -i "s/oc-virtual-lab-server-ctl-01/${HOSTNAME}/g" "${PRE_INSTALL_INVENTORY}"
+
+cd ${TOP_DIR}/ansible
+
+ansible-playbook -i "${PRE_INSTALL_INVENTORY}" build-image.yaml -vvv
diff --git a/trymos/image_build/scripts/install-trymos.sh b/trymos/image_build/scripts/install-trymos.sh
new file mode 100755
index 0000000..6883b75
--- /dev/null
+++ b/trymos/image_build/scripts/install-trymos.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+set -ex
+
+LOG_FILE=${LOG_FILE:-"/var/log/trymos-install.log"}
+
+exec > >(ts '[%Y-%m-%d %H:%M:%S]' | tee -a "${LOG_FILE}" )
+exec 2> >(ts '[%Y-%m-%d %H:%M:%S]' | tee -a "${LOG_FILE}" >&2)
+
+HOSTNAME=$(hostname)
+TOP_DIR="$(cd "$(dirname "$0")" && pwd)"
+INVENTORY_FILE=${INVENTORY_FILE:-"${TOP_DIR}/../single_node.yaml"}
+
+sed -i "s/oc-virtual-lab-server-ctl-01/${HOSTNAME}/g" "${INVENTORY_FILE}"
+
+cd ${TOP_DIR}/../virtual_lab/ansible
+apt update -y
+
+ansible-playbook -i "${INVENTORY_FILE}" k0s-install.yaml -vvv
+
+mkdir -p /root/.kube; cp "$(dirname "${INVENTORY_FILE}")/artifacts/k0s-kubeconfig.yml" /root/.kube/config
+
+ansible-playbook -i "${INVENTORY_FILE}" infra-install.yaml -vvv
+ansible-playbook -i "${INVENTORY_FILE}" oc-install.yaml -vvv
+ansible-playbook -i "${INVENTORY_FILE}" oc-install.yaml -vvv --tags wait
+ansible-playbook -i "${INVENTORY_FILE}" deployment-info.yaml
diff --git a/trymos/image_build/scripts/launch.sh b/trymos/image_build/scripts/launch.sh
index 5c84200..368d963 100755
--- a/trymos/image_build/scripts/launch.sh
+++ b/trymos/image_build/scripts/launch.sh
@@ -4,4 +4,4 @@
 
 export INVENTORY_FILE=/srv/single_node.yaml
 
-/srv/virtual_lab/install.sh
+/srv/trymos/install-trymos.sh
diff --git a/trymos/image_build/template.json b/trymos/image_build/template.json
index be7d8b9..cc8e575 100644
--- a/trymos/image_build/template.json
+++ b/trymos/image_build/template.json
@@ -2,7 +2,7 @@
   "variables": {
     "user": "root",
     "password": "r00tme",
-    "disk_size": "2500M",
+    "disk_size": "16000M",
     "images_cache": "{{ env `PACKER_IMAGES_CACHE` }}",
     "image_base_url": "{{ env `IMAGE_BASE_URL` }}",
     "image_md5_url": "{{ env `IMAGE_MD5_URL` }}",
@@ -13,7 +13,7 @@
     {
       "type": "shell",
       "inline": [
-         "mkdir -p /usr/share/trymos /srv"
+         "mkdir -p /usr/share/trymos /srv/trymos"
       ]
     },
     {
@@ -23,18 +23,34 @@
     },
     {
       "type": "file",
-      "source": "../rockoon/charts",
-      "destination": "/srv/"
-    },
-    {
-      "type": "file",
-      "source": "../rockoon/virtual_lab",
+      "sources": [
+         "../rockoon/charts",
+         "../rockoon/virtual_lab"
+      ],
       "destination": "/srv/"
     },
     {
       "type": "file",
       "source": "./scripts/launch.sh",
       "destination": "/usr/share/trymos/"
+    },
+    {
+      "type": "file",
+      "sources": [
+         "./ansible",
+         "./scripts/build-image.sh",
+         "./scripts/install-trymos.sh"
+      ],
+      "destination": "/srv/trymos/"
+    },
+    {
+      "type": "shell",
+      "environment_vars": [
+          "INVENTORY_FILE=/srv/single_node.yaml"
+      ],
+      "inline": [
+         "/srv/trymos/build-image.sh"
+      ]
     }
   ],
   "builders": [