diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 458847e43bbfb3533548bf271dfdff4053e08676..1e2bd8967f84aeb7596b639a98671a2107117a53 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,10 +10,12 @@ stages:
   - extended
   #- heat_test
   - heat
-  - ansible_create_cluster_stage
-  - push_button_spawn_cluster
+  - openstack_create
+  - ansible_build
   - tests
   - integration_test #https://docs.gitlab.com/ee/ci/triggers/
+  - openstack_destroy
+
   #- clean
   #- testlustre
   #- clean_testlustre
@@ -50,20 +52,6 @@ yamllint:
     - cd CICD
     - yamllint -c ./.yamllintheat.yaml ./heat
 
-# delete_stack_manual:
-#   stage: delete_stack_manual
-#   tags:
-#   - heat
-#   before_script:
-#     - echo "$GC_KEY" > gc_key.pem
-#     - chmod 400 gc_key.pem
-#     - echo "$HPCCICD_openrc" > ./$NECTAR_ALLOCATION-openrc.sh
-#   script:
-#     - echo "heat stage"
-#     - source ./$NECTAR_ALLOCATION-openrc.sh
-#     - openstack stack list
-#     - bash -x ./CICD/heat/heatcicdwrapper.sh delete_if_exists $STACKNAME
-#   when: manual
 
 ansiblelint:
   allow_failure: true
@@ -78,46 +66,8 @@ ansiblelint:
     - python3 ansiblelint/run_lint.py --targets ../maintenance.yml
 
 
-# testlustre:
-#  stage: testlustre
-#  allow_failure: true
-#  tags:
-#  - heat
-#  before_script:
-#    - cd $DEFAULT_PATH
-#    - echo "$GC_KEY" > gc_key.pem
-#    - chmod 400 gc_key.pem
-#    - echo "$HPCCICD_openrc" > ./$NECTAR_ALLOCATION-openrc.sh
-#    - sleep 60
-#  script:
-#    - echo "heat stage"
-#    - source ./$NECTAR_ALLOCATION-openrc.sh
-#    - openstack stack list
-#    - openstack stack create --wait --template heat/lustre_HOT.yaml --parameter "project_name=$STACKNAME" $STACKNAME
-#    - python3 ../scripts/make_inventory.py static $STACKNAME | tee ./files/inventory.$STACKNAME && chmod 755 ./files/inventory.$STACKNAME
-#    - cd plays/testlustre
-#    - sleep 100
-#    - ansible-playbook -i files/inventory.$STACKNAME --key-file ../../gc_key.pem testlustre.yml
-#    - sleep 60
-#    - cd ../../
-#    - bash -x ./heat/heatcicdwrapper.sh delete_if_exists $STACKNAME
-#  after_script:
-#    - sleep 60 # the cluster needs to delete first
-
-#clean_testlustre:
-#  stage: clean_testlustre
-#  tags:
-#  - heat
-#  before_script:
-#    - echo "cleanup stack"
-#    - sleep 30
-#    - echo "$HPCCICD_openrc" > ./$NECTAR_ALLOCATION-openrc.sh
-#  script:
-#    - source ./$NECTAR_ALLOCATION-openrc.sh
-#    - bash -x ./CICD/heat/heatcicdwrapper.sh delete_if_exists $STACKNAME
-
 build_cluster_cicd:
-  stage: heat
+  stage: openstack_create
   allow_failure: false
   tags:
   - heat
@@ -127,10 +77,17 @@ build_cluster_cicd:
     - chmod 400 gc_key.pem
     - echo "$HPCCICD_openrc" > ./$NECTAR_ALLOCATION-openrc.sh
   script:
-    - echo "heat stage"
+    - echo "create stage"
     - source ./$NECTAR_ALLOCATION-openrc.sh
-    - openstack stack list
-    - bash -x ./heat/heatcicdwrapper.sh create_or_update $STACKNAME
+    - cd infra
+    - template.py
+    - ansible-playbook os_create.yml
+    - python ./make_inventory.py $CI_PROJECT_NAME-ci-$CI_COMMIT_REF_NAME > ../inventory.yml
+    - cd ..
+      #- ssh-keygen -R `cat ssh.cfg  | grep Proxy | cut -f 2 -d "@"`
+      #- ssh `cat ssh.cfg  | grep Proxy | cut -f 2 -d "="` -o StrictHostKeyChecking=accept-new exit 0
+
+      #- bash -x ./heat/heatcicdwrapper.sh create_or_update $STACKNAME
     #- bash -x ./heat/server_rebuild.sh all
   after_script:
     - sleep 30 # artifically wait a bit to give the nodes time to boot
diff --git a/CICD/ansible.cfg b/CICD/ansible.cfg
index 98dfd39a6d72b3dfa28f27e2e564c2fb46af8b45..c3240e68762f566eb1ee810dc8ce5a3840ddf0f7 100644
--- a/CICD/ansible.cfg
+++ b/CICD/ansible.cfg
@@ -1,3 +1,11 @@
 [defaults]
-remote_tmp = /tmp/.ansible/tmp
+#remote_tmp = /tmp/.ansible/tmp
 host_key_checking = False
+pipelining=True
+log_path = ./ansible.log
+display_args_to_stdout = True
+roles_path = HPCasCode/roles
+files_path = ./files
+
+[ssh_connection]
+ssh_args = -F ./ssh.cfg
diff --git a/CICD/ansible_create_cluster_script.sh b/CICD/ansible_create_cluster_script.sh
deleted file mode 100755
index 0f1fa8504d8b80432d819d08674842dfc09d9e1d..0000000000000000000000000000000000000000
--- a/CICD/ansible_create_cluster_script.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash 
-set -e
-export ANSIBLE_HOST_KEY_CHECKING=False
-
-source ./$NECTAR_ALLOCATION-openrc.sh
-openstack stack list
-
-cd CICD
-
-python3 ../scripts/make_inventory.py static $STACKNAME | tee ./files/inventory.$STACKNAME && chmod 755 ./files/inventory.$STACKNAME
-grep -qv "I could not find any resouces tagged with project_name:" ./files/inventory.$STACKNAME   #fail if inventory file is empty
-ansible -m ping -i files/inventory.$STACKNAME --key-file ../gc_key.pem all
-ansible -i files/inventory.$STACKNAME --key-file ../gc_key.pem -a "sudo ls" all
-
-#cd roles 
-    #- "egrep -lRZ 'sudo: true' . | xargs -0 -l sed -i -e 's/sudo: true/become: true/g' "
-#cd ..
diff --git a/CICD/files/etcExports b/CICD/files/etcExports
deleted file mode 100644
index 0867fd1b7bb1aff1d6be948f7c4fd40ee07f199a..0000000000000000000000000000000000000000
--- a/CICD/files/etcExports
+++ /dev/null
@@ -1,4 +0,0 @@
-/nfsvol/home *(fsid=1,rw,no_root_squash)
-/slurmstate *(fsid=2,rw,no_root_squash)
-/nfsvol/projects *(fsid=4,rw,no_root_squash)
-/nfsvol/scratch *(fsid=5,rw,no_root_squash)
diff --git a/CICD/files/gres.conf b/CICD/files/gres.conf
deleted file mode 100644
index dc8448acc87fe6af03f6b9e4b679dc2716fa148b..0000000000000000000000000000000000000000
--- a/CICD/files/gres.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-#consolidated GRES configuration file
-
-# example entry:
-#NodeName=m3f0[00-31] Name=gpu Type=K1 File=/dev/nvidia0 CPUs=0-2
diff --git a/CICD/heat/gc_HOT.yaml b/CICD/heat/gc_HOT.yaml
deleted file mode 100644
index edca168bacf6e6123676f11aee6860955b6dfc09..0000000000000000000000000000000000000000
--- a/CICD/heat/gc_HOT.yaml
+++ /dev/null
@@ -1,324 +0,0 @@
----
-heat_template_version: 2013-05-23
-description: "A simple template to boot a cluster of desktops (LoginNode, ManagementNodes and Desktop Nodes)"
-# avz parameters disabled. they are working but I want just more options than monash-02. I would like to have a parameter that says "I don't care"
-#This requires gc_secgroups to be called beforehand
-parameters:
-  ubuntu_2004_image_id:
-    type: string
-    label: Image ID
-    description: Ubuntu Image
-    default: 8faa45cc-2c97-40db-a12d-648c303cd567
-  centos_7_image_id:
-    type: string
-    label: Image ID
-    description: Centos Image
-    default: c47c3acb-9657-4243-9e14-e6c676157e3b #with NetworkManager
-  rhel_77_image_id:
-    type: string
-    label: Image ID
-    description: Rhel Image
-    default: 19993115-ad60-4979-bdfb-67ae7a77e40c
-  ssh_key:
-    type: string
-    default: gc_key
-  avz:
-    type: string
-    default: monash-02
-  project_name:
-    type: string
-  NetID:
-    type: string
-    default: Classic Provider
-  Flavour:
-    type: string
-    default: m3.xsmall
-  SlurmSecGroupID:
-    type: string
-    label: Resource ID
-    default: 6e7a09b0-981c-424f-a9b7-9fd4f4d8f416
-  NFSSecGroupID:
-    type: string
-    label: Resource ID
-    default: b07a75a3-830c-4778-96c6-8a3732ec7d6c
-  MySQLSecGroupID:
-    type: string
-    label: Resource ID
-    default: 4478f245-de5c-4177-bcbd-6fa661032cbe
-  SSHMonashSecGroupID:
-    type: string
-    label: Resource ID
-    default: c15081f4-c756-4c57-b8cf-388dd7fdbcd4
-  HTTPsSecGroupID:
-    type: string
-    label: Resource ID
-    default: 2d4510c3-ae73-44ea-9700-b6f0a00bf7aa
-  PublicSSHSecGroupID:
-    type: string
-    label: Resource ID
-    default: 8a029c04-08ce-40f1-a705-d45a2077e27d
-  LDAPSecGroupID:
-    type: string
-    label: Resource ID
-    default: 070a32e2-858b-462a-b2b5-b3a92eec2669
-  SYSLOGSecGroupID:
-    type: string
-    label: Resource ID
-    default: 1de45b93-e5f6-4838-94f7-fc307752d6cb
-
-resources:
-
-  SQLNode0:
-   type: "OS::Nova::Server"
-   properties:
-    name:
-     list_join: [ '-', [ { get_param: "OS::stack_name" }, 'sql0' ]]
-    availability_zone: { get_param: avz }
-    flavor: m3.xsmall
-    image: { get_param: ubuntu_2004_image_id }
-    key_name: { get_param: ssh_key }
-    security_groups: [ { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: MySQLSecGroupID }, { get_param: NFSSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-    metadata:
-     ansible_host_groups: [ SQLNodes, NFSNodes, LDAPServer, CentosNodes, LogNodes ]
-     ansible_ssh_user: ubuntu
-     project_name: { get_param: project_name }
-    networks:
-      - network: { get_param: NetID }
-
-  NFSVolume:
-   type: OS::Cinder::Volume
-   properties:
-    availability_zone: { get_param: avz }
-    size: 1
-    name: nfsvol
-  NFSVolumeAttachment:
-   type: "OS::Cinder::VolumeAttachment"
-   properties:
-    volume_id: { get_resource: NFSVolume }
-    instance_uuid: { get_resource: SQLNode0 }
-
-  SLURMSTATEVolume:
-   type: OS::Cinder::Volume
-   properties:
-    availability_zone: { get_param: avz }
-    size: 1
-    name: slurmstate
-  SLURMSTATEVolumeAttachment:
-   type: "OS::Cinder::VolumeAttachment"
-   properties:
-    volume_id: { get_resource: SLURMSTATEVolume }
-    instance_uuid: { get_resource: SQLNode0 }
-
-  DBVolume:
-   type: OS::Cinder::Volume
-   properties:
-    availability_zone: { get_param: avz }
-    size: 10
-    name: dbvol
-  DBVolumeAttachment:
-   type: "OS::Cinder::VolumeAttachment"
-   properties:
-    volume_id: { get_resource: DBVolume }
-    instance_uuid: { get_resource: SQLNode0 }
-
-  MgmtNodesCentos7:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 0
-    resource_def:
-      type: My::Server::MgmtNode
-      properties:
-        #avz: { get_param: avz }
-        image: { get_param: centos_7_image_id }
-        ansible_ssh_user: ec2-user
-        ansible_host_groups: [ ManagementNodes, CentosNodes ]
-        mynodename:
-         list_join: [ '-', [ { get_param: "OS::stack_name" }, 'mgmt%index%' ]]
-        ssh_key: { get_param: ssh_key }
-        security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: MySQLSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-        project_name: { get_param: project_name }
-
-  MgmtNodesU:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 2
-    resource_def:
-      type: My::Server::MgmtNode
-      properties:
-        #avz: { get_param: avz }
-        image: { get_param: ubuntu_2004_image_id }
-        ansible_ssh_user: ubuntu
-        ansible_host_groups: [ ManagementNodes, UbuntuNodes ]
-        mynodename:
-         list_join: [ '-', [ { get_param: "OS::stack_name" }, 'mgmtU%index%' ]]
-        ssh_key: { get_param: ssh_key }
-        security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: MySQLSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-        project_name: { get_param: project_name }
-
-  LoginNodesC:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 0
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: m3.xsmall
-      image: { get_param: centos_7_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'login%index%' ]]
-      security_groups: [ default, { get_param: PublicSSHSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ LoginNodes, CentosNodes ]
-       ansible_ssh_user: ec2-user
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
-
-  LoginNodesU:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 1
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: m3.xsmall
-      image: { get_param: ubuntu_2004_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'loginU%index%' ]]
-      security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ LoginNodes, UbuntuNodes ]
-       ansible_ssh_user: ubuntu
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
-
-  DesktopNodes:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 0
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: m3.xsmall
-      image: { get_param: centos_7_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'desktopc%index%' ]]
-      security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ DesktopNodes, VisNodes, ComputeNodes, CentosNodes ]
-       ansible_ssh_user: ec2-user
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
-
-  ComputeNodesU:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 1
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: m3.xsmall
-      image: { get_param: ubuntu_2004_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'computeU%index%' ]]
-      security_groups: [ default, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: SSHMonashSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ ComputeNodes, UbuntuNodes ]
-       ansible_ssh_user: ubuntu
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
-
-  ComputeNodesCentos7:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 0
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: m3.xsmall
-      image: { get_param: centos_7_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'computec7%index%' ]]
-      security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ ComputeNodes, CentosNodes ]
-       ansible_ssh_user: ec2-user
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
-
-  UbuntuDesktopNodes:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 0
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: mon.c10r35.gpu-k2
-      image: { get_param: ubuntu_2004_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'gpudesktopu%index%' ]]
-      security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ DesktopNodes, GPU, ComputeNodes, VisNodes, UbuntuNodes ]
-       ansible_ssh_user: ubuntu
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
-
-  CentosDesktopNodes:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 0
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: mon.c10r35.gpu-k2
-      image: { get_param: centos_7_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'gpudesktopc%index%' ]]
-      security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ DesktopNodes, GPU, ComputeNodes, K1, VisNodes, CentosNodes ]
-       ansible_ssh_user: ec2-user
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
-
-  ComputeNodeRHEL:
-   type: "OS::Heat::ResourceGroup"
-   properties:
-    count: 0
-    resource_def:
-     type: "OS::Nova::Server"
-     properties:
-      #availability_zone: { get_param: avz }
-      flavor: m3.xsmall
-      image: { get_param: rhel_77_image_id }
-      key_name: { get_param: ssh_key }
-      name:
-       list_join: [ '-', [ { get_param: "OS::stack_name" }, 'computerhel%index%' ]]
-      security_groups: [ default, { get_param: SSHMonashSecGroupID }, { get_param: SlurmSecGroupID }, { get_param: NFSSecGroupID }, { get_param: LDAPSecGroupID }, { get_param: SYSLOGSecGroupID } ]
-      metadata:
-       ansible_host_groups: [ DGXRHELNodes, RedhatNodes ]
-       ansible_ssh_user: cloud-user
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
diff --git a/CICD/heat/gc_secgroups.hot b/CICD/heat/gc_secgroups.hot
deleted file mode 100644
index 499f05a7ed099447a1ae72e8f5e5d448e54531ac..0000000000000000000000000000000000000000
--- a/CICD/heat/gc_secgroups.hot
+++ /dev/null
@@ -1,205 +0,0 @@
----
-heat_template_version: 2013-05-23
-description: # call with openstack stack [update || create ] --wait --template gc_secgroups.hot SecurityGroupStack
-
-resources:
-
-  SlurmSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "heatslurmsecgroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 12000,
-               port_range_max: 12999,
-               remote_mode: "remote_group_id"},
-              { protocol: tcp,
-               port_range_min: 6817,
-               port_range_max: 6819,
-               remote_mode: "remote_group_id"},
-              { protocol: tcp,
-               port_range_min: 1019,
-               port_range_max: 1019,
-               remote_mode: "remote_group_id"}]
-  NFSSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "heatnfssecgroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 2049,
-               port_range_max: 2049,
-               remote_mode: "remote_group_id"},
-              { protocol: tcp,
-               port_range_min: 111,
-               port_range_max: 111,
-               remote_mode: "remote_group_id"},
-              { protocol: udp,
-               port_range_min: 2049,
-               port_range_max: 2049,
-               remote_mode: "remote_group_id"},
-              { protocol: udp,
-               port_range_min: 111,
-               port_range_max: 111,
-               remote_mode: "remote_group_id"} ]
-  LDAPSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "heatldapsecgroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 389,
-               port_range_max: 389,
-               remote_mode: "remote_group_id"} ]
-  MySQLSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "heatmysqlsecgroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 3306,
-               port_range_max: 3306,
-               remote_mode: "remote_group_id"} ]
-  PublicSSHSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "SSHSecGroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22} ]
-  SSHMonashSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "SSHMonashSecGroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 59.191.208.0/20
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 114.30.64.0/21
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 118.138.0.0/16
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 118.139.0.0/17
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 130.194.0.0/16
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 203.0.141.0/24
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 203.6.141.0/24
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 203.23.136.0/24
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 59.191.192.0/20
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 202.158.212.32/27
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 130.194.13.96/27
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 49.127.0.0/16
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 202.58.246.0/24
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 202.94.69.0/24
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 103.35.228.0/22
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 43.246.232.0/22
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 103.35.228.0/22
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 59.191.208.0/20
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 49.127.0.0/16
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 59.191.220.0/22
-     },
-     { protocol: tcp,
-               port_range_min: 22,
-               port_range_max: 22,
-               direction: ingress,
-               remote_ip_prefix: 43.246.232.0/22
-     } ]
-  HTTPsSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "HTTPsSecGroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 80,
-               port_range_max: 80},
-              { protocol: tcp,
-               port_range_min: 443,
-               port_range_max: 443} ]
diff --git a/CICD/heat/heatcicdwrapper.sh b/CICD/heat/heatcicdwrapper.sh
deleted file mode 100644
index ff8aa04e3307ebccad82258f487cab01e03e3f7b..0000000000000000000000000000000000000000
--- a/CICD/heat/heatcicdwrapper.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/bash
-
-# This script does not check available ressources on nectar! 
-
-
-function usage {
-    echo $"Usage: $0 {create|update|show|create_or_update,delete_if_exists} STACKNAME"
-    exit 1
-}
-
-STACKNAME=$2
-
-if [[ "$STACKNAME" == "CICD"* ]]; then
-  echo "CICD found in stackname. doing nothing"
-else
-  STACKNAME="CICD"$STACKNAME
-fi
-
-
-
-echo "[heatcicdwrapper] Prefixing Stackname with CICD. This is a safety feature because this script can also delete stacks" $STACKNAME
-
-function check_stack_exists {
-    if openstack stack list | grep -w $STACKNAME;
-        then 
-            echo "stack found";
-        else 
-            echo "stack not found";
-            return 1
-    fi
-}
-
-
-function func_delete_if_exists {
-  if ! check_stack_exists
-  then
-    exit 0
-  fi
-  openstack stack delete -y --wait $STACKNAME
-  ret=$?
-  if [ $ret -ne "0" ]
-  then
-    sleep 15
-    openstack stack delete -y --wait $STACKNAME
-    ret=$?
-  fi
-  exit $ret
-}
-
-function create_stack {
-    
- if check_stack_exists
- then
-    echo "I will NOT create existing stack maybe use update"
-    exit -44
- fi
- openstack stack create --wait --template ./heat/gc_HOT.yaml --parameter "project_name=$STACKNAME" -e ./heat/resource_registry.yaml $STACKNAME
- createreturn=$?
- if [ $createreturn -ne "0" ]
- then
-    openstack stack delete -y --wait $STACKNAME
-    echo "creation failed. trying to delete"
-    exit -47
- fi
- exit $createreturn
-}
-
-
-case "$1" in
-        create)
-            create_stack
-            ;;
-         
-        update)
-            if ! check_stack_exists
-               then
-                   echo "I cannot update a stack which does not exist"
-                   exit -45
-            fi
-            openstack stack check --wait $STACKNAME
-            sleep 2
-            openstack stack update --wait --template ./heat/gc_HOT.yaml --parameter "project_name=$STACKNAME" -e ./heat/resource_registry.yaml $STACKNAME
-            ret=$?
-            exit $ret
-            ;;
-        create_or_update)
-            if  check_stack_exists
-               then
-               openstack stack check --wait $STACKNAME
-               sleep 2
-               openstack stack update --wait --template ./heat/gc_HOT.yaml --parameter "project_name=$STACKNAME" -e ./heat/resource_registry.yaml $STACKNAME
-               ret=$?
-               exit $ret
-            fi
-            create_stack
-                  
-            ;;
-        delete_if_exists)
-            func_delete_if_exists
-
-            ;;
-         
-
-        show)
-            check_stack_exists
-            echo $?
-            OUTPUT=$(openstack stack show $STACKNAME| grep -w stack_status)
-            echo $OUTPUT
-            ;;
-         
-        *)
-            usage
- 
-esac
diff --git a/CICD/heat/lustre_HOT.yaml b/CICD/heat/lustre_HOT.yaml
deleted file mode 100644
index 025111a989446d912263a4e6ec21e3a40736fba2..0000000000000000000000000000000000000000
--- a/CICD/heat/lustre_HOT.yaml
+++ /dev/null
@@ -1,124 +0,0 @@
----
-heat_template_version: 2013-05-23
-description: "A simple template to boot a cluster of desktops (LoginNode, ManagementNodes and Desktop Nodes)"
-# avz parameters disabled. they are working but I want just more options than monash-02. I would like to have a parameter that says "I don't care"
-
-parameters:
-  ubuntu_1804_image_id:
-    type: string
-    label: Image ID
-    description: Ubuntu Image
-    default: 99d9449a-084f-4901-8bd8-c04aebd589ca
-  centos_7_image_id:
-    type: string
-    label: Image ID
-    description: Centos Image
-    default: c47c3acb-9657-4243-9e14-e6c676157e3b #with NetworkManager
-  ssh_key:
-    type: string
-    default: gc_key
-  avz:
-    type: string
-    default: monash-02
-  project_name:
-    type: string
-  NetID:
-    type: string
-    default: Classic Provider
-  Flavour:
-    type: string
-    default: m3.xsmall
-  ManualSSHSecGroup:
-    type: string
-    default: 5ec1cecd-efd1-4d0f-8c4a-afe7ababb092
-
-
-resources:
-
-
-  LustreSecGroup:
-   type: "OS::Neutron::SecurityGroup"
-   properties:
-     name: "LustreSecGroup"
-     rules: [ { protocol: tcp,
-               port_range_min: 988,
-               port_range_max: 988},
-               { protocol: udp,
-               port_range_min: 123,
-               port_range_max: 123}]
-
-  MDS_MGS_MDT:
-   type: "OS::Nova::Server"
-   properties:
-    name:
-     list_join: [ '-', [ { get_param: "OS::stack_name" }, 'LustreFSM' ]]
-    availability_zone: { get_param: avz }
-    flavor: m3.xsmall
-    image: { get_param: centos_7_image_id }
-    key_name: { get_param: ssh_key }
-    security_groups: [ { get_resource: LustreSecGroup }, { get_param: ManualSSHSecGroup } ]
-    metadata:
-     ansible_host_groups: [ LustreMNodes ]
-     ansible_ssh_user: ec2-user
-     project_name: { get_param: project_name }
-    networks:
-      - network: { get_param: NetID }
-
-  MDTVolume:
-   type: OS::Cinder::Volume
-   properties:
-    availability_zone: { get_param: avz }
-    size: 10
-    name: mdtvol
-  MDTVolumeAttachment:
-   type: "OS::Cinder::VolumeAttachment"
-   properties:
-    volume_id: { get_resource: MDTVolume }
-    instance_uuid: { get_resource: MDS_MGS_MDT }
-
-  OSS_OST:
-   type: "OS::Nova::Server"
-   properties:
-    name:
-     list_join: [ '-', [ { get_param: "OS::stack_name" }, 'LustreFSO' ]]
-    availability_zone: { get_param: avz }
-    flavor: m3.xsmall
-    image: { get_param: centos_7_image_id }
-    key_name: { get_param: ssh_key }
-    security_groups: [ { get_resource: LustreSecGroup }, { get_param: ManualSSHSecGroup } ]
-    metadata:
-     ansible_host_groups: [ LustreONodes ]
-     ansible_ssh_user: ec2-user
-     project_name: { get_param: project_name }
-    networks:
-      - network: { get_param: NetID }
-
-  OSTVolume:
-   type: OS::Cinder::Volume
-   properties:
-    availability_zone: { get_param: avz }
-    size: 100
-    name: ostvol
-  OSTVolumeAttachment:
-   type: "OS::Cinder::VolumeAttachment"
-   properties:
-    volume_id: { get_resource: OSTVolume }
-    instance_uuid: { get_resource: OSS_OST }
-
-
-  LustreClient:
-   type: "OS::Nova::Server"
-   properties:
-    name:
-     list_join: [ '-', [ { get_param: "OS::stack_name" }, 'LustreClient' ]]
-    availability_zone: { get_param: avz }
-    flavor: m3.xsmall
-    image: { get_param: centos_7_image_id }
-    key_name: { get_param: ssh_key }
-    security_groups: [ { get_resource: LustreSecGroup }, { get_param: ManualSSHSecGroup } ]
-    metadata:
-     ansible_host_groups: [ LoginNodes ]
-     ansible_ssh_user: ec2-user
-     project_name: { get_param: project_name }
-    networks:
-      - network: { get_param: NetID }
diff --git a/CICD/heat/mgmtnode_HOT.yaml b/CICD/heat/mgmtnode_HOT.yaml
deleted file mode 100644
index 85bceab9f6b2db7373a40e85038f4e681691def0..0000000000000000000000000000000000000000
--- a/CICD/heat/mgmtnode_HOT.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-heat_template_version: 2013-05-23
-parameters:
-  mynodename:
-    type: string
-  ssh_key:
-    type: string
-  image:
-    type: string
-  #avz:
-  #  type: string
-  project_name:
-    type: string
-  ansible_ssh_user:
-    type: string
-  security_groups:
-    type: json
-  NetID:
-    type: string
-    default: Classic Provider
-  ansible_host_groups:
-    type: comma_delimited_list
-    default: [ ManagementNodes ]
-
-resources:
-
-  instance:
-    type: OS::Nova::Server
-    properties:
-      #availability_zone: { get_param: avz }
-      flavor: m3.xsmall
-      image: { get_param: image }
-      key_name: { get_param: ssh_key }
-      security_groups: { get_param: security_groups }
-      name: { get_param: mynodename }
-      metadata:
-       ansible_host_groups: { get_param: ansible_host_groups }
-       ansible_ssh_user: { get_param: ansible_ssh_user }
-       project_name: { get_param: project_name }
-      networks:
-       - network: { get_param: NetID }
diff --git a/CICD/heat/resource_registry.yaml b/CICD/heat/resource_registry.yaml
deleted file mode 100644
index 421a309d5ce769fdaa0cfcf590fc927a4104eab1..0000000000000000000000000000000000000000
--- a/CICD/heat/resource_registry.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-resource_registry:
-  My::Server::MgmtNode: ./mgmtnode_HOT.yaml
diff --git a/CICD/heat/server_rebuild.sh b/CICD/heat/server_rebuild.sh
deleted file mode 100755
index 004206023c61b779a9fef1b0968a09d40a94e72b..0000000000000000000000000000000000000000
--- a/CICD/heat/server_rebuild.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-
-REBOOT_TIME=90
-
-NODETYPES=${@}
-
-# make sure you define variable STACKNAME in current environment
-if [[ -z $STACKNAME ]]; then
-    echo "please define STACKNAME variable"  
-    exit 1
-fi
-
-# prepend CICD to stack name
-if [[ "$STACKNAME" == "CICD"* ]]; then
-  echo "CICD found in stackname. doing nothing"
-else
-  STACKNAME="CICD"$STACKNAME
-fi
-
-function check_stack_exists {
-    if openstack stack list | grep -w $STACKNAME;
-        then 
-            echo "stack found";
-        else 
-            echo "stack not found";
-            return 1
-    fi
-}
-
-if ! check_stack_exists
-then
-    exit 0
-fi
-
-# return and dictionary in json format, which map server name to ansible_host_groups. There will be IndexError if the servers, which names are prefixed by STACKNAME, don't have ansible_host_groups property
-host_group_mapping=$(openstack server list --long -f json | python3 -c "import json,sys,re;ivt=json.load(sys.stdin);json.dump({i['Name']: re.search('ansible_host_groups\=\'\[(.+)\]\'', i['Properties']).groups()[0].replace('\"', '').split() for i in ivt if re.match('$STACKNAME',i['Name'])}, fp=sys.stdout)")
-
-# all available ansible_host_groups
-available_groups=$(echo $host_group_mapping |  python3 -c "import json,sys;mapping=json.load(sys.stdin);output=[];[output.extend(v) for v in mapping.values()];print(output)" | tr -d "[',]")
-
-echo "available groups are $available_groups"
-# if the first input parameter is all then rebuild all groups
-if [[ "$1" == "all" ]]; then
-    NODETYPES=$available_groups
-fi
-echo "going to update group $NODETYPES"
-server_list=$(echo $host_group_mapping | python3 -c "import json,sys;mapping=json.load(sys.stdin);node_types='$NODETYPES'.split();output=[k for k in mapping.keys() if len(set(mapping[k]).intersection(set(node_types))) > 0];print(output)" | tr -d "[,]'" | xargs -n1 | sort -u)
-
-echo "server list is $server_list"
-rebuild_func(){
-    echo "rebuilding server $1"
-    openstack server rebuild --wait $1
-}
-
-# for eaech line in data
-for server in $server_list
-do
-rebuild_func $server & # run parallel in background
-done
-wait # wait for all servers to be rebuild
-# add an extra time for reboot
-echo "waiting for reboot"
-sleep $REBOOT_TIME
-echo "All done"
-
diff --git a/CICD/infra/make_inventory.py b/CICD/infra/make_inventory.py
new file mode 100644
index 0000000000000000000000000000000000000000..fa70d05241db81481afad3a91e2f7b9bed2f34ba
--- /dev/null
+++ b/CICD/infra/make_inventory.py
@@ -0,0 +1,142 @@
+#!/usr/bin/env python
+import sys, os, string, socket, re
+import shlex, multiprocessing, time, shutil, json
+from novaclient import client as nvclient
+from cinderclient import client as cdclient
+import novaclient.exceptions as nvexceptions
+from keystoneclient import client as ksclient
+from joblib import Parallel, delayed
+from multiprocessing import Process, Manager, Pool
+import yaml
+
+def gatherInfo(md_key,md_value,authDict,project_id,inventory):
+    ## Fetch the Nova Object
+    from keystoneclient import client as ksclient
+    from keystoneauth1.identity import v3
+    from keystoneauth1 import session
+    auth = v3.Password(project_id=project_id,**authDict)
+    sess = session.Session(auth=auth)
+    nc = nvclient.Client('2.0',session=sess)
+    cc = cdclient.Client('3.0',session=sess)
+        
+    for server in nc.servers.list():
+        if server.metadata and \
+        'ansible_host_groups' in server.metadata and \
+        md_key in  server.metadata:
+            if server.metadata[md_key].strip() != md_value.strip(): continue
+            unwantedChars = """][")("""
+            rgx = re.compile('[%s]' % unwantedChars)
+            ansible_groups = rgx.sub('', server.metadata['ansible_host_groups']).split(',')
+            hostname = server.name
+            novaVolumes = cc.volumes.list(server.id)
+            # Set Ansible Host Group
+            for group in ansible_groups:
+                groupName = group.strip()
+                if groupName not in inventory: inventory[groupName] = []
+                inventory[groupName].append(hostname)
+            # Add other metadata
+            if not hostname in inventory['_meta']['hostvars']:
+                inventory['_meta']['hostvars'][hostname] = {}
+            for md in server.metadata.items():
+                if md[0] not in (md_key,'ansible_host_groups'):
+                    inventory['_meta']['hostvars'][hostname].update({ md[0]:md[1] })
+            if novaVolumes:
+                volDict = {}    
+                for volume in novaVolumes:
+                    try:
+                        if volume.attachments[0]['server_id'] == server.id:
+                            volDict[volume.name] = {'dev':'/dev/disk/by-id/virtio-' + volume.id[:20],'uuid':volume.id}
+                    except IndexError:
+                        continue
+                if volDict: inventory['_meta']['hostvars'][hostname]['ansible_host_volumes'] = volDict
+                network_name=None
+                if len(list(server.networks.keys())) > 1:
+                    for nn in server.networks.keys():
+                        if 'internal' in nn:
+                            network_name = nn
+                        else:
+                            inventory['_meta']['hostvars'][hostname]['public_host'] = server.networks[nn][0]
+                for network in server.addresses.items():
+                    for a in network[1]:
+                        if a['OS-EXT-IPS:type'] == 'floating':
+                            inventory['_meta']['hostvars'][hostname]['ext_ip'] = a['addr']
+                if network_name == None:
+                    try:
+                        network_name = list(server.networks.keys())[0]
+                    except:
+                        print("An error occured while processing ",server)
+                try:    
+                    inventory['_meta']['hostvars'][hostname]['ansible_host'] = server.networks[network_name][0]
+                except:
+                    print("An error occured while processing ",server)
+
+        else:
+            continue
+    return inventory
+
+def merge(i,j):
+    for k in i.keys():
+        v=i[k]
+        if k in j:
+            if isinstance(v,list):
+                j[k].extend(v)
+            if isinstance(v,dict):
+                merge(i[k],j[k])
+        else:
+            j[k]=i[k]
+
+
+if __name__ == "__main__":
+    inventory = {}
+    inventory['_meta'] = { 'hostvars': {} }
+    authDict={}
+    try:
+        authDict['auth_url'] = os.environ['OS_AUTH_URL']
+        authDict['username'] = os.environ['OS_USERNAME']
+        authDict['password'] = os.environ['OS_PASSWORD']
+        authDict['user_domain_name'] = os.environ['OS_USER_DOMAIN_NAME']
+    except KeyError:
+        print("Env Variables not set, Please run: source <openstack rc file>")
+        sys.exit()
+    md_key="project_name"
+    md_value=sys.argv[1]
+    from keystoneclient import client as ksclient
+    import keystoneclient
+    from keystoneauth1.identity import v3
+    from keystoneauth1 import session
+#    auth = v3.Password(username=userName, password=passwd, auth_url=authUrl,user_domain_name=domainName)
+    auth = v3.Password(unscoped=True,**authDict)
+    sess = session.Session(auth=auth)
+    kc = ksclient.Client(session=sess)
+    kc.include_metadata = False
+    authmgr = keystoneclient.v3.auth.AuthManager(kc)
+    projects = authmgr.projects()
+    enabled_projects = [ x for x in projects if x.enabled ]
+
+    inventory_list = Parallel(n_jobs=len(projects))(delayed(gatherInfo) (md_key,md_value, authDict, proj.id, inventory) for proj in enabled_projects)
+    
+    inventory={}
+
+    for i in inventory_list:
+        merge(i,inventory)
+    #for k, v in inventory.items(): 
+    #    sorted_inventory={k:sorted(v)}
+    for key in inventory:
+        if key=='_meta':
+            pass
+        else:
+            inventory[key].sort()
+    yamlinventory = {}
+    yamlinventory['all']={}
+    yamlinventory['all']['children'] = {}
+    yamlinventory['all']['children']['hostvars'] = {}
+    yamlinventory['all']['children']['hostvars']['hosts'] = inventory['_meta']['hostvars']
+    yamlinventory['all']['children']['hostvars']['vars'] = {'ansible_python_interpreter': '/usr/bin/python3'}
+    for g in inventory.keys():
+        if g != '_meta':
+            hostdict = {}
+            for h in inventory[g]:
+                hostdict[h]={}
+            yamlinventory['all']['children'][g] = {}
+            yamlinventory['all']['children'][g]['hosts'] = hostdict
+    print(yaml.dump(yamlinventory))
diff --git a/CICD/infra/os_create.yml b/CICD/infra/os_create.yml
new file mode 100644
index 0000000000000000000000000000000000000000..faf9441cbd8b94217c39389405b5286453323f9a
--- /dev/null
+++ b/CICD/infra/os_create.yml
@@ -0,0 +1,188 @@
+---
+- name: load vars
+  hosts: localhost
+  tasks:
+  - include_vars: os_vars.yml
+  tags: allways
+
+- name: create network
+  hosts: localhost
+  tasks:
+  - name: network
+    openstack.cloud.network:
+      state: present
+      name: "{{ project_name }}-network"
+    register: network
+  - name: debug network
+    debug:
+      var: network
+
+  - openstack.cloud.subnet:
+      state: present
+      name:  "{{ project_name }}-subnet"
+      network_name: "{{ network.network.name }}"
+      ip_version: 4
+      cidr: 192.168.0.0/24
+      dns_nameservers:
+        - 8.8.8.7
+        - 8.8.8.8
+    register: subnet
+
+  - openstack.cloud.router:
+      state: present
+      name: "{{ project_name }}-router"
+      network: "{{ ext_network }}"
+      interfaces:
+        - "{{ project_name }}-subnet"
+
+  - openstack.cloud.security_group:
+      state: present
+      name: "{{ project_name }}-secgroup"
+    register: secgroup
+  - name: debug secgroup
+    debug:
+      var: secgroup
+
+  - openstack.cloud.security_group_rule:
+      security_group: "{{ project_name}}-secgroup"
+      remote_group: "{{ project_name}}-secgroup"
+      protocol: "tcp"
+  - openstack.cloud.security_group_rule:
+      security_group: "{{ project_name}}-secgroup"
+      remote_group: "{{ project_name}}-secgroup"
+      protocol: "icmp"
+
+  - name: debug subnet
+    debug:
+      var: subnet
+
+- name: create bastion node
+  hosts: localhost
+  tasks:
+  - name: bastionnodes
+    openstack.cloud.server:
+      state: present
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+        - "{{ project_name}}-secgroup"
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "BastionNodes" ]'
+      nics:
+        - net-id: "{{ network.network.id }}"
+      userdata: "{{ os_userdata }}"
+      name: "{{ item.vmname }}"
+    loop:
+      - { vmname: "{{ project_name}}-bastion0", flavor: t3.xsmall }
+
+- name: create login nodes
+  hosts: localhost
+  tasks:
+  - name: Loginnodes
+    openstack.cloud.server:
+      state: present
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+        - "{{ project_name}}-secgroup"
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "LoginNodes", "ManagementNodes", "LdapNodes" ]'
+      nics:
+        - net-id: "{{ network.network.id }}"
+      userdata: "{{ os_userdata }}"
+      name: "{{ item.vmname }}"
+    loop:
+      - { vmname: "{{ project_name }}-login0", flavor: t3.medium }
+      - { vmname: "{{ project_name }}-login1", flavor: t3.medium }
+
+- name: create volumes for slurmstate and homedir
+  hosts: localhost
+  tasks:
+  - name: slurm volume
+    openstack.cloud.volume:
+      state: present
+      availability_zone: "{{ availability_zone }}"
+      size: 2
+      display_name: "{{project_name}}_slurm_state"
+    register: slurm_state_volume
+
+  - name: slurm volume
+    openstack.cloud.volume:
+      state: present
+      availability_zone: "{{ availability_zone }}"
+      size: 10
+      display_name: "{{ project_name }}_userdata"
+    register: user_volume
+  - name: debug slurm_state
+    debug:
+      var: slurm_state_volume
+
+- name: create sql node
+  hosts: localhost
+  tasks:
+  - name: SQLnodes
+    openstack.cloud.server:
+      state: present
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+        - "{{ project_name}}-secgroup"
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "SQLNodes", "NFSNodes" ]'
+      nics:
+        - net-id: "{{ network.network.id }}"
+      userdata: "{{ os_userdata }}"
+      name: "{{ item.vmname }}"
+      volumes: [ "{{ slurm_state_volume.volume.id }}", "{{ user_volume.volume.id }}"]
+    loop:
+      - { vmname: "{{ project_name }}-sql0", flavor: t3.medium }
+
+
+  - name: create compute nodes 
+    openstack.cloud.server:
+
+      state: present
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+        - "{{ project_name}}-secgroup"
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "ComputeNodes" ]'
+      nics:
+        - net-id: "{{ network.network.id }}"
+      userdata: "{{ os_userdata }}"
+      name: "{{ item.vmname }}"
+    loop:
+      - { vmname: "{{ project_name }}-node00", flavor: t3.medium }
+      - { vmname: "{{ project_name }}-node01", flavor: t3.medium }
+
+  - name: attach floating ip
+    openstack.cloud.floating_ip:
+      state: present
+      server: "{{ project_name }}-bastion0"
+      network: "{{ ext_network }}"
+      reuse: true
diff --git a/CICD/infra/os_delete.yml b/CICD/infra/os_delete.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9a0c4ae1b9ce0147c5c120cc94783a0b20eeeb71
--- /dev/null
+++ b/CICD/infra/os_delete.yml
@@ -0,0 +1,138 @@
+---
+
+- name: load vars
+  hosts: localhost
+  tasks:
+  - include_vars: os_vars.yml
+  tags: allways
+
+- name: create bastion node
+  hosts: localhost
+  tasks:
+  - name: bastionnodes
+    openstack.cloud.server:
+      state: absent
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "BastionNodes" ]'
+      name: "{{ item.vmname }}"
+    loop:
+      - { vmname: "{{ project_name}}-bastion0", flavor: t3.xsmall }
+
+- name: create login nodes
+  hosts: localhost
+  tasks:
+  - name: Loginnodes
+    openstack.cloud.server:
+      state: absent
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "LoginNodes", "ManagementNodes", "LdapNodes" ]'
+      name: "{{ item.vmname }}"
+    loop:
+      - { vmname: "{{ project_name }}-login0", flavor: t3.medium }
+      - { vmname: "{{ project_name }}-login1", flavor: t3.medium }
+
+
+- name: create sql node
+  hosts: localhost
+  tasks:
+  - name: SQLnodes
+    openstack.cloud.server:
+      state: absent
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "SQLNodes", "NFSNodes" ]'
+      name: "{{ item.vmname }}"
+    loop:
+      - { vmname: "{{ project_name }}-sql0", flavor: t3.medium }
+
+- name: create volumes for slurmstate and homedir
+  hosts: localhost
+  tasks:
+  - name: slurm volume
+    openstack.cloud.volume:
+      state: absent
+      availability_zone: "{{ availability_zone }}"
+      size: 2
+      display_name: "{{project_name}}_slurm_state"
+
+  - name: slurm volume
+    openstack.cloud.volume:
+      state: absent
+      availability_zone: "{{ availability_zone }}"
+      size: 10
+      display_name: "{{project_name}}_userdata"
+    register: user_volume
+
+  - name: create compute nodes 
+    openstack.cloud.server:
+
+      state: absent
+      timeout: 600
+      availability_zone: "{{ availability_zone }}"
+      image: "{{ image }}"
+      flavor: "{{ item.flavor }}"
+      auto_ip: false
+      security_groups:
+        - default
+      meta:
+         project_name: "{{ project_name }}"
+         ansible_user: ubuntu
+         ansible_host_groups: '[ "ComputeNodes" ]'
+      name: "{{ item.vmname }}"
+    loop:
+      - { vmname: "{{ project_name }}-node00", flavor: t3.medium }
+      - { vmname: "{{ project_name }}-node01", flavor: t3.medium }
+
+  - openstack.cloud.router:
+      state: absent
+      name: "{{ project_name }}-router"
+  - openstack.cloud.subnet:
+      state: absent
+      name:  "{{ project_name }}-subnet"
+
+  - openstack.cloud.security_group:
+      state: absent
+      name: "{{ project_name }}-secgroup"
+   
+
+- name: create network
+  hosts: localhost
+  tasks:
+  - name: network
+    openstack.cloud.network:
+      state: absent
+      name: "{{ project_name }}-network"
+    register: network
+  - name: debug network
+    debug:
+      var: network
+
+
+
+
diff --git a/CICD/infra/os_vars.yml b/CICD/infra/os_vars.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6cbb7dcb7c41c4573af6ddef25f269434e93123b
--- /dev/null
+++ b/CICD/infra/os_vars.yml
@@ -0,0 +1,16 @@
+---
+#variables to configure the vms
+clustername: "HPCasCode-ci-mlaas"
+project_name: "HPCasCode-ci-mlaas"
+domain: "HPCasCode-ci-mlaas.org.au"
+# variabls for openstack
+image: 356ff1ed-5960-4ac2-96a1-0c0198e6a999
+availability_zone: QRIScloud
+ext_network: QRIScloud
+# The bit that says #cloud-config is not a COMMENT, its part of a multiline string sent to openstack
+os_userdata: |
+  #cloud-config
+  users:
+    - default
+    - name: ubuntu
+      ssh_authorized_keys: 'cert-authority ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfHlWGrnpirvqvUTySnoQK6ze5oIXz7cYIT+XCBeBCahlK05O38g0erBGrNWFozZwbIXnysVCibaUJqtH0JrYqmcr2NnYA0PoiTeranvaJI7pQsga1gBxfK/D4UItw5yI6V7w9efMT0zpIP8WEubQz6GFtkyiNVgFCHj3+VhLs3RslvYzb35SFcLXEDsGVQM5NdWBUgRaNRqpTPvuMcxTyPvy32wW72kwaYRQioDJFcE2WJ240M2oSsx+dhTWvI8sW1sEUI1qIDfyBPsOgsLofuSpt4ZNgJqBUTp/hW85wVpNzud6A4YJWHpZXSDMtUMYE9QL+x2fw/b26yck9ZPE/ hines@tun'
diff --git a/CICD/infra/os_vars.yml.j2 b/CICD/infra/os_vars.yml.j2
new file mode 100644
index 0000000000000000000000000000000000000000..f6cbba08bcf12472fe3720d32c35df560405f9d9
--- /dev/null
+++ b/CICD/infra/os_vars.yml.j2
@@ -0,0 +1,17 @@
+---
+#variables to configure the vms
+clustername: "{{ clustername }}"
+project_name: "{{ clustername }}"
+domain: "{{ clustername }}.org.au"
+# variabls for openstack
+image: 356ff1ed-5960-4ac2-96a1-0c0198e6a999
+availability_zone: QRIScloud
+ext_network: QRIScloud
+# The bit that says #cloud-config is not a COMMENT, its part of a multiline string sent to openstack
+os_userdata: |
+  #cloud-config
+  users:
+    - default
+    - name: ubuntu
+      ssh_authorized_keys: '{{ ssh_ca }}'
+
diff --git a/CICD/infra/template.py b/CICD/infra/template.py
new file mode 100644
index 0000000000000000000000000000000000000000..9e03b1f4fc04e354470fa83f64bd8e55ba5b73f8
--- /dev/null
+++ b/CICD/infra/template.py
@@ -0,0 +1,10 @@
+import os
+import jinja2
+ref_name =  os.environ.get('CI_COMMIT_REF_NAME')
+git_name = os.environ.get('CI_PROJECT_NAME')
+ssh_ca = os.environ.get('SSH_CA')
+cluster_name = "{}-ci-{}".format(git_name,ref_name)
+with open('os_vars.yml.j2','r') as f:
+    template = jinja2.Template(f.read())
+with open('os_vars.yml','w') as f:
+    f.write(template.render(clustername=cluster_name, ssh_ca=ssh_ca))
diff --git a/CICD/make_files.py b/CICD/make_files.py
new file mode 100644
index 0000000000000000000000000000000000000000..c5faff0bb05f0a13edede0be364c8b6bd0292b66
--- /dev/null
+++ b/CICD/make_files.py
@@ -0,0 +1,211 @@
+import os
+def init_ssh_keys(inventory):
+    import subprocess
+    # Run ssh-keygen to generate host keys for login and compute nodes
+    key_types = ['rsa','dsa','ecdsa','ed25519']
+    #groups = list(filter(lambda x: x != 'hostvars', inventory['all']['children'].keys()))
+    groups = ['LoginNodes','ComputeNodes']
+    for t in key_types:
+        for g in groups:
+            output = 'files/ssh_{}_{}_key'.format(g,t)
+            if os.path.exists(output):
+                continue
+            p = subprocess.call(['ssh-keygen','-N','','-f',output,'-t',t])
+
+def init_passwords():
+    import yaml
+    def gen_password(n=32): # Munge key needs a minimum 32 bytes
+        import string
+        import random
+        characters = string.ascii_letters + string.digits
+        return ''.join(random.choice(characters) for i in range(n))
+    required_passwords = [
+        "mungekey", 
+        "slurmdb_passwd", 
+        "default_user_password", 
+        "influxdb_password", 
+    ]
+    passwords = {}
+    for p in required_passwords:
+        passwords[p] = gen_password()
+    outputfile = 'vars/passwords.yml'
+    if os.path.exists(outputfile):
+        return
+    with open(outputfile,'w') as f:
+        f.write(yaml.dump(passwords))
+
+
+def make_hosts(inventory):
+    # create a file to template /etc/hosts with each nodes IP address
+    hostsdata = """
+127.0.0.1 localhost
+::1     ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+"""
+    for h in inventory['all']['children']['hostvars']['hosts'].items():
+        hostsdata = hostsdata + "{} {}\n".format(h[1]['ansible_host'],h[0])
+    outputfile = 'files/etcHosts'
+    with open(outputfile,'w') as f:
+        f.write(hostsdata)
+
+def make_vars_filesystems(choices, inventory):
+    import jinja2
+    data = {}
+    data['domain'] = choices['domain']
+    data['project_name'] = choices['project_name']
+    project_name = choices['project_name']
+    # ATM we have only one NFS server, and its hostname ends in -sql because it does double duty as the SQL server for slurm accounting logs
+    nfsserver = "{}-sql0".format(choices['project_name'])
+
+    for vol in ['userdata','slurm_state']:
+        data['{}_disk'.format(vol)] = inventory['all']['children']['hostvars']['hosts'][nfsserver]['ansible_host_volumes']["{}_{}".format(project_name,vol)]['dev']
+
+    with open('pre_templates/filesystems_yml.j2') as f:
+        template = jinja2.Template(f.read())
+
+
+    with open('vars/filesystems.yml','w') as f:
+        f.write(template.render(**data))
+
+def make_ssh_cfg(choices, inventory):
+    import jinja2
+    data = choices | inventory
+    bastion_server = "{}-bastion0".format(choices['project_name'])
+    ansible_user = inventory['all']['children']['hostvars']['hosts'][bastion_server]['ansible_user']
+    bastion_floating_ip = inventory['all']['children']['hostvars']['hosts'][bastion_server]['ext_ip']
+    data['ansible_user'] = ansible_user
+    data['bastion_floating_ip'] = bastion_floating_ip
+    with open('pre_templates/ssh_cfg.j2') as f:
+        template = jinja2.Template(f.read())
+    with open('ssh.cfg','w') as f:
+        f.write(template.render(**data))
+
+
+def make_nfs_exports(inventory):
+    # Generate an /etc/exports file for our NFS server to allow compute nodes to connect
+    import yaml
+    srvopts = "rw,no_root_squash"
+    with open('vars/filesystems.yml','r') as f:
+        fs = yaml.safe_load(f.read())
+    for host in fs['nfsexports']:
+        with open('files/etcExports','w') as f:
+            for e in host['exportList']:
+                f.write('{} {}({})\n'.format(e['src'],'192.168.0.0/24',srvopts))
+
+def groups_from_inventory(inventory):
+    groups = {}
+    for g in inventory['all']['children'].items():
+        groups[g[0]] = g[1]['hosts'].keys()
+    return groups
+
+def make_slurm_config(choices, inventory):
+    # Generate a slurm.conf from template
+    # should include putting the compute nodes in the correct place
+    # and listing the mgmt nodes as slurm controlers
+    import jinja2
+    import yaml
+    groups = groups_from_inventory(inventory)
+    mgmtnodes = list(inventory['all']['children']['ManagementNodes']['hosts'].keys())
+    sqlnodes = list(inventory['all']['children']['SQLNodes']['hosts'].keys())
+    mgmtnodes.sort()
+    choices['controller']=mgmtnodes[0]
+    choices['backup']=mgmtnodes[1]
+    choices['sqlnode']=sqlnodes[0]
+    with open('pre_templates/slurm_vars.j2') as f:
+        template = jinja2.Template(f.read())
+    with open('vars/slurm.yml','w') as f:
+        f.write(template.render(**choices))
+
+    with open('vars/slurm.yml') as f:
+        slurmvars = yaml.safe_load(f.read())
+    slurmvars['groups'] = groups
+    slurmvars = slurmvars | choices
+    with open('pre_templates/slurm.conf.j2') as f:
+        template = jinja2.Template(f.read())
+    with open('files/slurm.conf','w') as f:
+        f.write(template.render(**slurmvars))
+    with open('pre_templates/slurmdbd.conf.j2') as f:
+        template = jinja2.Template(f.read())
+    with open('files/slurmdbd.conf','w') as f:
+        f.write(template.render(**slurmvars))
+
+def make_nhc_config(inventory):
+    import jinja2
+    with open('pre_templates/nhc.conf.j2') as f:
+        template = jinja2.Template(f.read())
+    with open('files/nhc.conf') as f:
+        f.write(template.render())
+
+def make_known_hosts(inventory):
+    with open('files/ssh_known_hosts','w') as f:
+        f.write('\n')
+def make_gres_conf(inventory):
+    with open('files/gres.conf','w') as f:
+        f.write('\n')
+
+def make_vars_vars(choices, inventory):
+    import jinja2
+    groups = groups_from_inventory(inventory)
+    mgmtnodes = list(inventory['all']['children']['ManagementNodes']['hosts'].keys())
+    sqlnodes = list(inventory['all']['children']['SQLNodes']['hosts'].keys())
+    mgmtnodes.sort()
+    choices['controller']=mgmtnodes[0]
+    choices['backup']=mgmtnodes[1]
+    choices['sqlnode']=sqlnodes[0]
+    with open('pre_templates/vars_yml.j2') as f:
+        template = jinja2.Template(f.read())
+    with open('vars/vars.yml','w') as f:
+        f.write(template.render(**choices))
+    with open('vars/vars_centos79.yml','w') as f:
+        f.write('# empty file for compatibility with HPCasCode\n')
+
+
+
+def init_cluster(inventory):
+    #
+    # These values should not change, but they are chosen at random, so only do it once
+    #
+    init_ssh_keys(inventory)
+    init_passwords()
+
+def derive_ansible_constants(choices, inventory):
+    #
+    # These values are deviced from the inventory and various choices make about the cluster
+    # No matter how many times you run this it won't change
+    #
+    make_hosts(inventory)
+    make_slurm_config(choices, inventory)
+    make_vars_filesystems(choices, inventory)
+    make_nfs_exports(inventory)
+    make_known_hosts(inventory)
+    make_gres_conf(inventory)
+    make_vars_vars(choices, inventory)
+    make_ssh_cfg(choices, inventory)
+
+
+def main():
+    import sys
+    import yaml
+    with open(sys.argv[1]) as f:
+        inventory = yaml.safe_load(f.read())
+    with open(sys.argv[2]) as f:
+        choices = yaml.safe_load(f.read())
+    with open(sys.argv[3]) as f:
+        versions = yaml.safe_load(f.read())
+
+    choices = choices | versions
+
+    init_cluster(inventory)
+
+    with open('vars/passwords.yml') as f:
+        passwords = yaml.safe_load(f.read())
+
+    choices = choices | passwords
+
+    derive_ansible_constants(choices, inventory)
+
+if __name__ == "__main__":
+    main()
diff --git a/CICD/pre_templates/filesystems_yml.j2 b/CICD/pre_templates/filesystems_yml.j2
new file mode 100644
index 0000000000000000000000000000000000000000..a823cb021e1f53a0a099e06d50a97255d0b24d63
--- /dev/null
+++ b/CICD/pre_templates/filesystems_yml.j2
@@ -0,0 +1,28 @@
+domain: {{ domain }}
+volumes:
+  - host: {{ project_name}}-sql0
+    dev: {{ slurm_state_disk }}
+    mnt: /mnt/slurm_state
+  - host: {{ project_name }}-sql0
+    dev: {{ userdata_disk }}
+    mnt: /mnt/userdata
+nfsexports:
+  - host: {{ project_name }}-sql0
+    exportList:
+      - src: /mnt/userdata
+      - src: /mnt/slurm_state
+nfsmounts:
+  - group: ComputeNodes
+    nfsMounts:
+    - name: /userdata
+      ipv4: {{ project_name }}-sql0
+      src: /mnt/userdata
+      fstype: nfs4
+      opts: "defaults,rw"
+  - group: ManagementNodes
+    nfsMounts:
+    - name: /slurm_state
+      ipv4: {{ project_name }}-sql0
+      src: /mnt/slurm_state
+      fstype: nfs4
+      opts: "defaults,rw"
diff --git a/CICD/pre_templates/nhc.conf.j2 b/CICD/pre_templates/nhc.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..a5921218b83415835be2f8c168520bd9d7b05866
--- /dev/null
+++ b/CICD/pre_templates/nhc.conf.j2
@@ -0,0 +1,29 @@
+
+
+#######################################################################
+###
+### Filesystem checks
+###
+# * || check_fs_mount_rw -t "fuse.glusterfs" -s "mgmt0:/gv" -f "/glusterVolume"
+ * || check_fs_used / 90%
+# * || check_fs_used /glusterVolume 90%
+ * || check_fs_iused / 100%
+# * || check_fs_iused /glusterVolume 100%
+
+
+#######################################################################
+###
+### Hardware checks
+###
+ * || check_hw_cpuinfo 1 1 1
+# * || check_hw_physmem 4048416kB 4048416kB 3%
+ * || check_hw_swap 0kB 0kB 3%
+ * || check_hw_eth eth0
+ * || check_hw_eth lo
+
+
+#######################################################################
+###
+### Process checks
+###
+ * || check_ps_service -S -u root sshd
diff --git a/CICD/pre_templates/slurm.conf.j2 b/CICD/pre_templates/slurm.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..6004fabdb4b230c8705dbb0be41206bbf6d0e78e
--- /dev/null
+++ b/CICD/pre_templates/slurm.conf.j2
@@ -0,0 +1,166 @@
+#
+# Example slurm.conf file. Please run configurator.html
+# (in doc/html) to build a configuration file customized
+# for your environment.
+#
+#
+# slurm.conf file generated by configurator.html.
+#
+# See the slurm.conf man page for more information.
+#
+ClusterName={{ clustername }}
+ControlMachine={{ controller }}
+BackupController={{ backup }}
+#ControlAddr=
+#BackupController=
+#BackupAddr=
+#
+SlurmctldParameters=enable_configless
+SlurmUser=slurm
+SlurmdUser=root
+SlurmctldPort=6817
+SlurmdPort=6818
+AuthType=auth/munge
+#JobCredentialPrivateKey=
+#JobCredentialPublicCertificate=
+StateSaveLocation=/opt/slurm/var/state
+SlurmdSpoolDir=/opt/slurm/var/spool
+SwitchType=switch/none
+MpiDefault=pmi2
+SlurmctldPidFile=/opt/slurm/var/run/slurmctld.pid
+SlurmdPidFile=/opt/slurm/var/run/slurmd.pid
+#ProctrackType=proctrack/linuxproc
+ProctrackType=proctrack/cgroup
+#PluginDir=
+CacheGroups=0
+#FirstJobId=
+ReturnToService=1
+RebootProgram=/sbin/reboot
+#ResumeTimeout=300
+#MaxJobCount=
+#PlugStackConfig=
+#PropagatePrioProcess=
+#PropagateResourceLimits=
+#PropagateResourceLimitsExcept=
+#Prolog=
+#Epilog=
+#SrunProlog=
+#SrunEpilog=
+#TaskProlog=
+#TaskEpilog=
+TaskPlugin=task/cgroup
+#TaskPlugin=task/affinity
+#TaskPlugin=task/affinity,task/cgroup
+JobSubmitPlugins=lua
+OverTimeLimit=1
+CompleteWait=10
+
+#TrackWCKey=no
+#TreeWidth=50
+#TmpFS=
+#UsePAM=
+#
+# TIMERS
+SlurmctldTimeout=3000
+#SlurmdTimeout=300
+#InactiveLimit=0
+#MinJobAge=300
+KillWait=10
+#Waittime=0
+#
+# SCHEDULING
+SchedulerType="sched/backfill"
+#SchedulerAuth=
+#SchedulerPort=
+#SchedulerRootFilter=
+SelectType="select/linear"
+{% if slurmselecttype.find("cons_tres") > 0 %}
+SelectTypeParameters=CR_Core_Memory
+{% endif %}
+PriorityType=priority/multifactor
+#PriorityFlags=Ticket_Based
+#PriorityCalcPeriod=5
+#PriorityDecayHalfLife=0
+#PriorityUsageResetPeriod=14-0
+PriorityWeightFairshare=10000
+PriorityWeightAge=10000
+PriorityWeightPartition=10000
+PriorityWeightJobSize=10000
+PriorityMaxAge=14-0
+#
+# LOGGING
+{% if slurmctlddebug %}
+SlurmctldDebug={{ slurmctlddebug.level }}
+SlurmctldLogFile={{ slurmctlddebug.log }}
+{% else %}
+#SlurmctldDebug=
+#SlurmctldLogFile=
+{% endif %}
+{% if slurmddebug %}
+SlurmdDebug={{ slurmddebug.level }}
+SlurmdLogFile={{ slurmddebug.log }}
+{% else %}
+#SlurmdDebug=
+#SlurmdLogFile=
+{% endif %}
+{% if slurmschedlog %}
+SlurmSchedlogLevel={{ slurmschedlog.level }}
+SlurmSchedLogFile={{ slurmschedlog.log }}
+{% else %}
+#SlurmSchedlogLevel=
+#SlurmSchedLogFile=
+{% endif %}
+JobCompType=jobcomp/none
+#JobCompLoc=
+#
+{% if slurmjob is defined %}
+Prolog={{ slurmjob.prolog }}
+Epilog={{ slurmjob.epilog }}
+{% else %}
+Prolog=/opt/slurm/etc/slurm.prolog
+Epilog=/opt/slurm/etc/slurm.epilog
+{% endif %}
+#
+# ACCOUNTING
+JobAcctGatherType=jobacct_gather/linux
+JobAcctGatherFrequency=30
+#
+AccountingStorageType=accounting_storage/slurmdbd
+AccountingStorageHost={{ controller }}
+{% if slurmdbdbackup is defined %}
+AccountingStorageBackupHost={{ backup }}
+{% endif %}
+AccountingStorageEnforce=limits,safe
+#AccountingStorageLoc=
+#AccountingStoragePass=
+#AccountingStorageUser=
+#
+#GRES
+GresTypes=gpu
+#
+
+HealthCheckInterval=300
+HealthCheckProgram={{ nhc_dir }}/sbin/nhc
+
+DisableRootJobs=YES
+MpiParams=ports=12000-12999
+# COMPUTE NODES
+{% set nodelist = [] %}
+{% for queue in slurmqueues %}
+{% for node in groups[queue.group] %}
+{% if nodelist.append(node) %}
+{% endif %}
+{% endfor %}
+{% endfor %}
+{% for node in nodelist|unique %}
+NodeName={{ node }} Procs=1 RealMemory=1024 Sockets=1 CoresPerSocket=1 ThreadsPerCore=1 Gres=gpu:0 Weight=1 State=UNKNOWN
+{% endfor %}
+
+{% for queue in slurmqueues %}
+{% set nodenames = [] %}
+{% for node in groups[queue.group] %}
+{% if nodenames.append(node) %}
+{% endif %} 
+{% endfor %}
+PartitionName={{ queue.name }} {% if queue.default %}Default=yes{% endif %} Nodes={{ nodenames|join(',') }} {% if queue.DefaultTime is defined %} DefaultTime={{ queue.DefaultTime }} {% endif %} {% if queue.DefMemPerCPU is defined %} DefMemPerCPU={{ queue.DefMemPerCPU }} {% endif %}  {% if queue.MaxTime is defined %} MaxTime={{ queue.MaxTime}} {% endif %}  State=UP 
+{% endfor %}
diff --git a/CICD/pre_templates/slurm_vars.j2 b/CICD/pre_templates/slurm_vars.j2
new file mode 100644
index 0000000000000000000000000000000000000000..8c798cd7778157ccd2659e725604e49ec56b9c8d
--- /dev/null
+++ b/CICD/pre_templates/slurm_vars.j2
@@ -0,0 +1,58 @@
+---
+desktopNodeList:
+  - { name : 'DesktopNodes', interface : 'eth0' }
+slurmqueues:
+  - {name: batch, group: ComputeNodes, default: yes}
+
+
+slurmsharedstatedir: /slurm_state
+slurm_version: {{ slurm_version }}
+munge_version: {{ munge_version }}
+nhc_version: {{ nhc_version }}
+ucx_version: {{ ucx_version }}
+clustername: "{{ project_name }}"
+
+
+nhc_src_url: {{ nhc_src_url }}
+nhc_src_checksum: {{ nhc_src_checksum }}
+nhc_src_dir: {{ nhc_src_dir }}
+nhc_dir: {{ nhc_dir }}
+slurm_src_url: {{ slurm_src_url }}
+slurm_src_checksum: {{ slurm_src_checksum }}
+slurm_src_dir: {{ slurm_src_dir }}
+slurm_dir: {{ slurm_dir }}
+ucx_src_url: {{ ucx_src_url }}
+ucx_src_checksum: {{ ucx_src_checksum }}
+ucx_src_dir: {{ ucx_src_dir }}
+ucx_dir: {{ ucx_dir }}
+munge_src_url: {{ munge_src_url }}
+munge_src_checksum: {{ munge_src_checksum }}
+munge_src_dir: {{ munge_src_dir }}
+munge_dir: {{ munge_dir }}
+
+nhc_config_file: nhc.conf
+nhc_log_level: 0
+nhc_emails: nobody@nowhere.nowhere
+nhc_email_subject: "Node Health Check"
+mysql_host: "{{ sqlnode }}"
+slurmctrl:  "{{ controller }}"
+slurmctrlbackup: "{{ backup }}"
+slurmdbd: "{{ controller }}"
+slurmdbdpiddir: "/opt/slurm/var/run"
+slurmdbdbackup: "{{ backup }}"
+slurm_lua: true
+slurmlogin: "{{ controller }}"
+slurmlogdir: "/var/log"
+slurmctlddebug: {level: 5, log: '/mnt/slurm-logs/slurmctld.log'}
+slurmddebug: {level: 5, log: '/var/log/slurmd.log'}
+slurmschedlog: {level: 5, log: '/mnt/slurm-logs/slurmsched.log'}
+slurmdbdlog: {level: 5, log: '/mnt/slurm-logs/slurmdbd.log'}
+slurmfairshare: {def: false, val: 10000}
+slurmdatadir: "/opt/slurm/var/spool"
+slurmstatedir: "/opt/slurm/var/state"
+slurmpiddir: "/opt/slurm/var/run"
+slurmselecttype: "select/linear"
+slurmfastschedule: "1"
+slurmschedulertype: "sched/backfill"
+restartServerList:
+  - slurm
diff --git a/CICD/pre_templates/slurmdbd.conf.j2 b/CICD/pre_templates/slurmdbd.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..9888bbdee386c3de163f4f6ba26f2156d0d09c87
--- /dev/null
+++ b/CICD/pre_templates/slurmdbd.conf.j2
@@ -0,0 +1,40 @@
+#
+# Example slurmdbd.conf file.
+#
+# See the slurmdbd.conf man page for more information.
+#
+# Archive info
+#ArchiveJobs=yes
+#ArchiveDir="/tmp"
+#ArchiveSteps=yes
+#ArchiveScript=
+#JobPurge=12
+#StepPurge=1
+#
+# Authentication info
+AuthType=auth/munge
+#AuthInfo=/var/run/munge/munge.socket.2
+#
+# slurmDBD info
+#DbdAddr=
+DbdHost={{ controller }}
+DbdBackupHost={{ backup }}
+#DbdPort=7031
+SlurmUser=slurm
+#MessageTimeout=300
+#DefaultQOS=normal,standby
+#DebugLevel=
+#LogFile=
+PidFile=/opt/slurm/var/run/slurmdbd.pid
+#PluginDir=/usr/lib/slurm
+#PrivateData=accounts,users,usage,jobs
+#TrackWCKey=yes
+#
+# Database info
+StorageType=accounting_storage/mysql
+StorageHost={{ sqlnode }}
+#StoragePort=1234
+StoragePass={{ slurmdb_passwd }}
+StorageUser=slurmdb
+StorageLoc=slurm_acct_db
+
diff --git a/CICD/pre_templates/ssh_cfg.j2 b/CICD/pre_templates/ssh_cfg.j2
new file mode 100644
index 0000000000000000000000000000000000000000..79b8019a6007b9be0dafc397a514ab5d4e51e5c6
--- /dev/null
+++ b/CICD/pre_templates/ssh_cfg.j2
@@ -0,0 +1,6 @@
+Host 192.168.*
+    ProxyJump={{ ansible_user }}@{{ bastion_floating_ip }}
+    StrictHostKeyChecking=no
+    ServerAliveInterval 60
+    ControlMaster auto
+    ControlPath ~/.ssh/%r@%h:%p
diff --git a/CICD/pre_templates/ssh_cfg.j2~ b/CICD/pre_templates/ssh_cfg.j2~
new file mode 100644
index 0000000000000000000000000000000000000000..79b8019a6007b9be0dafc397a514ab5d4e51e5c6
--- /dev/null
+++ b/CICD/pre_templates/ssh_cfg.j2~
@@ -0,0 +1,6 @@
+Host 192.168.*
+    ProxyJump={{ ansible_user }}@{{ bastion_floating_ip }}
+    StrictHostKeyChecking=no
+    ServerAliveInterval 60
+    ControlMaster auto
+    ControlPath ~/.ssh/%r@%h:%p
diff --git a/CICD/pre_templates/vars_yml.j2 b/CICD/pre_templates/vars_yml.j2
new file mode 100644
index 0000000000000000000000000000000000000000..8390c468bfc4316c40d38374095404cb6fb84881
--- /dev/null
+++ b/CICD/pre_templates/vars_yml.j2
@@ -0,0 +1,6 @@
+---
+sudo_group: systems
+nagios_home: "/var/lib/nagios"
+nvidia_version: "450.51.06"
+syslog_server: "{{ sqlnode }}"
+
diff --git a/CICD/vars/c7packages.yml b/CICD/vars/c7packages.yml
deleted file mode 100644
index eb58fc7a905c2b10a04d5dce9d029be7c47862e9..0000000000000000000000000000000000000000
--- a/CICD/vars/c7packages.yml
+++ /dev/null
@@ -1,1742 +0,0 @@
----
-
-#this file contains three variables:
-# - extra_packages_epel
-# - exptra_packages
-# - excludes
-# please try to give hints on why packets have been added to this list.
-
-extra_packages_epel:
- - python-progressbar
- - python-requestbuilder
- - python-ecdsa
- # packages for mate desktop
- - mate-notification-daemon
- - pkcs11-helper
- - pluma
- - caja-sendto
- - mate-applets
- - djvulibre-libs
- - mathjax-winchrome-fonts
- - mate-system-monitor
- - mathjax-ams-fonts
- - mate-icon-theme
- - mate-dictionary
- - mate-desktop
- - mate-terminal
- - mate-calc
- - lightdm-gobject
- - xl2tpd
- - mate-control-center-filesystem
- - mathjax
- - mathjax-size2-fonts
- - mathjax-main-fonts
- - libmateweather-data
- - wxBase
- - wxGTK
- - atril-caja
- - web-assets-filesystem
- - pyxdg
- - fortune-mod
- - atril
- - p7zip-plugins
- - filezilla
- - openconnect
- - mate-user-guide
- - mate-settings-daemon
- - transmission-gtk
- - polkit-gnome
- - mate-menus-libs
- - simple-scan
- - libmatemixer
- - mate-screenshot
- - libmateweather
- - p7zip
- - mate-disk-usage-analyzer
- - mate-menus-preferences-category-menu
- - lightdm
- - marco
- - mathjax-script-fonts
- - caja-extensions-common
- - atril-libs
- - gparted
- - gtk2-engines
- - libmatekbd
- - lightdm-gtk-common
- - wxGTK
- - mate-session-manager
- - NetworkManager-openvpn
- - mathjax-sansserif-fonts
- - mate-desktop-libs
- - lz4
- - NetworkManager-vpnc-gnome
- - openvpn
- - yumex
- - libnatpmp
- - mate-system-log
- - mathjax-caligraphic-fonts
- - unique
- - mate-control-center
- - vpnc
- - mate-panel
- - mate-themes
- - NetworkManager-l2tp
- - NetworkManager-openconnect
- - mate-utils-common
- - mathjax-size1-fonts
- - pygtksourceview
- - vpnc-script
- - caja
- - webkitgtk
- - stoken-libs
- - mate-panel-libs
- - engrampa
- - mathjax-size4-fonts
- - caja-extensions
- - pluma-data
- - caja-open-terminal
- - mathjax-size3-fonts
- - mozo
- - mate-polkit
- - mathjax-math-fonts
- - transmission-common
- - gtksourceview2
- - NetworkManager-vpnc
- - lightdm-gtk
- - mate-media
- - eom
- - mate-backgrounds
- - mate-menus
- - caja-schemas
- - mathjax-fraktur-fonts
- - mathjax-winie6-fonts
- - mate-screensaver
- - mathjax-typewriter-fonts
- - libwnck
- - caja-image-converter
- - gtk-murrine-engine
- - NetworkManager-pptp
- - mate-search-tool
- - mate-power-manager
-
-extra_packages:
- - '@Development tools'
- - abattis-cantarell-fonts
- - abrt
- - abrt-addon-ccpp
- - abrt-addon-kerneloops
- - abrt-addon-pstoreoops
- - abrt-addon-python
- - abrt-addon-vmcore
- - abrt-addon-xorg
- - abrt-cli
- - abrt-console-notification
- - abrt-dbus
- - abrt-desktop
- - abrt-gui
- - abrt-gui-libs
- - abrt-java-connector
- - abrt-libs
- - abrt-python
- - abrt-retrace-client
- - abrt-tui
- - accountsservice
- - accountsservice-libs
- - acpid
- - adcli
- - adwaita-cursor-theme
- - adwaita-gtk2-theme
- - adwaita-icon-theme
- - aic94xx-firmware
- - akonadi
- - akonadi-mysql
- - alsa-firmware
- - alsa-lib
- - alsa-plugins-pulseaudio
- - alsa-tools-firmware
- - alsa-utils
- - anaconda-core
- - anaconda-gui
- - anaconda-tui
- - anaconda-widgets
- - appstream-data
- - apr
- - apr-util
- - ark
- - ark-libs
- - at
- - atk
- - atkmm
- - atlas
- - atop
- - at-spi2-atk
- - at-spi2-core
- - attica
- - attr
- - audit-libs
- - augeas-libs
- - autoconf
- - autocorr-en
- - autofs
- - automake
- - avahi
- - avahi-autoipd
- - avahi-glib
- - avahi-gobject
- - avahi-libs
- - avahi-ui-gtk3
- - baobab
- - basesystem
- - bash-completion
- - bc
- - bind-libs-lite
- - bind-license
- - binutils
- - binutils-devel
- - bison
- - blas
- - blas-devel
- - blktrace
- - bluedevil
- - bluez
- - bluez-libs
- - boost
- - boost-atomic
- - boost-chrono
- - boost-context
- - boost-date-time
- - boost-filesystem
- - boost-graph
- - boost-iostreams
- - boost-locale
- - boost-math
- - boost-program-options
- - boost-python
- - boost-random
- - boost-regex
- - boost-serialization
- - boost-signals
- - boost-system
- - boost-test
- - boost-thread
- - boost-timer
- - boost-wave
- - brasero
- - brasero-libs
- - bridge-utils
- - brlapi
- - brltty
- - byacc
- - bzip2-devel
- - ca-certificates
- - cairo
- - cairo-devel
- - cairo-gobject
- - cairo-tools
- - cairomm
- - c-ares
- - caribou
- - caribou-gtk2-module
- - caribou-gtk3-module
- - cdparanoia
- - cdparanoia-libs
- - cdrdao
- - celt051
- - centos-indexhtml
- - centos-logos
- - certmonger
- - cgdcbxd
- - check
- - cheese
- - cheese-libs
- - chrony
- - cifs-utils
- - cjkuni-uming-fonts
- - cloud-utils
- - cloud-utils-growpart
- - clucene-contribs-lib
- - clucene-core
- - clutter
- - clutter-gst2
- - clutter-gtk
- - cogl
- - colord
- - colord-gtk
- - colord-kde
- - colord-libs
- - color-filesystem
- - compat-libcogl12
- - compat-libcogl-pango12
- - compat-libcolord1
- - compat-poppler022
- - compat-poppler022-qt
- - control-center
- - control-center-filesystem
- - cpio
- - cpp
- - cracklib-dicts
- - crash
- - crda
- - createrepo
- - cronie-anacron
- - crontabs
- - cryptsetup
- - cryptsetup-python
- - cscope
- - ctags
- - cups
- - cups-client
- - cups-filesystem
- - cups-filters
- - cups-filters-libs
- - cups-libs
- - cups-pk-helper
- - cyrus-sasl
- - cyrus-sasl-gssapi
- - cyrus-sasl-md5
- - cyrus-sasl-plain
- - cyrus-sasl-scram
- - dbus-glib
- - dbusmenu-qt
- - dbus-x11
- - dconf
- - dconf-editor
- - dejagnu
- - dejavu-fonts-common
- - dejavu-sans-fonts
- - dejavu-sans-mono-fonts
- - dejavu-serif-fonts
- - deltarpm
- - desktop-file-utils
- - device-mapper-event
- - device-mapper-event-libs
- - device-mapper-multipath
- - device-mapper-multipath-libs
- - device-mapper-persistent-data
- - dhcp-common
- - diffstat
- - dleyna-connector-dbus
- - dleyna-core
- - dleyna-server
- - dmraid
- - dmraid-events
- - dnsmasq
- - docbook-dtds
- - docbook-style-xsl
- - dosfstools
- - dotconf
- - doxygen
- - dracut-config-rescue
- - dvd+rw-tools
- - dwz
- - dyninst
- - e2fsprogs-libs
- - ebtables
- - elfutils
- - elfutils-libs
- - emacs-filesystem
- - emacs
- - emacs-common
- - empathy
- - enchant
- - enscript
- - environment-modules
- - eog
- - espeak
- - euca2ools
- - evince
- - evince-libs
- - evince-nautilus
- - evolution-data-server
- - exempi
- - exiv2-libs
- - expat-devel
- - expect
- - fail2ban-sendmail
- - fail2ban-server
- - farstream
- - farstream02
- - fcoe-utils
- - festival
- - festival-freebsoft-utils
- - festival-lib
- - festival-speechtools-libs
- - festvox-slt-arctic-hts
- - file-libs
- - file-roller
- - file-roller-nautilus
- - findutils
- - fipscheck-lib
- - firefox
- - firewall-config
- - firstboot
- - flac-libs
- - flex
- - flite
- - fltk
- - fltk-devel
- - fltk-fluid
- - folks
- - fontawesome-fonts
- - fontawesome-fonts-web
- - fontconfig
- - fontconfig-devel
- - fontpackages-filesystem
- - fprintd
- - fprintd-pam
- - freeglut
- - freeglut-devel
- - freerdp-libs
- - freetype-devel
- - frei0r-plugins
- - fros
- - fuse
- - fuse-libs
- - fxload
- - gamin
- - gavl
- - gcc
- - gcc-c++
- - gcc-gfortran
- - GConf2
- - gcr
- - gd
- - gd-devel
- - gdb
- - gdbm-devel
- - gdisk
- - gdk-pixbuf2
- - gdm
- - gedit
- - genisoimage
- - geoclue2
- - geocode-glib
- - gettext-common-devel
- - gettext-devel
- - ghostscript
- - ghostscript-cups
- - ghostscript-fonts
- - giflib
- - git
- - gjs
- - gl2ps
- - glade-libs
- - glibc
- - glibc-devel
- - glibc-headers
- - glibmm24
- - glib-networking
- - gl-manpages
- - glx-utils
- - gnome-abrt
- - gnome-backgrounds
- - gnome-bluetooth
- - gnome-bluetooth-libs
- - gnome-boxes
- - gnome-calculator
- - gnome-classic-session
- - gnome-clocks
- - gnome-color-manager
- - gnome-contacts
- - gnome-desktop3
- - gnome-dictionary
- - gnome-disk-utility
- - gnome-documents
- - gnome-font-viewer
- - gnome-getting-started-docs
- - gnome-icon-theme
- - gnome-icon-theme-extras
- - gnome-icon-theme-legacy
- - gnome-icon-theme-symbolic
- - gnome-initial-setup
- - gnome-keyring
- - gnome-keyring-pam
- - gnome-menus
- - gnome-online-accounts
- - gnome-online-miners
- - gnome-packagekit
- - gnome-packagekit-updater
- - gnome-python2
- - gnome-python2-canvas
- - gnome-screenshot
- - gnome-session
- - gnome-session-xsession
- - gnome-settings-daemon
- - gnome-shell
- - gnome-shell-extension-alternate-tab
- - gnome-shell-extension-apps-menu
- - gnome-shell-extension-common
- - gnome-shell-extension-launch-new-instance
- - gnome-shell-extension-places-menu
- - gnome-shell-extension-window-list
- - gnome-software
- - gnome-system-log
- - gnome-system-monitor
- - gnome-terminal
- - gnome-themes-standard
- - gnome-tweak-tool
- - gnome-user-docs
- - gnome-video-effects
- - gnome-weather
- - gnote
- - gnu-free-fonts-common
- - gnu-free-mono-fonts
- - gnu-free-sans-fonts
- - gnu-free-serif-fonts
- - gnutls
- - gnutls-dane
- - gnutls-utils
- - gom
- - google-crosextra-caladea-fonts
- - google-crosextra-carlito-fonts
- - gperftools-libs
- - gpm-libs
- - graphite2
- - grilo
- - grilo-plugins
- - grub2
- - grubby
- - gsettings-desktop-schemas
- - gsl
- - gsm
- - gssdp
- - gssproxy
- - gstreamer
- - gstreamer1
- - gstreamer1-plugins-bad-free
- - gstreamer1-plugins-base
- - gstreamer1-plugins-good
- - gstreamer-plugins-bad-free
- - gstreamer-plugins-base
- - gstreamer-plugins-good
- - gstreamer-tools
- - gtk2
- - gtk2-devel
- - gtk2-immodule-xim
- - gtk3
- - gtk3-immodule-xim
- - gtkmm24
- - gtkmm30
- - gtksourceview3
- - gtkspell3
- - gtk-vnc2
- - gucharmap
- - gupnp
- - gupnp-av
- - gupnp-dlna
- - gupnp-igd
- - gutenprint
- - gutenprint-cups
- - gvfs
- - gvfs-afc
- - gvfs-afp
- - gvfs-archive
- - gvfs-fuse
- - gvfs-goa
- - gvfs-gphoto2
- - gvfs-mtp
- - gvfs-smb
- - gvnc
- - gwenview
- - gwenview-libs
- - h5py
- - harfbuzz
- - harfbuzz-icu
- - hdf
- - hdf5
- - heat-cfntools
- - hesiod
- - hicolor-icon-theme
- - hpijs
- - hplip-common
- - hplip-libs
- - htop
- - hunspell
- - hunspell-en
- - hunspell-en-GB
- - hunspell-en-US
- - hwloc
- - hwloc-devel
- - hwloc-libs
- - hyperv-daemons
- - hyperv-daemons-license
- - hypervfcopyd
- - hypervkvpd
- - hypervvssd
- - hyphen
- - hyphen-en
- - ibus
- - ibus-chewing
- - ibus-gtk2
- - ibus-gtk3
- - ibus-hangul
- - ibus-kkc
- - ibus-libpinyin
- - ibus-libs
- - ibus-m17n
- - ibus-rawcode
- - ibus-sayura
- - ibus-setup
- - ibus-table
- - ibus-table-chinese
- - icedax
- - icedtea-web
- - icoutils
- - ilmbase
- - ImageMagick
- - imake
- - imsettings
- - imsettings-gsettings
- - imsettings-libs
- - indent
- - initial-setup
- - initial-setup-gui
- - intltool
- - iotop
- - iprutils
- - ipset-libs
- - iptraf-ng
- - ipxe-roms-qemu
- - iscsi-initiator-utils
- - iscsi-initiator-utils-iscsiuio
- - iso-codes
- - isomd5sum
- - ivtv-firmware
- - iw
- - iwl1000-firmware
- - iwl100-firmware
- - iwl105-firmware
- - iwl135-firmware
- - iwl2000-firmware
- - iwl2030-firmware
- - iwl3160-firmware
- - iwl3945-firmware
- - iwl4965-firmware
- - iwl5000-firmware
- - iwl5150-firmware
- - iwl6000-firmware
- - iwl6000g2a-firmware
- - iwl6000g2b-firmware
- - iwl6050-firmware
- - iwl7260-firmware
- - iwl7265-firmware
- - jasper-libs
- - java-1.7.0-openjdk-devel
- - java-1.8.0-openjdk-devel
- - javapackages-tools
- - jbigkit-libs
- - jline
- - jomolhari-fonts
- - js-highlight
- - js-highlight-styles
- - js-marked
- - json-glib
- - jsoncpp
- - kaccessible
- - kaccessible-libs
- - kactivities
- - kamera
- - kate-part
- - kbd-legacy
- - kbd-misc
- - kcalc
- - kcharselect
- - kcm_colors
- - kcm-gtk
- - kcm_touchpad
- - kcolorchooser
- - kdeaccessibility
- - kdeadmin
- - kde-baseapps
- - kde-baseapps-libs
- - kde-base-artwork
- - kde-filesystem
- - kdegraphics-strigi-analyzer
- - kdegraphics-thumbnailers
- - kdelibs
- - kdelibs-common
- - kdelibs-ktexteditor
- - kdenetwork-common
- - kdenetwork-kdnssd
- - kdenetwork-kget
- - kdenetwork-kget-libs
- - kdenetwork-krfb
- - kdenetwork-krfb-libs
- - kdepim
- - kdepimlibs
- - kdepim-libs
- - kdepimlibs-akonadi
- - kdepimlibs-kxmlrpcclient
- - kdepim-runtime
- - kdepim-runtime-libs
- - kdeplasma-addons
- - kdeplasma-addons-libs
- - kde-plasma-networkmanagement
- - kde-plasma-networkmanagement-libs
- - kde-print-manager
- - kde-runtime
- - kde-runtime-drkonqi
- - kde-runtime-libs
- - kde-settings
- - kde-settings-ksplash
- - kde-settings-plasma
- - kde-settings-pulseaudio
- - kde-style-oxygen
- - kdeutils-minimal
- - kde-wallpapers
- - kde-workspace
- - kde-workspace-libs
- - kdf
- - kernel-devel
- - kernel-headers
- - kernel-tools-libs
- - keybinder3
- - keyutils
- - keyutils-libs-devel
- - kgpg
- - kgreeter-plugins
- - khmeros-base-fonts
- - khmeros-fonts-common
- - khotkeys
- - khotkeys-libs
- - kinfocenter
- - kmag
- - kmenuedit
- - kmix
- - kmod-libs
- - konsole
- - konsole-part
- - kpatch
- - krb5-devel
- - krb5-workstation
- - kruler
- - ksaneplugin
- - kscreen
- - ksnapshot
- - ksshaskpass
- - ksysguard
- - ksysguardd
- - ksysguard-libs
- - ktimer
- - kwallet
- - kwin
- - kwin-libs
- - kwrite
- - langtable
- - langtable-data
- - langtable-python
- - lapack
- - lapack-devel
- - lcms2
- - ldns
- - ledmon
- - lftp
- - libabw
- - libaio
- - libao
- - libappstream-glib
- - libarchive
- - libart_lgpl
- - libasyncns
- - libatasmart
- - libavc1394
- - libbasicobjects
- - libbluedevil
- - libbluray
- - libburn
- - libcacard
- - libcanberra
- - libcanberra-gtk2
- - libcanberra-gtk3
- - libcap-ng
- - libcdio
- - libcdio-paranoia
- - libcdr
- - libcgroup-tools
- - libchamplain
- - libchamplain-gtk
- - libchewing
- - libcmis
- - libcollection
- - libcom_err-devel
- - libconfig
- - libcurl
- - libcurl-devel
- - libdb
- - libdb-devel
- - libdhash
- - libdmapsharing
- - libdmx
- - libdnet
- - libdrm
- - libdrm-devel
- - libdv
- - libdvdnav
- - libdvdread
- - libdwarf
- - libepoxy
- - liberation-fonts-common
- - liberation-mono-fonts
- - liberation-sans-fonts
- - liberation-serif-fonts
- - libetonyek
- - libevdev
- - libevent
- - libevent-devel
- - libexif
- - libexttextcat
- - libfontenc
- - libfprint
- - libfreehand
- - libgcrypt
- - libgdata
- - libgdither
- - libgee
- - libgee06
- - libgfortran
- - libglade2
- - libGLEW
- - libgnomecanvas
- - libgnomekbd
- - libgnome-keyring
- - libgovirt
- - libgphoto2
- - libgsf
- - libgtop2
- - libgudev1
- - libgusb
- - libgweather
- - libgxps
- - libhangul
- - libhbaapi
- - libhbalinux
- - libibverbs
- - libical
- - libICE
- - libICE-devel
- - libicu
- - libiec61883
- - libieee1284
- - libimobiledevice
- - libini_config
- - libiodbc
- - libipa_hbac
- - libiptcdata
- - libiscsi
- - libisofs
- - libjpeg-turbo
- - libjpeg-turbo-devel
- - libkdcraw
- - libkexiv2
- - libkipi
- - libkkc
- - libkkc-common
- - libkkc-data
- - libksane
- - libkscreen
- - libkworkspace
- - liblangtag
- - libldb
- - liblouis
- - liblouis-python
- - liblzf
- - libmbim
- - libmediaart
- - libmng
- - libmodman
- - libmpc
- - libmpcdec
- - libmspack
- - libmspub
- - libmtp
- - libmusicbrainz5
- - libmwaw
- - libmx
- - libnetfilter_conntrack
- - libnfsidmap
- - libnice
- - libnl
- - libnl3-cli
- - libnm-gtk
- - libnotify
- - libntlm
- - liboauth
- - libodfgen
- - libofa
- - libogg
- - liborcus
- - libosinfo
- - libpath_utils
- - libpcap
- - libpciaccess
- - libpciaccess-devel
- - libpeas
- - libpinyin
- - libpinyin-data
- - libplist
- - libpng12
- - libpng-devel
- - libproxy-mozjs
- - libpurple
- - libqmi
- - libquadmath
- - libquadmath-devel
- - librados2
- - libraw1394
- - librbd1
- - librdmacm
- - libref_array
- - libreoffice-calc
- - libreoffice-core
- - libreoffice-draw
- - libreoffice-graphicfilter
- - libreoffice-impress
- - libreoffice-opensymbol-fonts
- - libreoffice-pdfimport
- - libreoffice-pyuno
- - libreoffice-ure
- - libreoffice-writer
- - libreport
- - libreport-anaconda
- - libreport-centos
- - libreport-cli
- - libreport-filesystem
- - libreport-gtk
- - libreport-plugin-bugzilla
- - libreport-plugin-mailx
- - libreport-plugin-mantisbt
- - libreport-plugin-reportuploader
- - libreport-plugin-rhtsupport
- - libreport-plugin-ureport
- - libreport-python
- - libreport-rhel-anaconda-bugzilla
- - libreport-web
- - libreswan
- - librevenge
- - librsvg2
- - libsamplerate
- - libsane-hpaio
- - libsecret
- - libselinux-devel
- - libselinux-utils
- - libsemanage-python
- - libsepol-devel
- - libsexy
- - libshout
- - libsigc++20
- - libSM
- - libsmbclient
- - libSM-devel
- - libsndfile
- - libsoup
- - libspectre
- - libsrtp
- - libssh2
- - libsss_idmap
- - libsss_nss_idmap
- - libstdc++-devel
- - libstoragemgmt
- - libstoragemgmt-python
- - libtalloc
- - libtar
- - libtdb
- - libtevent
- - libthai
- - libtheora
- - libtiff
- - libtiff-devel
- - libtimezonemap
- - libtirpc
- - libtomcrypt
- - libtommath
- - libtool
- - libtool-ltdl
- - libudisks2
- - libunwind
- - libusal
- - libusb
- - libusbx
- - libuser-python
- - libuuid
- - libuv
- - libv4l
- - libverto-devel
- - libverto-tevent
- - libvirt-client
- - libvirt-daemon
- - libvirt-daemon-config-network
- - libvirt-daemon-driver-interface
- - libvirt-daemon-driver-network
- - libvirt-daemon-driver-nodedev
- - libvirt-daemon-driver-nwfilter
- - libvirt-daemon-driver-qemu
- - libvirt-daemon-driver-secret
- - libvirt-daemon-driver-storage
- - libvirt-daemon-kvm
- - libvirt-gconfig
- - libvirt-glib
- - libvirt-gobject
- - libvisio
- - libvisual
- - libvncserver
- - libvorbis
- - libvpx
- - libwacom
- - libwacom-data
- - libwbclient
- - libwebp
- - libwmf-lite
- - libwnck3
- - libwpd
- - libwpg
- - libwps
- - libwvstreams
- - libX11
- - libX11-common
- - libX11-devel
- - libXau
- - libXau-devel
- - libXaw
- - libxcb
- - libxcb-devel
- - libXcomposite
- - libXcursor
- - libXdamage
- - libXdamage-devel
- - libXdmcp
- - libXevie
- - libXext
- - libXext-devel
- - libXfixes
- - libXfixes-devel
- - libXfont
- - libXft
- - libXft-devel
- - libXi
- - libXi-devel
- - libXinerama
- - libxkbfile
- - libxklavier
- - libxml2-devel
- - libXmu
- - libXmu-devel
- - libXpm
- - libXp
- - libXrandr
- - libXrender
- - libXrender-devel
- - libXres
- - libXScrnSaver
- - libxshmfence
- - libxshmfence-devel
- - libxslt
- - libXt
- - libXt-devel
- - libXtst
- - libXv
- - libXv-devel
- - libXvMC
- - libXxf86dga
- - libXxf86misc
- - libXxf86vm
- - libXxf86vm-devel
- - libzapojit
- - linux-firmware
- - lklug-fonts
- - lksctp-tools
- - lldpad
- - lm_sensors-libs
- - lockdev
- - lohit-assamese-fonts
- - lohit-bengali-fonts
- - lohit-devanagari-fonts
- - lohit-gujarati-fonts
- - lohit-kannada-fonts
- - lohit-malayalam-fonts
- - lohit-marathi-fonts
- - lohit-nepali-fonts
- - lohit-oriya-fonts
- - lohit-punjabi-fonts
- - lohit-tamil-fonts
- - lohit-telugu-fonts
- - lpsolve
- - lrzsz
- - lsof
- - lynx
- - lua-bitop
- - lua-devel
- - lua-filesystem
- - lua-posix
- - lvm2
- - lvm2-libs
- - lzo-minilzo
- - lzop
- - m17n-contrib
- - m17n-db
- - m17n-lib
- - m4
- - madan-fonts
- - mailcap
- - make
- - man-pages
- - man-pages-overrides
- - mariadb
- - mariadb-devel
- - mariadb-server
- - marisa
- - mathjax
- - mathjax-ams-fonts
- - mathjax-caligraphic-fonts
- - mathjax-fraktur-fonts
- - mathjax-main-fonts
- - mathjax-math-fonts
- - mathjax-sansserif-fonts
- - mathjax-script-fonts
- - mathjax-size1-fonts
- - mathjax-size2-fonts
- - mathjax-size3-fonts
- - mathjax-size4-fonts
- - mathjax-typewriter-fonts
- - mathjax-winchrome-fonts
- - mathjax-winie6-fonts
- - mdadm
- - meanwhile
- - media-player-info
- - mesa-dri-drivers
- - mesa-filesystem
- - mesa-libEGL
- - mesa-libgbm
- - mesa-libGL
- - mesa-libglapi
- - mesa-libGL-devel
- - mesa-libGLU
- - mesa-libGLU-devel
- - mesa-libxatracker
- - mesa-private-llvm
- - metacity
- - mlocate
- - mobile-broadband-provider-info
- - ModemManager
- - ModemManager-glib
- - mokutil
- - moreutils
- - mousetweaks
- - mozilla-filesystem
- - mozjs24
- - mpfr
- - mtdev
- - mtools
- - mtr
- - muParser
- - mutter
- - mxml
- - mythes
- - nasm
- - nautilus
- - nautilus-extensions
- - nautilus-sendto
- - ncdu
- - ncompress
- - ncurses-base
- - ncurses-devel
- - neon
- - nepomuk-core
- - nepomuk-core-libs
- - nepomuk-widgets
- - netcf-libs
- - net-snmp-libs
- - net-tools
- - NetworkManager-adsl
- - network-manager-applet
- - NetworkManager-bluetooth
- - NetworkManager-glib
- - NetworkManager-libreswan
- - NetworkManager-libreswan-gnome
- - NetworkManager-team
- - NetworkManager-wifi
- - NetworkManager-wwan
- - newt-python
- - nfs4-acl-tools
- - nfs-utils
- - nhn-nanum-fonts-common
- - nhn-nanum-gothic-fonts
- - nmap
- - nmap-ncat
- - nm-connection-editor
- - nodejs
- - nodejs-requirejs
- - nodejs-underscore
- - npm
- - nss
- - nss-softokn-freebl
- - nss-tools
- - ntp
- - ntsysv
- - numad
- - numpy
- - numpy-f2py
- - OCE-draw
- - OCE-foundation
- - OCE-modeling
- - OCE-ocaf
- - OCE-visualization
- - oddjob
- - oddjob-mkhomedir
- - okular
- - okular-libs
- - okular-part
- - opencc
- - opencv
- - opencv-devel
- - opencv-python
- - OpenEXR-libs
- - openjpeg-libs
- - openldap-clients
- - openpgm
- - open-sans-fonts
- - openssh-askpass
- - openssh-server
- - openssl-devel
- - open-vm-tools
- - open-vm-tools-desktop
- - opus
- - orc
- - orca
- - overpass-fonts
- - oxygen-gtk
- - oxygen-gtk2
- - oxygen-gtk3
- - oxygen-icon-theme
- - papi
- - p11-kit-trust
- - PackageKit
- - PackageKit-command-not-found
- - PackageKit-glib
- - PackageKit-gstreamer-plugin
- - PackageKit-gtk3-module
- - PackageKit-yum
- - paktype-naskh-basic-fonts
- - pam-devel
- - pam_krb5
- - pango
- - pango-devel
- - pangomm
- - paps
- - paps-libs
- - paratype-pt-sans-fonts
- - passwd
- - patch
- - patchutils
- - pciutils-libs
- - pcre-devel
- - pcsc-lite-libs
- - perl
- - perl-Business-ISBN
- - perl-Business-ISBN-Data
- - perl-Carp
- - perl-Compress-Raw-Bzip2
- - perl-Compress-Raw-Zlib
- - perl-constant
- - perl-Data-Dumper
- - perl-DBD-MySQL
- - perl-DBI
- - perl-devel
- - perl-Digest
- - perl-Digest-MD5
- - perl-Encode
- - perl-Encode-Locale
- - perl-Env
- - perl-Error
- - perl-Exporter
- - perl-ExtUtils-Install
- - perl-ExtUtils-MakeMaker
- - perl-ExtUtils-Manifest
- - perl-ExtUtils-ParseXS
- - perl-File-Listing
- - perl-File-Path
- - perl-File-Temp
- - perl-Filter
- - perl-Getopt-Long
- - perl-Git
- - perl-HTML-Parser
- - perl-HTML-Tagset
- - perl-HTTP-Cookies
- - perl-HTTP-Daemon
- - perl-HTTP-Date
- - perl-HTTP-Message
- - perl-HTTP-Negotiate
- - perl-HTTP-Tiny
- - perl-IO-Compress
- - perl-IO-HTML
- - perl-IO-Socket-IP
- - perl-IO-Socket-SSL
- - perl-libs
- - perl-libwww-perl
- - perl-LWP-MediaTypes
- - perl-macros
- - perl-Net-Daemon
- - perl-Net-HTTP
- - perl-Net-LibIDN
- - perl-Net-SSLeay
- - perl-parent
- - perl-PathTools
- - perl-PlRPC
- - perl-Pod-Escapes
- - perl-podlators
- - perl-Pod-Perldoc
- - perl-Pod-Simple
- - perl-Pod-Usage
- - perl-Scalar-List-Utils
- - perl-Socket
- - perl-srpm-macros
- - perl-Storable
- - perl-TermReadKey
- - perl-Test-Harness
- - perl-Text-ParseWords
- - perl-Thread-Queue
- - perl-threads
- - perl-threads-shared
- - perl-TimeDate
- - perl-Time-HiRes
- - perl-Time-Local
- - perl-URI
- - perl-WWW-RobotRules
- - perl-XML-Parser
- - pexpect
- - phonon
- - phonon-backend-gstreamer
- - pinentry-gtk
- - pinentry-qt
- - pinfo
- - pixman
- - plasma-scriptengine-python
- - plymouth
- - plymouth-core-libs
- - plymouth-graphics-libs
- - plymouth-plugin-label
- - plymouth-plugin-two-step
- - plymouth-scripts
- - plymouth-system-theme
- - plymouth-theme-charge
- - pm-utils
- - pnm2ppa
- - poco-crypto
- - poco-data
- - poco-foundation
- - poco-json
- - poco-mysql
- - poco-net
- - poco-netssl
- - poco-odbc
- - poco-sqlite
- - poco-util
- - poco-xml
- - poco-zip
- - policycoreutils-python
- - polkit-kde
- - polkit-qt
- - poppler
- - poppler-data
- - poppler-glib
- - poppler-utils
- - postfix
- - postgresql-libs
- - ppp
- - pptp
- - psacct
- - psmisc
- - pulseaudio
- - pulseaudio-gdm-hooks
- - pulseaudio-libs
- - pulseaudio-libs-glib2
- - pulseaudio-module-bluetooth
- - pulseaudio-module-x11
- - pulseaudio-utils
- - pyatspi
- - pycairo
- - pygobject2
- - pygobject3
- - pygobject3-base
- - pygtk2
- - pygtk2-libglade
- - pykde4
- - pykickstart
- - pyOpenSSL
- - pyparsing
- - pyparted
- - PyQt4
- - pytalloc
- - python2-boto
- - python2-crypto
- - python-pip
- - python2-pyasn1
- - python2-rsa
- - python-augeas
- - python-babel
- - python-backports-ssl_match_hostname
- - python-beaker
- - python-blivet
- - python-brlapi
- - python-caribou
- - python-cffi
- - python-chardet
- - python-cheetah
- - python-configobj
- - python-configshell
- - python-coverage
- - python-cryptography
- - python-cups
- - python-dateutil
- - python-decorator
- - python-deltarpm
- - python-devel
- - python-di
- - python-dmidecode
- - python-dns
- - python-enum34
- - python-ethtool
- - python-iniparse
- - python-inotify
- - python-IPy
- - python-javapackages
- - python-jinja2
- - python-jsonpatch
- - python-jsonpointer
- - python-jsonschema
- - python-kerberos
- - python-kitchen
- - python-kmod
- - python-krbV
- - python-ldap
- - python-libipa_hbac
- - python-lxml
- - python-mako
- - python-markdown
- - python-markupsafe
- - python-meh
- - python-meh-gui
- - python-mistune
- - python-netaddr
- - python-nose
- - python-nss
- - python-ntplib
- - python-paste
- - python-path
- - python-pillow
- - python-ply
- - python-prettytable
- - python-psutil
- - python-pwquality
- - python-pyblock
- - python-pycparser
- - python-pygments
- - python-pyudev
- - python-qrcode-core
- - python-requests
- - python-rtslib
- - python-setuptools
- - python-simplegeneric
- - python-six
- - python-slip
- - python-slip-dbus
- - python-smbc
- - python-sssdconfig
- - python-sss-murmur
- - python-tempita
- - python-urlgrabber
- - python-urllib3
- - python-urwid
- - python-yubico
- - python-zmq
- - pytz
- - pyusb
- - PyYAML
- - qca2
- - qemu-img
- - qemu-kvm
- - qemu-kvm-common
- - qhull
- - qimageblitz
- - qjson
- - qpdf-libs
- - qscintilla
- - qt
- - qt3
- - qt-mysql
- - qt-settings
- - qt-x11
- - qt-devel
- - qtwebkit
- - quota
- - quota-nls
- - radvd
- - raptor2
- - rarian
- - rarian-compat
- - rasqal
- - rcs
- - rdate
- - readline-devel
- - realmd
- - recode
- - redhat-menus
- - redhat-rpm-config
- - redland
- - redland-virtuoso
- - rest
- - rfkill
- - rhino
- - rhythmbox
- - rng-tools
- - rootfiles
- - rpcbind
- - rpm-build
- - rpm-libs
- - rpm-sign
- - rsyslog
- - rsyslog-mmjsonparse
- - rtkit
- - ruby
- - rubygem-bigdecimal
- - rubygem-io-console
- - rubygem-json
- - rubygem-psych
- - rubygem-rdoc
- - rubygems
- - ruby-irb
- - ruby-libs
- - samba-client
- - samba-client-libs
- - samba-common
- - samba-common-libs
- - samba-common-tools
- - samba-libs
- - sane-backends
- - sane-backends-drivers-scanners
- - sane-backends-libs
- - satyr
- - sbc
- - scipy
- - scl-utils
- - screen
- - SDL
- - seabios-bin
- - seahorse
- - seavgabios-bin
- - selinux-policy
- - selinux-policy-targeted
- - setroubleshoot
- - setroubleshoot-plugins
- - setroubleshoot-server
- - setserial
- - setup
- - setuptool
- - sgabios-bin
- - sgml-common
- - sgpio
- - shared-desktop-ontologies
- - sil-abyssinica-fonts
- - sil-nuosu-fonts
- - sil-padauk-fonts
- - sip
- - skkdic
- - smartmontools
- - smc-fonts-common
- - smc-meera-fonts
- - soprano
- - sos
- - sound-theme-freedesktop
- - soundtouch
- - sox
- - speech-dispatcher
- - speech-dispatcher-python
- - speex
- - spice-glib
- - spice-gtk3
- - spice-server
- - spice-vdagent
- - sqlite-devel
- - sssd
- - sssd-ad
- - sssd-client
- - sssd-common
- - sssd-common-pac
- - sssd-ipa
- - sssd-krb5
- - sssd-krb5-common
- - sssd-ldap
- - sssd-proxy
- - startup-notification
- - stix-fonts
- - strace
- - strigi-libs
- - subversion
- - subversion-libs
- - suitesparse
- - sushi
- - sweeper
- - swig
- - sysstat
- - system-config-date
- - system-config-date-docs
- - system-config-language
- - system-config-printer
- - system-config-printer-libs
- - system-config-printer-udev
- - system-config-users
- - system-config-users-docs
- - systemd-libs
- - systemd-sysv
- - systemtap
- - systemtap-client
- - systemtap-devel
- - systemtap-runtime
- - systemtap-sdt-devel
- - t1lib
- - taglib
- - tagsoup
- - targetcli
- - tcl
- - tcl-devel
- - tcpdump
- - tcp_wrappers
- - tcsh
- - telepathy-farstream
- - telepathy-filesystem
- - telepathy-gabble
- - telepathy-glib
- - telepathy-haze
- - telepathy-logger
- - telepathy-mission-control
- - telepathy-salut
- - texinfo
- - texlive
- - texlive-base
- - texlive-dvipng
- - texlive-dvipng-bin
- - texlive-kpathsea
- - texlive-kpathsea-bin
- - texlive-kpathsea-lib
- - texlive-pdftex
- - texlive-kpathsea-lib
- - thai-scalable-fonts-common
- - thai-scalable-waree-fonts
- - tigervnc-license
- - tigervnc-server
- - tigervnc-server-minimal
- - time
- - tix
- - tk
- - tk-devel
- - tkinter
- - tmux
- - totem
- - totem-nautilus
- - totem-pl-parser
- - traceroute
- - tracker
- - tree
- - ttmkfdir
- - tuned
- - tzdata
- - tzdata-java
- - ucs-miscfixed-fonts
- - udisks2
- - unbound-libs
- - unoconv
- - unzip
- - upower
- - urw-fonts
- - usb_modeswitch
- - usb_modeswitch-data
- - usbredir
- - usbutils
- - usermode
- - usermode-gtk
- - util-linux
- - vim-common
- - vim-enhanced
- - vim-filesystem
- - vinagre
- - vino
- - virtuoso-opensource
- - vlgothic-fonts
- - vorbis-tools
- - vte291
- - vte-profile
- - wavpack
- - web-assets-filesystem
- - webkitgtk3
- - webrtc-audio-processing
- - which
- - wodim
- - words
- - wqy-microhei-fonts
- - wqy-zenhei-fonts
- - wvdial
- - xcb-util
- - xcb-util-image
- - xcb-util-keysyms
- - xchat
- - xdg-user-dirs
- - xdg-user-dirs-gtk
- - xdg-utils
- - xfsdump
- - xkeyboard-config
- - xml-common
- - xmlrpc-c
- - xmlrpc-c-client
- - xorg-x11-apps
- - xorg-x11-drivers
- - xorg-x11-drv-ati
- - xorg-x11-drv-dummy
- - xorg-x11-drv-evdev
- - xorg-x11-drv-fbdev
- - xorg-x11-drv-intel
- - xorg-x11-drv-nouveau
- - xorg-x11-drv-qxl
- - xorg-x11-drv-synaptics
- - xorg-x11-drv-v4l
- - xorg-x11-drv-vesa
- - xorg-x11-drv-vmmouse
- - xorg-x11-drv-vmware
- - xorg-x11-drv-void
- - xorg-x11-drv-wacom
- - xorg-x11-fonts-misc
- - xorg-x11-fonts-Type1
- - xorg-x11-font-utils
- - xorg-x11-proto-devel
- - xorg-x11-server-common
- - xorg-x11-server-utils
- - xorg-x11-server-Xorg
- - xorg-x11-util-macros
- - xorg-x11-utils
- - xorg-x11-xauth
- - xorg-x11-xinit
- - xorg-x11-xkb-utils
- - xsettings-kde
- - xterm
- - xvattr
- - xz-devel
- - yajl
- - yelp
- - yelp-libs
- - yelp-xsl
- - yum
- - yum-langpacks
- - yum-plugin-fastestmirror
- - yum-utils
- - zenity
- - zeromq3
- - zip
- - zlib-devel
- - zsh
- - wxPython
- - hdf5-devel
- - motif
- - xz-compat-libs
- - gstreamer1-devel
- - gstreamer1-plugins-base-devel
-
-excludes:
- - thispackagedoesntexistbutansibledoesntlikeemptylists
diff --git a/CICD/vars/filesystems.yml b/CICD/vars/filesystems.yml
deleted file mode 100644
index 268b6f1099838a03ffe404941397f9e8a0ccade3..0000000000000000000000000000000000000000
--- a/CICD/vars/filesystems.yml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-computeNfsMounts:
-  - { name: '/home', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/home", 'opts': 'defaults,nofail', 'fstype':'nfs4' }
-  - { name: '/usr/local', ipv4: "118.138.235.55", src: "/usr_local", 'opts': 'defaults,rw,nofail', 'fstype':'nfs4' }
-  - { name: '/projects', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/projects", 'opts': 'defaults,rw,nofail', 'fstype':'nfs4' }
-  - { name: '/scratch', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/scratch", 'opts': 'defaults,rw,nofail', 'fstype':'nfs4' }
-mgmtNfsMounts:
-  - { name: '/mnt/home', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/home", 'opts': 'defaults,nofail', 'fstype':'nfs4' }
-  - { name: '/slurmstate', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/slurmstate", 'opts': 'defaults,nofail', 'fstype':'nfs4' }
-dbvolumes:
-  - { fstype: 'ext4', name: 'dbvol', mntpt: '/dbvol', linkto: '/var/lib/mysql' }
-nfsvolumes:
-  - { fstype: 'ext4', name: 'nfsvol', mntpt: '/nfsvol' }
-  - { fstype: 'ext4', name: 'slurmstate', mntpt: '/slurmstate' }
-exportList:
-  - { name: '/home', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/home", 'opts': 'defaults,nofail', 'fstype':'nfs4' }
-  - { name: '/usr/local', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/usr_local_centos7", 'opts': 'defaults,rw,nofail', 'fstype':'nfs4' }
-  - { name: '/projects', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/projects", 'opts': 'defaults,rw,nofail', 'fstype':'nfs4' }
-  - { name: '/scratch', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/nfsvol/scratch", 'opts': 'defaults,rw,nofail', 'fstype':'nfs4' }
-  - { name: '/slurmstate', ipv4: "{{ groups['NFSNodes'][0] }}", src: "/slurmstate", 'opts': 'defaults,rw,nofail', 'fstype':'nfs4' }
-
diff --git a/CICD/vars/ldapConfig.yml b/CICD/vars/ldapConfig.yml
deleted file mode 100644
index 1e691c69912f28fceaad701203b88a002d2f4ade..0000000000000000000000000000000000000000
--- a/CICD/vars/ldapConfig.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-#ldapServerHostIpLine: "118.138.235.140 hpcldaptest.example.com"
-ldapServerHostName: hpcldaptest.example.com
-#ldapCaCertFile: /etc/ssl/certs/cacert.crt
-#ldapDomain: "cicd.test.au"
-#ldapDomain: "dc=cicd,dc=hpccicd,dc=cloud,dc=au"
-#ldapBase: "dc=cicd,dc=test,dc=au"
-#ldapURI: "ldaps://hpcldap0.erc.monash.edu.au:636"
-#ldapROURI: "ldaps://hpcldap1.erc.monash.edu.au:636"
-#ldapBindDN: "cn=ldapuser,ou=People,dc=erc,dc=monash,dc=edu,dc=au"
-#ldapBindDNPassword: "thisisafakepassword"
-#ldapManagerDN: "cn=Manager,dc=erc,dc=monash,dc=edu,dc=au"
-#ldapBase: "dc=erc,dc=monash,dc=edu,dc=au"
-#ldapGroupBase: "ou=Groups,dc=erc,dc=monash,dc=edu,dc=au"
-#ldapRfc2307Pam: ""
-#ldap_access_filter: "(&(objectClass=posixAccount)(memberOf=cn=m3,ou=aclgroups,dc=erc,dc=monash,dc=edu,dc=au))"
-
-# variables for the server role
-#ou=aclgroups,dc=erc,dc=monash,dc=edu,dc=au
-#ldapAclGroupBase: "ou=aclgroups,{{ ldapDomain }}"
-#ldapUserBase: "ou=People,{{ ldapDomain }}"
-#ldapManager: "cn=Manager,{{ ldapDomain }}"
-#ldapBindDN: "cn=ldapuser,ou=People,{{ ldapDomain }}"
-#ldapGroupBase: "ou=Groups,{{ ldapDomain }}"
-#ldapAccountBase: "ou=Accounts,{{ ldapDomain }}"
-
-#ldapDomain: "dc=example,dc=com"
-ldapDomain: "example.com"
-#ldapBase: "dc=cicd,dc=test,dc=au"
-ldapURI: "ldap://hpcldaptest.example.com"
-ldapBindDN: "cn=read-only-admin,dc=example,dc=com"
-#ldap_access_filter: "(&(objectClass=posixAccount)(memberOf=ou=People,ou=People,dc=example,dc=com))"
-ldap_access_filter: "(&(objectClass=posixAccount))"
-useTLS: False
\ No newline at end of file
diff --git a/CICD/vars/names.yml b/CICD/vars/names.yml
deleted file mode 100644
index f3142ad8e778d6b6426f53c8af66cbd0f6fb2094..0000000000000000000000000000000000000000
--- a/CICD/vars/names.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-domain: cicd.test.au
-smtp_smarthost: smtp.monash.edu.au
diff --git a/CICD/vars/passwords.yml b/CICD/vars/passwords.yml
deleted file mode 100644
index a522c96015c86f9d71e43aedfe38d69cda8a0b80..0000000000000000000000000000000000000000
--- a/CICD/vars/passwords.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-mungekey: EXAMPLEMUNGEKEYwithpaddingfill32
-slurmdb_passwd: EXAMPLESLURMDBPASSWORD
-sqlrootPasswd: EXAMPLESQLROOTPASSWORD
-sudo_group: systems
-default_user_password_clear: EXAMPLEDEFAULTUSERPASSWORDCLEAR
-default_user_password: EXAMPLEDEFAULTUSERPASSWORD
-# the redhat passwords are also example passwords
-ldapManagerDNPassword: redhat
-ldapManagerPassword: redhat
-ldapBindDNPassword: redhat
diff --git a/CICD/vars/slurm.yml b/CICD/vars/slurm.yml
deleted file mode 100644
index 40304d6184a4432de80afe140f25d1a8005b25d8..0000000000000000000000000000000000000000
--- a/CICD/vars/slurm.yml
+++ /dev/null
@@ -1,45 +0,0 @@
----
-desktopNodeList:
-  - { name : 'DesktopNodes', interface : 'eth0' }
-clustername: "cicd"
-projectname: "cicd"
-slurm_version: 20.02.7
-munge_version: 0.5.13
-nhc_version: 1.4.2
-munge_dir: /opt/munge-{{ munge_version }}
-slurm_dir: /opt/slurm-{{ slurm_version }}
-nhc_dir: /opt/nhc-{{ nhc_version }}
-nhc_config_file: nhc.conf
-nhc_log_level: 0
-nhc_emails: nobody@nowhere.nowhere
-nhc_email_subject: "Node Health Check"
-openmpi_version: 1.8.3
-mysql_host: "{{ groups['SQLNodes'][0] }}"
-slurmctrl: "{{ groups['ManagementNodes'][0] }}"
-slurmctrlbackup: "{{ groups['ManagementNodes'][1] }}"
-slurmdbd: "{{ groups['ManagementNodes'][0] }}"
-slurmdbdpiddir: "/opt/slurm/var/run"
-slurmdbdbackup: "{{ groups['ManagementNodes'][1] }}"
-slurm_use_vpn: false
-slurm_lua: true
-slurmqueues:
-  - {name: batch, group: ComputeNodes, default: yes}
-#  - {name: vis, group: DesktopNodes, default: no}
-slurmlogin: "{{ groups['LoginNodes'][0] }}"
-slurmlogdir: "/var/log"
-slurmctlddebug: {level: 5, log: '/mnt/slurm-logs/slurmctld.log'}
-slurmddebug: {level: 5, log: '/var/log/slurmd.log'}
-slurmschedlog: {level: 5, log: '/mnt/slurm-logs/slurmsched.log'}
-slurmdbdlog: {level: 5, log: '/mnt/slurm-logs/slurmdbd.log'}
-slurmfairshare: {def: false, val: 10000}
-slurmdatadir: "/opt/slurm/var/spool"
-slurmstatedir: "/opt/slurm/var/state"
-slurmsharedstatedir: "/slurmstate"
-slurmpiddir: "/opt/slurm/var/run"
-slurmaccount_create_user: "/usr/local/sbin/slurmuseraccount.sh"
-slurm_provision: "/cinderVolume/local/sbin/slurm_provision.sh"
-slurmselecttype: "select/cons_tres"
-slurmfastschedule: "1"
-slurmschedulertype: "sched/backfill"
-restartServerList:
-  - slurm
diff --git a/CICD/vars/u18packages.yml b/CICD/vars/u18packages.yml
deleted file mode 100644
index 613f792baa135d72557fbb322c62d8a3fa79ea37..0000000000000000000000000000000000000000
--- a/CICD/vars/u18packages.yml
+++ /dev/null
@@ -1,518 +0,0 @@
-extra_packages:
- - mate-notification-daemon
- - pluma
- - caja-sendto
- - mate-applets
- - mate-system-monitor
- - mate-icon-theme
- - mate-desktop
- - mate-terminal
- - mate-calc
- - xl2tpd
- - fortune-mod
- - atril
- - filezilla
- - openconnect
- - mate-user-guide
- - mate-settings-daemon
- - transmission-gtk
- - simple-scan
- - p7zip
- - lightdm
- - marco
- - caja-extensions-common
- - gparted
- - gtk2-engines
- - libmatekbd
- - mate-session-manager
- - liblz4-1
- - liblz4-dev
- - mate-control-center
- - vpnc
- - mate-panel
- - mate-themes
- - mate-utils-common
- - caja
- - engrampa
- - caja-open-terminal
- - mozo
- - mate-polkit
- - transmission-common
- - mate-media
- - eom
- - mate-backgrounds
- - mate-menus
- - mate-screensaver
- - caja-image-converter
- - mate-power-manager
- - accountsservice
- - acl
- - acpid
- - adcli
- - adwaita-icon-theme
- - alsa-utils
- - ark
- - at
- - atop
- - at-spi2-core
- - attr
- - autoconf
- - autofs
- - automake
- - avahi-autoipd
- - baobab
- - bash
- - bash-completion
- - bc
- - binutils
- - bison
- - blktrace
- - bluedevil
- - bluez
- - brasero
- - bridge-utils
- - btrfs-progs
- - byacc
- - bzip2
- - ca-certificates
- - caribou
- - cdparanoia
- - cdrdao
- - certmonger
- - check
- - checkpolicy
- - cheese
- - chrony
- - cifs-utils
- - cloud-init
- - cloud-utils
- - colord
- - colord-kde
- - coreutils
- - cpio
- - cpp
- - crash
- - crda
- - cryptsetup
- - cscope
- - ctags
- - cups
- - cups-client
- - cups-filters
- - cups-pk-helper
- - curl
- - dbus
- - dbus-x11
- - dconf-editor
- - dejagnu
- - desktop-file-utils
- - diffstat
- - diffutils
- - dleyna-server
- - dmidecode
-# - dmraid
- - dnsmasq
- - dosfstools
- - doxygen
- - dracut
- - dracut-config-rescue
- - dracut-network
- - dwz
- - e2fsprogs
- - ebtables
- - ed
- - elfutils
- - emacs
- - emacs25-common
- - empathy
- - enchant
- - enscript
- - environment-modules
- - eog
- - espeak
- - ethtool
- - evince
- - evolution-data-server
- - exempi
- - expat
- - expect
- - fcoe-utils
- - festival
- - festival-freebsoft-utils
- - file
- - file-roller
- - findutils
- - finger
- - firefox
- - flex
- - flite
- - fontconfig
- - fprintd
- - frei0r-plugins
- - fuse
- - fxload
- - gamin
- - gawk
- - gcc
- - gconf2
- - gcr
- - gdb
- - gdisk
- - gedit
- - genisoimage
- - gettext
- - ghostscript
- - ghostscript-cups
- - git
- - gjs
- - glib-networking
- - gnome-backgrounds
- - gnome-bluetooth
- - gnome-boxes
- - gnome-calculator
- - gnome-clocks
- - gnome-color-manager
- - gnome-contacts
- - gnome-dictionary
- - gnome-disk-utility
- - gnome-documents
- - gnome-font-viewer
- - gnome-getting-started-docs
- - gnome-icon-theme
- - gnome-icon-theme-symbolic
- - gnome-initial-setup
- - gnome-keyring
- - gnome-menus
- - gnome-online-accounts
- - gnome-online-miners
- - gnome-packagekit
- - gnome-screenshot
- - gnome-session
- - gnome-settings-daemon
- - gnome-shell
- - gnome-software
- - gnome-system-log
- - gnome-system-monitor
- - gnome-terminal
- - gnome-themes-standard
- - gnome-tweak-tool
- - gnome-user-docs
- - gnome-video-effects
- - gnome-weather
- - gnote
- - gnupg2
- - gobject-introspection
- - gom
- - grep
- - groff-base
- - grub2
- - gsettings-desktop-schemas
- - gssproxy
- - gucharmap
- - gvfs
- - gvfs-fuse
- - gwenview
- - gzip
- - hardlink
- - heat-cfntools
- - hesiod
- - hicolor-icon-theme
- - hostname
- - htop
- - hunspell
- - hunspell-en-gb
- - hunspell-en-us
- - hwdata
- - hwloc
- - ibus
- - ibus-chewing
- - ibus-gtk3
- - ibus-hangul
- - ibus-kkc
- - ibus-libpinyin
- - ibus-m17n
- - ibus-table
- - icedax
- - icoutils
- - imagemagick
- - indent
- - info
- - intltool
- - iotop
- - ipset
- - iptables
- - iptraf-ng
- - irqbalance
- - iso-codes
- - isomd5sum
- - iw
- - kamera
- - kbd
- - kcalc
- - kcharselect
- - kcolorchooser
- - kdeaccessibility
- - kdeadmin
- - kde-baseapps
- - kdegraphics-thumbnailers
- - kdepim
- - kdepim-runtime
- - kdf
- - kexec-tools
- - keyutils
- - kgpg
- - khotkeys
- - kinfocenter
- - kmag
- - kmenuedit
- - kmix
- - kmod
- - konsole
- - kpartx
- - kpatch
- - kruler
- - kscreen
- - ksshaskpass
- - ksysguard
- - ksysguardd
- - ktimer
- - kwin
- - kwrite
- - ledmon
- - less
- - lftp
- - libchewing
- - libdnet
- - libiptcdata
- - libkkc-common
- - libkkc-data
- - libpinyin
- - libpinyin-data
- - librados2
- - librbd1
- - libreoffice-calc
- - libreoffice-core
- - libreoffice-draw
- - libreoffice-impress
- - libreoffice-pdfimport
- - libreoffice-writer
- - libreswan
- - libsane-hpaio
- - libsmbclient
- - libtar
- - libtool
- - libuser
- - libvirt-daemon
-# - libvirt-daemon-driver-qemu
- - libxml2
- - linux-firmware
- - lksctp-tools
- - lldpad
- - logrotate
- - lrzsz
- - lsof
- - lsscsi
- - lynx
- - lvm2
- - lzop
- - m17n-db
- - m4
-# - mailx
- - make
- - man-db
- - mariadb-server
- - marisa
- - mdadm
- - media-player-info
- - metacity
- - mlocate
- - mokutil
- - moreutils
- - mousetweaks
- - mtools
- - mtr
- - mutter
- - nano
- - nasm
- - nautilus
- - nautilus-sendto
- - ncdu
- - ncompress
- - ncurses-base
- - net-tools
- - nfs4-acl-tools
- - nmap
- - nodejs
- - ntp
- - ntpdate
- - numad
- - oce-draw
- - oddjob
- - oddjob-mkhomedir
- - okular
- - opencc
- - openssh-server
- - openssl
- - open-vm-tools
- - open-vm-tools-desktop
- - orca
- - os-prober
- - oxygen-icon-theme
- - p11-kit
- - packagekit
- - packagekit-command-not-found
- - packagekit-gtk3-module
- - paps
- - parted
- - passwd
- - patch
- - patchutils
- - pciutils
- - perl
- - pinentry-qt
- - pinfo
- - plymouth
- - pm-utils
- - policycoreutils
- - poppler-data
- - poppler-utils
- - postfix
- - ppp
- - psmisc
- - pulseaudio
- - pulseaudio-module-bluetooth
- - pulseaudio-utils
- - python
- - python-babel
- - python-cffi
- - python-chardet
- - python-cheetah
- - python-coverage
- - python-cryptography
- - python-dateutil
- - python-decorator
- - python-enum34
- - python-jinja2
- - python-lxml
- - python-mako
- - python-markdown
- - python-markupsafe
- - python-netaddr
- - python-nose
- - python-pillow
- - python-ply
- - python-psutil
- - python-pycparser
- - python-pycurl
- - python-pygments
- - python-setuptools
- - python-six
- - qemu-guest-agent
- - qemu-kvm
- - quota
- - radvd
- - rcs
- - rdate
- - realmd
- - recode
- - rfkill
- - rhino
- - rhythmbox
- - rng-tools
- - rpcbind
- - rpm
- - rsync
- - rsyslog
- - rtkit
- - ruby
- - rubygems
-# - ruby-irb
- - samba-client
- - samba-common
- - samba-libs
- - screen
- - seahorse
- - sed
- - setserial
- - shared-mime-info
- - skkdic
- - smartmontools
- - sound-theme-freedesktop
- - sox
- - speech-dispatcher
- - speex
- - spice-vdagent
- - sqlite
- - sssd
- - sssd-ad
- - sssd-common
- - sssd-ipa
- - sssd-krb5
- - sssd-krb5-common
- - sssd-ldap
- - sssd-proxy
- - strace
- - subversion
- - sudo
- - sweeper
- - swig
- - sysstat
- - system-config-printer
- - system-config-printer-udev
- - systemd
- - systemd-sysv
- - systemtap
- - systemtap-client
- - systemtap-runtime
- - tar
- - tcl
- - tcpdump
- - tcsh
- - teamd
- - telepathy-gabble
- - telepathy-logger
- - telnet
- - texinfo
- - texlive
- - texlive-base
- - time
- - tix
- - tk
- - tmux
- - totem
- - traceroute
- - tracker
- - tree
- - trousers
- - tuned
- - tzdata
- - udisks2
- - unoconv
- - unzip
- - upower
- - usbutils
- - usermode
- - util-linux
- - vim-common
- - vinagre
- - vino
- - virtuoso-opensource
- - virt-what
- - vorbis-tools
- - wavpack
- - wget
- - wodim
- - wvdial
- - xchat
- - xdg-user-dirs
- - xdg-user-dirs-gtk
- - xdg-utils
- - xfsdump
- - xfsprogs
- - xterm
- - xvattr
- - yelp
- - yelp-xsl
- - zenity
- - zip
- - zsh
diff --git a/CICD/vars/u20packages.yml b/CICD/vars/u20packages.yml
deleted file mode 100644
index 8f4fbc2ecf27bd811903975ad0edb3edaf80f59c..0000000000000000000000000000000000000000
--- a/CICD/vars/u20packages.yml
+++ /dev/null
@@ -1,517 +0,0 @@
-extra_packages:
- - mate-notification-daemon
- - pluma
- - caja-sendto
- - mate-applets
- - mate-system-monitor
- - mate-icon-theme
- - mate-desktop
- - mate-terminal
- - mate-calc
- - xl2tpd
- - fortune-mod
- - atril
- - filezilla
- - openconnect
- - mate-user-guide
- - mate-settings-daemon
- - transmission-gtk
- - simple-scan
- - p7zip
- - lightdm
- - marco
- - caja-extensions-common
- - gparted
- - gtk2-engines
- - libmatekbd
- - mate-session-manager
- - liblz4-1
- - liblz4-dev
- - mate-control-center
- - vpnc
- - mate-panel
- - mate-themes
- - mate-utils-common
- - caja
- - engrampa
- - caja-open-terminal
- - mozo
- - mate-polkit
- - transmission-common
- - mate-media
- - eom
- - mate-backgrounds
- - mate-menus
- - mate-screensaver
- - caja-image-converter
- - mate-power-manager
- - accountsservice
- - acl
- - acpid
- - adcli
- - adwaita-icon-theme
- - alsa-utils
- - ark
- - at
- - atop
- - at-spi2-core
- - attr
- - autoconf
- - autofs
- - automake
- - avahi-autoipd
- - baobab
- - bash
- - bash-completion
- - bc
- - binutils
- - bison
- - blktrace
- - bluedevil
- - bluez
- - brasero
- - bridge-utils
- - btrfs-progs
- - byacc
- - bzip2
- - ca-certificates
- - caribou
- - cdparanoia
- - cdrdao
- - certmonger
- - check
- - checkpolicy
- - cheese
- - cifs-utils
- - cloud-init
- - cloud-utils
- - colord
- - colord-kde
- - coreutils
- - cpio
- - cpp
- - crash
- - crda
- - cryptsetup
- - cscope
- - ctags
- - cups
- - cups-client
- - cups-filters
- - cups-pk-helper
- - curl
- - dbus
- - dbus-x11
- - dconf-editor
- - dejagnu
- - desktop-file-utils
- - diffstat
- - diffutils
- - dleyna-server
- - dmidecode
-# - dmraid
- - dnsmasq
- - dosfstools
- - doxygen
- - dracut
- - dracut-config-rescue
- - dracut-network
- - dwz
- - e2fsprogs
- - ebtables
- - ed
- - elfutils
- - emacs
- - emacs-common
- - empathy
- - enchant
- - enscript
- - eog
- - espeak
- - ethtool
- - evince
- - evolution-data-server
- - exempi
- - expat
- - expect
- - fcoe-utils
- - festival
- - festival-freebsoft-utils
- - file
- - file-roller
- - findutils
- - finger
- - firefox
- - flex
- - flite
- - fontconfig
- - fprintd
- - frei0r-plugins
- - fuse
- - fxload
- - gamin
- - gawk
- - gcc
- - gconf2
- - gcr
- - gdb
- - gdisk
- - gedit
- - genisoimage
- - gettext
- - ghostscript
- - ghostscript-cups
- - git
- - gjs
- - glib-networking
- - gnome-backgrounds
- - gnome-bluetooth
- - gnome-boxes
- - gnome-calculator
- - gnome-clocks
- - gnome-color-manager
- - gnome-contacts
- - gnome-dictionary
- - gnome-disk-utility
- - gnome-documents
- - gnome-font-viewer
- - gnome-getting-started-docs
- - gnome-icon-theme
- - gnome-icon-theme-symbolic
- - gnome-initial-setup
- - gnome-keyring
- - gnome-menus
- - gnome-online-accounts
- - gnome-online-miners
- - gnome-packagekit
- - gnome-screenshot
- - gnome-session
- - gnome-settings-daemon
- - gnome-shell
- - gnome-software
- - gnome-system-log
- - gnome-system-monitor
- - gnome-terminal
- - gnome-themes-standard
- - gnome-tweak-tool
- - gnome-user-docs
- - gnome-video-effects
- - gnome-weather
- - gnote
- - gnupg2
- - gobject-introspection
- - gom
- - grep
- - groff-base
- - grub2
- - gsettings-desktop-schemas
- - gssproxy
- - gucharmap
- - gvfs
- - gvfs-fuse
- - gwenview
- - gzip
- - hardlink
- - heat-cfntools
- - hesiod
- - hicolor-icon-theme
- - hostname
- - htop
- - hunspell
- - hunspell-en-gb
- - hunspell-en-us
- - hwdata
- - hwloc
- - ibus
- - ibus-chewing
- - ibus-gtk3
- - ibus-hangul
- - ibus-kkc
- - ibus-libpinyin
- - ibus-m17n
- - ibus-table
- - icedax
- - icoutils
- - imagemagick
- - indent
- - info
- - intltool
- - iotop
- - ipset
- - iptables
- - iptraf-ng
- - irqbalance
- - iso-codes
- - isomd5sum
- - iw
- - kamera
- - kbd
- - kcalc
- - kcharselect
- - kcolorchooser
- - kdeaccessibility
- - kdeadmin
- - kde-baseapps
- - kdegraphics-thumbnailers
- - kdepim
- - kdepim-runtime
- - kdf
- - kexec-tools
- - keyutils
- - kgpg
- - khotkeys
- - kinfocenter
- - kmag
- - kmenuedit
- - kmix
- - kmod
- - konsole
- - kpartx
- - kpatch
- - kruler
- - kscreen
- - ksshaskpass
- - ksysguard
- - ksysguardd
- - ktimer
- - kwin
- - kwrite
- - ledmon
- - less
- - lftp
- - libchewing
- - libdnet
- - libiptcdata
- - liblapack3
- - libkkc-common
- - libkkc-data
- - libpinyin
- - libpinyin-data
- - librados2
- - librbd1
- - libreoffice-calc
- - libreoffice-core
- - libreoffice-draw
- - libreoffice-impress
- - libreoffice-pdfimport
- - libreoffice-writer
- - libreswan
- - libsane-hpaio
- - libsmbclient
- - libtar
- - libtool
- - libuser
- - libvirt-daemon
-# - libvirt-daemon-driver-qemu
- - libxml2
- - linux-firmware
- - lksctp-tools
- - lldpad
- - logrotate
- - lrzsz
- - lsof
- - lsscsi
- - lynx
- - lvm2
- - lzop
- - m17n-db
- - m4
-# - mailx
- - make
- - man-db
- - mariadb-server
- - marisa
- - mdadm
- - media-player-info
- - metacity
- - mlocate
- - mokutil
- - moreutils
- - mousetweaks
- - mtools
- - mtr
- - mutter
- - nano
- - nasm
- - nautilus
- - nautilus-sendto
- - ncdu
- - ncompress
- - ncurses-base
- - net-tools
- - nfs4-acl-tools
- - nmap
- - nodejs
- - ntpdate
- - numad
- - oce-draw
- - oddjob
- - oddjob-mkhomedir
- - okular
- - opencc
- - openssh-server
- - openssl
- - open-vm-tools
- - open-vm-tools-desktop
- - orca
- - os-prober
- - oxygen-icon-theme
- - p11-kit
- - packagekit
- - packagekit-command-not-found
- - packagekit-gtk3-module
- - paps
- - parted
- - passwd
- - patch
- - patchutils
- - pciutils
- - perl
- - pinentry-qt
- - pinfo
- - plymouth
- - pm-utils
- - policycoreutils
- - poppler-data
- - poppler-utils
- - postfix
- - ppp
- - psmisc
- - pulseaudio
- - pulseaudio-module-bluetooth
- - pulseaudio-utils
- - python
- - python-apt #allows ansible to check packages in check mode
- - python-babel
- - python-cffi
- - python-chardet
- - python-cheetah
- - python-coverage
- - python-cryptography
- - python-dateutil
- - python-decorator
- - python-enum34
- - python-jinja2
- - python-lxml
- - python-mako
- - python-markdown
- - python-markupsafe
- - python-netaddr
- - python-nose
- - python-pillow
- - python-ply
- - python-psutil
- - python-pycparser
- - python-pycurl
- - python-pygments
- - python-setuptools
- - python-six
- - qemu-guest-agent
- - qemu-kvm
- - quota
- - radvd
- - rcs
- - rdate
- - realmd
- - recode
- - rfkill
- - rhino
- - rhythmbox
- - rng-tools
- - rpcbind
- - rpm
- - rsync
- - rsyslog
- - rtkit
- - ruby
- - rubygems
-# - ruby-irb
- - samba-client
- - samba-common
- - samba-libs
- - screen
- - seahorse
- - sed
- - setserial
- - shared-mime-info
- - skkdic
- - smartmontools
- - sound-theme-freedesktop
- - sox
- - speech-dispatcher
- - speex
- - spice-vdagent
- - sqlite
- - sssd
- - sssd-ad
- - sssd-common
- - sssd-ipa
- - sssd-krb5
- - sssd-krb5-common
- - sssd-ldap
- - sssd-proxy
- - strace
- - subversion
- - sudo
- - sweeper
- - swig
- - sysstat
- - system-config-printer
- - system-config-printer-udev
- - systemd
- - systemd-sysv
- - systemtap
- - systemtap-client
- - systemtap-runtime
- - tar
- - tcl
- - tcpdump
- - tcsh
- - teamd
- - telepathy-gabble
- - telepathy-logger
- - telnet
- - texinfo
- - texlive
- - texlive-base
- - time
- - tix
- - tk
- - tmux
- - totem
- - traceroute
- - tracker
- - tree
- - trousers
- - tuned
- - tzdata
- - udisks2
- - unoconv
- - unzip
- - upower
- - usbutils
- - usermode
- - util-linux
- - vim-common
- - vinagre
- - vino
- - virtuoso-opensource
- - virt-what
- - vorbis-tools
- - wavpack
- - wget
- - wodim
- - wvdial
- - xchat
- - xdg-user-dirs
- - xdg-user-dirs-gtk
- - xdg-utils
- - xfsdump
- - xfsprogs
- - xterm
- - xvattr
- - yelp
- - yelp-xsl
- - zenity
- - zip
- - zsh
diff --git a/CICD/vars/vars.yml b/CICD/vars/vars.yml
deleted file mode 100644
index 6efa44c5fdf447bccf1bdc04468b4cd5a378b812..0000000000000000000000000000000000000000
--- a/CICD/vars/vars.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-sudo_group: systems
-nagios_home: "/var/lib/nagios"
-nvidia_version: "470.57.02"
-syslog_server: "{{ groups['SQLNodes'][0] }}"
-
-gpumap:
- 'K1': 'K1'
- 'K2': 'K2'
- 'K80': 'K80'
- 'P100-PCIE-16GB': 'P100'
- 'V100-PCIE-16GB': 'V100'
diff --git a/CICD/vars/vars_centos78.yml b/CICD/vars/vars_centos78.yml
deleted file mode 100644
index ce6cc64e8e4992cd2fa8b16ba5c7c573ff93882b..0000000000000000000000000000000000000000
--- a/CICD/vars/vars_centos78.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-CENTOS_VERSION: 7-8.2003.0.el7.centos.x86_64
-KERNEL_VERSION: 3.10.0-1127.18.2.el7.x86_64
-LUSTRE_VERSION: 2.13.55-1.el7
-MELLANOX_DRIVER_SRC: MLNX_OFED_LINUX-4.9-0.1.7.0-rhel7.8-ext
-repopath: 7.8.2003
-
-yumdisablerepo:
- - 'monashhpc_k1gpusupport'
-
-yumenablerepo:
- - 'base'
- - 'updates'
- - 'extras'
- - 'monashhpc_lustreversions'
- - 'monashhpc_base'
- - 'monashhpc_updates'
- - 'monashhpc_extras'
- - 'monashhpc_centosplus'
- - 'monashhpc_otherstuff'
diff --git a/CICD/vars/vars_centos79.yml b/CICD/vars/vars_centos79.yml
deleted file mode 100644
index 1fc9828c16c6c5f02451c5e5f8ff9e7bebd88115..0000000000000000000000000000000000000000
--- a/CICD/vars/vars_centos79.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-CENTOS_VERSION: 7-9.2009.1.el7.centos.x86_64
-RHEL_VERSION: 7.9
-KERNEL_VERSION: 3.10.0-1160.31.1.el7.x86_64
-LUSTRE_VERSION: 2.12.7-1.el7
-MELLANOX_DRIVER_SRC: MLNX_OFED_LINUX-4.9-3.1.5.0-rhel7.9-ext
-repopath: 7.9.2009
-
-yumdisablerepo:
- - 'monashhpc_k1gpusupport'
-
-yumenablerepo:
- - 'monashhpc_lustreversions'
- - 'monashhpc_base'
- - 'monashhpc_updates'
- - 'monashhpc_extras'
- - 'monashhpc_centosplus'
- - 'monashhpc_otherstuff'
- - 'base'
- - 'updates'
- - 'extras'
- - 'centos-ansible-29'
-
diff --git a/CICD/vars/vars_ubuntu18.yml b/CICD/vars/vars_ubuntu18.yml
deleted file mode 100644
index 52fb07e13556408445d1930cfeb6be369d25bfab..0000000000000000000000000000000000000000
--- a/CICD/vars/vars_ubuntu18.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-KERNEL_VERSION: 4.15.0-118-generic # this is just the output of uname -ar
-LUSTRE_VERSION: v2_12_6
-MELLANOX_DRIVER_SRC: MLNX_OFED_LINUX-4.9-2.2.4.0-ubuntu18.04-x86_64
-#repopath: 7.8.2003
-
diff --git a/CICD/vars/vars_ubuntu20.yml b/CICD/vars/vars_ubuntu20.yml
deleted file mode 100644
index 4bca02fc08d91927c67ec805d750ecb1331bbd84..0000000000000000000000000000000000000000
--- a/CICD/vars/vars_ubuntu20.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-#KERNEL_VERSION: 5.4.0-67-generic # this is just the output of uname -ar
-KERNEL_VERSION: 5.4.0-70-generic
-LUSTRE_VERSION: v2_14_50
-MELLANOX_DRIVER_SRC: MLNX_OFED_LINUX-4.9-2.2.4.0-ubuntu20.04-x86_64
-#repopath: 7.8.2003
-