Browse Source

Issue #352: Updating directory structure omnia 1.1

Signed-off-by: abhishek-s-a <A_Sa@Dellteam.com>
abhishek-s-a 3 years ago
parent
commit
b75589185a
100 changed files with 1312 additions and 70 deletions
  1. 17 0
      .github/stale.yml
  2. 6 6
      README.md
  3. 44 0
      cobbler_utils/create_system_profiles.sh
  4. 20 0
      cobbler_utils/template.sh
  5. 16 1
      appliance/appliance_config.yml
  6. 20 0
      control_plane/collect_device_info.yml
  7. 1 1
      appliance/inventory.yml
  8. 28 0
      control_plane/control_plane.yml
  9. 23 0
      control_plane/ethernet.yml
  10. 20 0
      control_plane/idrac.yml
  11. 21 0
      control_plane/inifiniband.yml
  12. 14 0
      control_plane/input_params/base_vars.yml
  13. 14 0
      control_plane/input_params/ethernet_vars.yml
  14. 14 0
      control_plane/input_params/ib_vars.yml
  15. 14 0
      control_plane/input_params/idrac_vars.yml
  16. 14 0
      control_plane/input_params/login_vars.yml
  17. 14 0
      control_plane/input_params/powervault_me4_vars.yml
  18. 21 0
      control_plane/powervault_me4.yml
  19. 5 8
      appliance/appliance.yml
  20. 0 0
      control_plane/roles/collect_node_info/files/add_host.yml
  21. 0 0
      control_plane/roles/collect_node_info/files/create_inventory.yml
  22. 4 4
      appliance/roles/inventory/tasks/main.yml
  23. 0 0
      control_plane/roles/collect_node_info/vars/main.yml
  24. 0 0
      control_plane/roles/control_plane_common/files/daemon.json
  25. 593 0
      control_plane/roles/control_plane_common/files/timezone.txt
  26. 0 0
      control_plane/roles/control_plane_common/tasks/docker_installation.yml
  27. 2 1
      appliance/roles/common/tasks/docker_volume.yml
  28. 0 0
      control_plane/roles/control_plane_common/tasks/internet_validation.yml
  29. 0 0
      control_plane/roles/control_plane_common/tasks/main.yml
  30. 5 0
      appliance/roles/common/tasks/package_installation.yml
  31. 46 2
      appliance/roles/common/tasks/password_config.yml
  32. 23 5
      appliance/roles/common/tasks/pre_requisite.yml
  33. 9 4
      appliance/roles/common/vars/main.yml
  34. 19 0
      control_plane/roles/control_plane_customiso/tasks/main.yml
  35. 19 0
      control_plane/roles/control_plane_device/tasks/main.yml
  36. 19 0
      control_plane/roles/control_plane_ib/tasks/main.yml
  37. 19 0
      control_plane/roles/control_plane_k8s/tasks/main.yml
  38. 19 0
      control_plane/roles/control_plane_repo/tasks/main.yml
  39. 19 0
      control_plane/roles/control_plane_sm/tasks/main.yml
  40. 19 0
      control_plane/roles/network_ethernet/tasks/main.yml
  41. 19 0
      control_plane/roles/network_ib/tasks/main.yml
  42. 19 0
      control_plane/roles/powervault_me4/tasks/main.yml
  43. 0 0
      control_plane/roles/provision_cobbler/files/Dockerfile
  44. 0 0
      control_plane/roles/provision_cobbler/files/cobbler_settings
  45. 3 3
      appliance/roles/provision/files/inventory_creation.yml
  46. 5 6
      appliance/roles/provision/files/kickstart.yml
  47. BIN
      control_plane/roles/provision_cobbler/files/loaders.tar
  48. 0 0
      control_plane/roles/provision_cobbler/files/modules.conf
  49. 0 0
      control_plane/roles/provision_cobbler/files/start_cobbler.yml
  50. 7 1
      appliance/roles/provision/files/temp_centos7.ks
  51. 2 0
      appliance/roles/provision/files/temp_dhcp.template
  52. 0 0
      control_plane/roles/provision_cobbler/files/tftp
  53. 0 0
      control_plane/roles/provision_cobbler/files/tftp.yml
  54. 4 0
      appliance/roles/provision/tasks/check_prerequisites.yml
  55. 2 0
      appliance/roles/provision/tasks/cobbler_image.yml
  56. 0 0
      control_plane/roles/provision_cobbler/tasks/configure_cobbler.yml
  57. 15 0
      appliance/roles/provision/tasks/dhcp_configure.yml
  58. 0 0
      control_plane/roles/provision_cobbler/tasks/firewall_settings.yml
  59. 3 3
      appliance/roles/provision/tasks/main.yml
  60. 1 1
      appliance/roles/provision/tasks/mapping_file.yml
  61. 0 0
      control_plane/roles/provision_cobbler/tasks/mount_iso.yml
  62. 7 0
      appliance/roles/provision/tasks/provision_password.yml
  63. 0 0
      control_plane/roles/provision_cobbler/vars/main.yml
  64. 19 0
      control_plane/roles/provision_idrac/tasks/main.yml
  65. 0 0
      control_plane/roles/webui_awx/tasks/awx_configuration.yml
  66. 4 0
      appliance/roles/web_ui/tasks/check_awx_status.yml
  67. 0 0
      control_plane/roles/webui_awx/tasks/clone_awx.yml
  68. 0 0
      control_plane/roles/webui_awx/tasks/firewall_settings.yml
  69. 0 0
      control_plane/roles/webui_awx/tasks/install_awx.yml
  70. 0 0
      control_plane/roles/webui_awx/tasks/install_awx_cli.yml
  71. 4 4
      appliance/roles/web_ui/tasks/main.yml
  72. 2 2
      appliance/roles/web_ui/tasks/ui_accessibility.yml
  73. 2 2
      appliance/roles/web_ui/vars/main.yml
  74. 0 0
      control_plane/test/appliance_config_empty.yml
  75. 0 0
      control_plane/test/appliance_config_test.yml
  76. 0 0
      control_plane/test/provisioned_hosts.yml
  77. 0 0
      control_plane/test/test_common.yml
  78. 0 0
      control_plane/test/test_mapping_file
  79. 0 0
      control_plane/test/test_provision_cc.yml
  80. 0 0
      control_plane/test/test_provision_cdip.yml
  81. 0 0
      control_plane/test/test_provision_ndod.yml
  82. 0 0
      control_plane/test/test_vars/test_common_vars.yml
  83. 0 0
      control_plane/test/test_vars/test_provision_vars.yml
  84. 0 0
      control_plane/test/test_vars/test_web_ui_vars.yml
  85. 0 0
      control_plane/test/test_web_ui.yml
  86. 0 0
      control_plane/tools/passwordless_ssh.yml
  87. 2 2
      appliance/tools/provision_report.yml
  88. 0 0
      control_plane/tools/roles/cluster_preperation/tasks/main.yml
  89. 0 0
      control_plane/tools/roles/cluster_preperation/tasks/passwordless_ssh.yml
  90. 0 0
      control_plane/tools/roles/cluster_preperation/vars/main.yml
  91. 1 1
      appliance/tools/roles/fetch_password/tasks/main.yml
  92. 0 0
      control_plane/tools/roles/hpc_cluster_report/tasks/main.yml
  93. 0 0
      control_plane/tools/roles/hpc_cluster_report/templates/provision_host_report.j2
  94. 3 3
      docs/INSTALL_OMNIA.md
  95. 8 7
      docs/INSTALL_OMNIA_APPLIANCE.md
  96. 1 1
      docs/PREINSTALL_OMNIA_APPLIANCE.md
  97. 1 1
      omnia.yml
  98. 6 0
      omnia_config.yml
  99. 31 1
      roles/cluster_validation/tasks/fetch_password.yml
  100. 0 0
      roles/cluster_validation/vars/main.yml

+ 17 - 0
.github/stale.yml

@@ -0,0 +1,17 @@
+# Number of days of inactivity before an issue becomes stale
+daysUntilStale: 60
+# Number of days of inactivity before a stale issue is closed
+daysUntilClose: 14
+# Issues with these labels will never be considered stale
+exemptLabels:
+  - pinned
+  - security
+# Label to use when marking an issue as stale
+staleLabel: stale
+# Comment to post when marking an issue as stale. Set to `false` to disable
+markComment: >
+  This issue has been automatically marked as stale because it has not had
+  recent activity. It will be closed if no further activity occurs. Thank you
+  for your contributions.
+# Comment to post when closing a stale issue. Set to `false` to disable
+closeComment: false

+ 6 - 6
README.md

@@ -1,14 +1,14 @@
 <img src="docs/images/omnia-logo.png" width="500px">
 
-![GitHub](https://img.shields.io/github/license/dellhpc/omnia) ![GitHub issues](https://img.shields.io/github/issues-raw/dellhpc/omnia) ![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/dellhpc/omnia?include_prereleases) ![GitHub last commit (branch)](https://img.shields.io/github/last-commit/dellhpc/omnia/devel) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/dellhpc/omnia/v1.0.0/devel) 
+![GitHub](https://img.shields.io/github/license/dellhpc/omnia) ![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/dellhpc/omnia?include_prereleases) ![GitHub last commit (branch)](https://img.shields.io/github/last-commit/dellhpc/omnia/devel) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/dellhpc/omnia/v1.0.2/devel) 
 
 ![GitHub contributors](https://img.shields.io/github/contributors-anon/dellhpc/omnia) ![GitHub forks](https://img.shields.io/github/forks/dellhpc/omnia) ![GitHub Repo stars](https://img.shields.io/github/stars/dellhpc/omnia) ![GitHub all releases](https://img.shields.io/github/downloads/dellhpc/omnia/total)
 
-[<img src="https://img.shields.io/badge/slack-dellhpc-blue.svg?logo=slack">](https://app.slack.com/client/TH80K68HY/C018L5109PW)
+![GitHub issues](https://img.shields.io/github/issues-raw/dellhpc/omnia) ![GitHub Discussions](https://img.shields.io/github/discussions/dellhpc/omnia) [<img src="https://img.shields.io/badge/slack-dellhpc-blue.svg?logo=slack">](https://app.slack.com/client/TH80K68HY/C018L5109PW)
 
-#### Ansible playbook-based deployment of Slurm and Kubernetes on Dell EMC PowerEdge servers running an RPM-based Linux OS
+#### Ansible playbook-based deployment of Slurm and Kubernetes on servers running an RPM-based Linux OS
 
-Omnia (Latin: all or everything) is a deployment tool to turn Dell EMC PowerEdge servers with RPM-based Linux images into a functioning Slurm/Kubernetes cluster.
+Omnia (Latin: all or everything) is a deployment tool to turn servers with RPM-based Linux images into functioning Slurm/Kubernetes clusters.
 
 ## Omnia Documentation
 For Omnia documentation, including installation and contribution instructions, please see the [website](https://dellhpc.github.io/omnia).
@@ -17,5 +17,5 @@ For Omnia documentation, including installation and contribution instructions, p
 * Lucas A. Wilson (Dell Technologies)
 * John Lockman (Dell Technologies)
 
-## Omnia Contributors:
-<img src="docs/images/delltech.jpg" height="150px" alt="Dell Technologies"> <img src="docs/images/pisa.png" height="150px" alt="Universita di Pisa">
+## Omnia Community Members:
+<img src="docs/images/delltech.jpg" height="75px" alt="Dell Technologies"> <img src="docs/images/pisa.png" height="80px" alt="Universita di Pisa"> <img src="https://user-images.githubusercontent.com/83095575/117071024-64956c80-ace3-11eb-9d90-2dac7daef11c.png" height="75px"> <img src="https://www.vizias.com/uploads/1/1/8/9/118906653/published/thick-blue-white-ring-letters-full.png" height="65px" alt="Vizias">

+ 44 - 0
cobbler_utils/create_system_profiles.sh

@@ -0,0 +1,44 @@
+#!/bin/bash
+
+if [ $# -lt 1 ] ; then
+    echo -e "\nNeed mapping file\n"
+    echo -e "e.g. $(basename $0) mapping.csv\n"
+    exit 1
+fi
+
+MAPPING=$1
+
+if [ ! -e $MAPPING ] ; then
+    echo -e "\nMapping file $MAPPING does not exist\n"
+    exit 1
+fi
+
+if [ ! -d profiles ] ; then
+	mkdir profiles
+fi
+
+echo -e "#!/bin/bash\n" > profiles/addall.sh
+
+for profile in $(cat $MAPPING | grep -v ^MAC) ; do
+
+    MAC=$(echo $profile | cut -d "," -f 1 )
+    HOSTNAME=$(echo $profile | cut -d "," -f 2 )
+    IPADDR=$(echo $profile | cut -d "," -f 3 )
+    OUTFILE=${HOSTNAME}.sh
+
+    cat template.sh \
+    | sed -e "s/^HOSTNAME=/HOSTNAME=\"$HOSTNAME\"/" \
+    -e "s/^IPADDR=/IPADDR=\"$IPADDR\"/" \
+    -e "s/^MAC=/MAC=\"$MAC\"/" > profiles/$OUTFILE
+
+    echo "./$OUTFILE" >> profiles/addall.sh
+
+    chmod 755 profiles/$OUTFILE
+
+done
+
+echo -e "\ncobbler sync\n" >> profiles/addall.sh
+
+chmod 755 profiles/addall.sh
+
+

+ 20 - 0
cobbler_utils/template.sh

@@ -0,0 +1,20 @@
+#!/bin/bash
+
+HOSTNAME=
+IPADDR=
+MAC=
+INTERFACE="em1"
+PROFILE="CentOS7-x86_64"
+
+cobbler system remove --name=$HOSTNAME 2>&1 > /dev/null
+
+cobbler system add --name=$HOSTNAME --hostname=$HOSTNAME --profile=$PROFILE
+
+cobbler system edit --name=$HOSTNAME --interface=$INTERFACE --mac=$MAC
+
+cobbler system edit --name=$HOSTNAME --kopts="ksdevice=$MAC nomodeset consoleblank=0"
+
+cobbler system edit --name=$HOSTNAME --kopts-post="nomodeset consoleblank=0"
+
+#cobbler sync
+

+ 16 - 1
appliance/appliance_config.yml

@@ -35,7 +35,7 @@ public_nic: "em2"
 # This is the  path where user has kept the iso image that needs to be provisioned in target nodes.
 # The iso file should be CentOS7-2009-minimal edition.
 # Other iso file not supported.
-iso_file_path: "" 
+iso_file_path: ""
 
 # The mapping file consists of the MAC address and its respective IP address and hostname.
 # The format of mapping file should be MAC,hostname,IP and must be a CSV file.
@@ -45,5 +45,20 @@ mapping_file_path: ""
 
 # The dhcp range for assigning the IPv4 address to the baremetal nodes.
 # Example: 10.1.23.1
+dhcp_gateway: ""
+dhcp_dns1: ""
+dhcp_dns2: ""
 dhcp_start_ip_range: ""
 dhcp_end_ip_range: ""
+
+# This is the timezone that will be set during provisioning of OS
+# Available timezone are provided in list control_plane/control_plane_common/files/timezone.txt
+# Default timezone will be set to "GMT"
+# Some of the other available timezone are EST,CET,MST,CST6CDT,PST8PDT
+timezone: "GMT"
+
+# Path to directory hosting ansible config file (ansible.cfg file)
+# Default value is "/etc/ansible"
+# This directory is on the host running ansible, if ansible is installed using dnf
+# If ansible is installed using pip, this path should be set
+ansible_config_file_path: /etc/ansible

+ 20 - 0
control_plane/collect_device_info.yml

@@ -0,0 +1,20 @@
+# Copyright 2020 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+- name: Dynamic Inventory
+  hosts: localhost
+  connection: local
+  gather_facts: no
+  roles:
+    - collect_device_info

+ 1 - 1
appliance/inventory.yml

@@ -17,4 +17,4 @@
   connection: local
   gather_facts: no
   roles:
-    - inventory
+    - collect_node_info

+ 28 - 0
control_plane/control_plane.yml

@@ -0,0 +1,28 @@
+#  Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+- name: Executing omnia roles
+  hosts: localhost
+  connection: local
+  roles:
+    - control_plane_common
+    - control_plane_repo
+    - control_plane_k8s
+    - control_plane_device
+    - provision_cobbler
+    - control_plane_ib
+    - control_plane_sm
+    - control_plane_customiso
+    - webui_awx

+ 23 - 0
control_plane/ethernet.yml

@@ -0,0 +1,23 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+---
+-  name: Ethernet Configuration 
+   hosts: all
+   gather_facts: false
+   connection: network_cli
+   vars:
+     ansible_network_os: dellemc.os10.os10
+   roles:
+    - network_ethernet

+ 20 - 0
control_plane/idrac.yml

@@ -0,0 +1,20 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: Deploy OS via idrac
+  hosts: all
+  connection: local
+  roles:
+    - provision_idrac

+ 21 - 0
control_plane/inifiniband.yml

@@ -0,0 +1,21 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: Infiniband Configuration
+  hosts: all
+  gather_facts: false
+  connection: local
+  roles:
+    - network_ib

+ 14 - 0
control_plane/input_params/base_vars.yml

@@ -0,0 +1,14 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---

+ 14 - 0
control_plane/input_params/ethernet_vars.yml

@@ -0,0 +1,14 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---

+ 14 - 0
control_plane/input_params/ib_vars.yml

@@ -0,0 +1,14 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---

+ 14 - 0
control_plane/input_params/idrac_vars.yml

@@ -0,0 +1,14 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---

+ 14 - 0
control_plane/input_params/login_vars.yml

@@ -0,0 +1,14 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---

+ 14 - 0
control_plane/input_params/powervault_me4_vars.yml

@@ -0,0 +1,14 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---

+ 21 - 0
control_plane/powervault_me4.yml

@@ -0,0 +1,21 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: Powervault Configuration
+  hosts: all
+  gather_facts: false
+  connection: local
+  roles:
+    - powervault_me4

+ 5 - 8
appliance/appliance.yml

@@ -1,4 +1,4 @@
-#  Copyright 2020 Dell Inc. or its subsidiaries. All Rights Reserved.
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -13,10 +13,7 @@
 #  limitations under the License.
 ---
 
-- name: Executing omnia roles
-  hosts: localhost
-  connection: local
-  roles:
-    - common
-    - provision
-    - web_ui
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

appliance/roles/inventory/files/add_host.yml → control_plane/roles/collect_node_info/files/add_host.yml


appliance/roles/inventory/files/create_inventory.yml → control_plane/roles/collect_node_info/files/create_inventory.yml


+ 4 - 4
appliance/roles/inventory/tasks/main.yml

@@ -21,12 +21,12 @@
     path: "{{ role_path }}/files/provisioned_hosts.yml"
   register: provisioned_file_result
 
-- name: Include vars file of common role
-  include_vars: "{{ role_path }}/../common/vars/main.yml"
+- name: Include vars file of control_plane_common role
+  include_vars: "{{ role_path }}/../control_plane_common/vars/main.yml"
   no_log: True
 
-- name: Include vars file of web_ui role
-  include_vars: "{{ role_path }}/../web_ui/vars/main.yml"
+- name: Include vars file of webui_awx role
+  include_vars: "{{ role_path }}/../webui_awx/vars/main.yml"
   no_log: True
 
 - name: Update inventory file

appliance/roles/inventory/vars/main.yml → control_plane/roles/collect_node_info/vars/main.yml


appliance/roles/common/files/daemon.json → control_plane/roles/control_plane_common/files/daemon.json


+ 593 - 0
control_plane/roles/control_plane_common/files/timezone.txt

@@ -0,0 +1,593 @@
+Africa/Abidjan
+Africa/Accra
+Africa/Addis_Ababa
+Africa/Algiers
+Africa/Asmara
+Africa/Asmera
+Africa/Bamako
+Africa/Bangui
+Africa/Banjul
+Africa/Bissau
+Africa/Blantyre
+Africa/Brazzaville
+Africa/Bujumbura
+Africa/Cairo
+Africa/Casablanca
+Africa/Ceuta
+Africa/Conakry
+Africa/Dakar
+Africa/Dar_es_Salaam
+Africa/Djibouti
+Africa/Douala
+Africa/El_Aaiun
+Africa/Freetown
+Africa/Gaborone
+Africa/Harare
+Africa/Johannesburg
+Africa/Juba
+Africa/Kampala
+Africa/Khartoum
+Africa/Kigali
+Africa/Kinshasa
+Africa/Lagos
+Africa/Libreville
+Africa/Lome
+Africa/Luanda
+Africa/Lubumbashi
+Africa/Lusaka
+Africa/Malabo
+Africa/Maputo
+Africa/Maseru
+Africa/Mbabane
+Africa/Mogadishu
+Africa/Monrovia
+Africa/Nairobi
+Africa/Ndjamena
+Africa/Niamey
+Africa/Nouakchott
+Africa/Ouagadougou
+Africa/Porto-Novo
+Africa/Sao_Tome
+Africa/Timbuktu
+Africa/Tripoli
+Africa/Tunis
+Africa/Windhoek
+America/Adak
+America/Anchorage
+America/Anguilla
+America/Antigua
+America/Araguaina
+America/Argentina/Buenos_Aires
+America/Argentina/Catamarca
+America/Argentina/ComodRivadavia
+America/Argentina/Cordoba
+America/Argentina/Jujuy
+America/Argentina/La_Rioja
+America/Argentina/Mendoza
+America/Argentina/Rio_Gallegos
+America/Argentina/Salta
+America/Argentina/San_Juan
+America/Argentina/San_Luis
+America/Argentina/Tucuman
+America/Argentina/Ushuaia
+America/Aruba
+America/Asuncion
+America/Atikokan
+America/Atka
+America/Bahia
+America/Bahia_Banderas
+America/Barbados
+America/Belem
+America/Belize
+America/Blanc-Sablon
+America/Boa_Vista
+America/Bogota
+America/Boise
+America/Buenos_Aires
+America/Cambridge_Bay
+America/Campo_Grande
+America/Cancun
+America/Caracas
+America/Catamarca
+America/Cayenne
+America/Cayman
+America/Chicago
+America/Chihuahua
+America/Coral_Harbour
+America/Cordoba
+America/Costa_Rica
+America/Creston
+America/Cuiaba
+America/Curacao
+America/Danmarkshavn
+America/Dawson
+America/Dawson_Creek
+America/Denver
+America/Detroit
+America/Dominica
+America/Edmonton
+America/Eirunepe
+America/El_Salvador
+America/Ensenada
+America/Fort_Nelson
+America/Fort_Wayne
+America/Fortaleza
+America/Glace_Bay
+America/Godthab
+America/Goose_Bay
+America/Grand_Turk
+America/Grenada
+America/Guadeloupe
+America/Guatemala
+America/Guayaquil
+America/Guyana
+America/Halifax
+America/Havana
+America/Hermosillo
+America/Indiana/Indianapolis
+America/Indiana/Knox
+America/Indiana/Marengo
+America/Indiana/Petersburg
+America/Indiana/Tell_City
+America/Indiana/Vevay
+America/Indiana/Vincennes
+America/Indiana/Winamac
+America/Indianapolis
+America/Inuvik
+America/Iqaluit
+America/Jamaica
+America/Jujuy
+America/Juneau
+America/Kentucky/Louisville
+America/Kentucky/Monticello
+America/Knox_IN
+America/Kralendijk
+America/La_Paz
+America/Lima
+America/Los_Angeles
+America/Louisville
+America/Lower_Princes
+America/Maceio
+America/Managua
+America/Manaus
+America/Marigot
+America/Martinique
+America/Matamoros
+America/Mazatlan
+America/Mendoza
+America/Menominee
+America/Merida
+America/Metlakatla
+America/Mexico_City
+America/Miquelon
+America/Moncton
+America/Monterrey
+America/Montevideo
+America/Montreal
+America/Montserrat
+America/Nassau
+America/New_York
+America/Nipigon
+America/Nome
+America/Noronha
+America/North_Dakota/Beulah
+America/North_Dakota/Center
+America/North_Dakota/New_Salem
+America/Nuuk
+America/Ojinaga
+America/Panama
+America/Pangnirtung
+America/Paramaribo
+America/Phoenix
+America/Port-au-Prince
+America/Port_of_Spain
+America/Porto_Acre
+America/Porto_Velho
+America/Puerto_Rico
+America/Punta_Arenas
+America/Rainy_River
+America/Rankin_Inlet
+America/Recife
+America/Regina
+America/Resolute
+America/Rio_Branco
+America/Rosario
+America/Santa_Isabel
+America/Santarem
+America/Santiago
+America/Santo_Domingo
+America/Sao_Paulo
+America/Scoresbysund
+America/Shiprock
+America/Sitka
+America/St_Barthelemy
+America/St_Johns
+America/St_Kitts
+America/St_Lucia
+America/St_Thomas
+America/St_Vincent
+America/Swift_Current
+America/Tegucigalpa
+America/Thule
+America/Thunder_Bay
+America/Tijuana
+America/Toronto
+America/Tortola
+America/Vancouver
+America/Virgin
+America/Whitehorse
+America/Winnipeg
+America/Yakutat
+America/Yellowknife
+Antarctica/Casey
+Antarctica/Davis
+Antarctica/DumontDUrville
+Antarctica/Macquarie
+Antarctica/Mawson
+Antarctica/McMurdo
+Antarctica/Palmer
+Antarctica/Rothera
+Antarctica/South_Pole
+Antarctica/Syowa
+Antarctica/Troll
+Antarctica/Vostok
+Arctic/Longyearbyen
+Asia/Aden
+Asia/Almaty
+Asia/Amman
+Asia/Anadyr
+Asia/Aqtau
+Asia/Aqtobe
+Asia/Ashgabat
+Asia/Ashkhabad
+Asia/Atyrau
+Asia/Baghdad
+Asia/Bahrain
+Asia/Baku
+Asia/Bangkok
+Asia/Barnaul
+Asia/Beirut
+Asia/Bishkek
+Asia/Brunei
+Asia/Calcutta
+Asia/Chita
+Asia/Choibalsan
+Asia/Chongqing
+Asia/Chungking
+Asia/Colombo
+Asia/Dacca
+Asia/Damascus
+Asia/Dhaka
+Asia/Dili
+Asia/Dubai
+Asia/Dushanbe
+Asia/Famagusta
+Asia/Gaza
+Asia/Harbin
+Asia/Hebron
+Asia/Ho_Chi_Minh
+Asia/Hong_Kong
+Asia/Hovd
+Asia/Irkutsk
+Asia/Istanbul
+Asia/Jakarta
+Asia/Jayapura
+Asia/Jerusalem
+Asia/Kabul
+Asia/Kamchatka
+Asia/Karachi
+Asia/Kashgar
+Asia/Kathmandu
+Asia/Katmandu
+Asia/Khandyga
+Asia/Kolkata
+Asia/Krasnoyarsk
+Asia/Kuala_Lumpur
+Asia/Kuching
+Asia/Kuwait
+Asia/Macao
+Asia/Macau
+Asia/Magadan
+Asia/Makassar
+Asia/Manila
+Asia/Muscat
+Asia/Nicosia
+Asia/Novokuznetsk
+Asia/Novosibirsk
+Asia/Omsk
+Asia/Oral
+Asia/Phnom_Penh
+Asia/Pontianak
+Asia/Pyongyang
+Asia/Qatar
+Asia/Qostanay
+Asia/Qyzylorda
+Asia/Rangoon
+Asia/Riyadh
+Asia/Saigon
+Asia/Sakhalin
+Asia/Samarkand
+Asia/Seoul
+Asia/Shanghai
+Asia/Singapore
+Asia/Srednekolymsk
+Asia/Taipei
+Asia/Tashkent
+Asia/Tbilisi
+Asia/Tehran
+Asia/Tel_Aviv
+Asia/Thimbu
+Asia/Thimphu
+Asia/Tokyo
+Asia/Tomsk
+Asia/Ujung_Pandang
+Asia/Ulaanbaatar
+Asia/Ulan_Bator
+Asia/Urumqi
+Asia/Ust-Nera
+Asia/Vientiane
+Asia/Vladivostok
+Asia/Yakutsk
+Asia/Yangon
+Asia/Yekaterinburg
+Asia/Yerevan
+Atlantic/Azores
+Atlantic/Bermuda
+Atlantic/Canary
+Atlantic/Cape_Verde
+Atlantic/Faeroe
+Atlantic/Faroe
+Atlantic/Jan_Mayen
+Atlantic/Madeira
+Atlantic/Reykjavik
+Atlantic/South_Georgia
+Atlantic/St_Helena
+Atlantic/Stanley
+Australia/ACT
+Australia/Adelaide
+Australia/Brisbane
+Australia/Broken_Hill
+Australia/Canberra
+Australia/Currie
+Australia/Darwin
+Australia/Eucla
+Australia/Hobart
+Australia/LHI
+Australia/Lindeman
+Australia/Lord_Howe
+Australia/Melbourne
+Australia/NSW
+Australia/North
+Australia/Perth
+Australia/Queensland
+Australia/South
+Australia/Sydney
+Australia/Tasmania
+Australia/Victoria
+Australia/West
+Australia/Yancowinna
+Brazil/Acre
+Brazil/DeNoronha
+Brazil/East
+Brazil/West
+CET
+CST6CDT
+Canada/Atlantic
+Canada/Central
+Canada/Eastern
+Canada/Mountain
+Canada/Newfoundland
+Canada/Pacific
+Canada/Saskatchewan
+Canada/Yukon
+Chile/Continental
+Chile/EasterIsland
+Cuba
+EET
+EST
+EST5EDT
+Egypt
+Eire
+Etc/GMT
+Etc/GMT+0
+Etc/GMT+1
+Etc/GMT+10
+Etc/GMT+11
+Etc/GMT+12
+Etc/GMT+2
+Etc/GMT+3
+Etc/GMT+4
+Etc/GMT+5
+Etc/GMT+6
+Etc/GMT+7
+Etc/GMT+8
+Etc/GMT+9
+Etc/GMT-0
+Etc/GMT-1
+Etc/GMT-10
+Etc/GMT-11
+Etc/GMT-12
+Etc/GMT-13
+Etc/GMT-14
+Etc/GMT-2
+Etc/GMT-3
+Etc/GMT-4
+Etc/GMT-5
+Etc/GMT-6
+Etc/GMT-7
+Etc/GMT-8
+Etc/GMT-9
+Etc/GMT0
+Etc/Greenwich
+Etc/UCT
+Etc/UTC
+Etc/Universal
+Etc/Zulu
+Europe/Amsterdam
+Europe/Andorra
+Europe/Astrakhan
+Europe/Athens
+Europe/Belfast
+Europe/Belgrade
+Europe/Berlin
+Europe/Bratislava
+Europe/Brussels
+Europe/Bucharest
+Europe/Budapest
+Europe/Busingen
+Europe/Chisinau
+Europe/Copenhagen
+Europe/Dublin
+Europe/Gibraltar
+Europe/Guernsey
+Europe/Helsinki
+Europe/Isle_of_Man
+Europe/Istanbul
+Europe/Jersey
+Europe/Kaliningrad
+Europe/Kiev
+Europe/Kirov
+Europe/Lisbon
+Europe/Ljubljana
+Europe/London
+Europe/Luxembourg
+Europe/Madrid
+Europe/Malta
+Europe/Mariehamn
+Europe/Minsk
+Europe/Monaco
+Europe/Moscow
+Europe/Nicosia
+Europe/Oslo
+Europe/Paris
+Europe/Podgorica
+Europe/Prague
+Europe/Riga
+Europe/Rome
+Europe/Samara
+Europe/San_Marino
+Europe/Sarajevo
+Europe/Saratov
+Europe/Simferopol
+Europe/Skopje
+Europe/Sofia
+Europe/Stockholm
+Europe/Tallinn
+Europe/Tirane
+Europe/Tiraspol
+Europe/Ulyanovsk
+Europe/Uzhgorod
+Europe/Vaduz
+Europe/Vatican
+Europe/Vienna
+Europe/Vilnius
+Europe/Volgograd
+Europe/Warsaw
+Europe/Zagreb
+Europe/Zaporozhye
+Europe/Zurich
+GB
+GB-Eire
+GMT
+GMT+0
+GMT-0
+GMT0
+Greenwich
+HST
+Hongkong
+Iceland
+Indian/Antananarivo
+Indian/Chagos
+Indian/Christmas
+Indian/Cocos
+Indian/Comoro
+Indian/Kerguelen
+Indian/Mahe
+Indian/Maldives
+Indian/Mauritius
+Indian/Mayotte
+Indian/Reunion
+Iran
+Israel
+Jamaica
+Japan
+Kwajalein
+Libya
+MET
+MST
+MST7MDT
+Mexico/BajaNorte
+Mexico/BajaSur
+Mexico/General
+NZ
+NZ-CHAT
+Navajo
+PRC
+PST8PDT
+Pacific/Apia
+Pacific/Auckland
+Pacific/Bougainville
+Pacific/Chatham
+Pacific/Chuuk
+Pacific/Easter
+Pacific/Efate
+Pacific/Enderbury
+Pacific/Fakaofo
+Pacific/Fiji
+Pacific/Funafuti
+Pacific/Galapagos
+Pacific/Gambier
+Pacific/Guadalcanal
+Pacific/Guam
+Pacific/Honolulu
+Pacific/Johnston
+Pacific/Kiritimati
+Pacific/Kosrae
+Pacific/Kwajalein
+Pacific/Majuro
+Pacific/Marquesas
+Pacific/Midway
+Pacific/Nauru
+Pacific/Niue
+Pacific/Norfolk
+Pacific/Noumea
+Pacific/Pago_Pago
+Pacific/Palau
+Pacific/Pitcairn
+Pacific/Pohnpei
+Pacific/Ponape
+Pacific/Port_Moresby
+Pacific/Rarotonga
+Pacific/Saipan
+Pacific/Samoa
+Pacific/Tahiti
+Pacific/Tarawa
+Pacific/Tongatapu
+Pacific/Truk
+Pacific/Wake
+Pacific/Wallis
+Pacific/Yap
+Poland
+Portugal
+ROC
+ROK
+Singapore
+Turkey
+UCT
+US/Alaska
+US/Aleutian
+US/Arizona
+US/Central
+US/East-Indiana
+US/Eastern
+US/Hawaii
+US/Indiana-Starke
+US/Michigan
+US/Mountain
+US/Pacific
+US/Samoa
+UTC
+Universal
+W-SU
+WET
+Zulu

appliance/roles/common/tasks/docker_installation.yml → control_plane/roles/control_plane_common/tasks/docker_installation.yml


+ 2 - 1
appliance/roles/common/tasks/docker_volume.yml

@@ -16,4 +16,5 @@
 - name: Create a docker volume
   docker_volume:
     name: "{{ docker_volume_name }}"
-
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"

appliance/roles/common/tasks/internet_validation.yml → control_plane/roles/control_plane_common/tasks/internet_validation.yml


appliance/roles/common/tasks/main.yml → control_plane/roles/control_plane_common/tasks/main.yml


+ 5 - 0
appliance/roles/common/tasks/package_installation.yml

@@ -18,3 +18,8 @@
     name: "{{ common_packages }}"
     state: present
   tags: install
+
+- name: Install netaddr
+  command: pip3 install netaddr
+  tags: install
+  changed_when: false

+ 46 - 2
appliance/roles/common/tasks/password_config.yml

@@ -40,7 +40,12 @@
       public_nic | length < 1 or
       iso_file_path | length < 1 or
       dhcp_start_ip_range | length < 1 or
-      dhcp_end_ip_range | length < 1
+      dhcp_end_ip_range | length < 1 or
+      dhcp_gateway | length < 1 or
+      dhcp_dns1 | length < 1 or
+      dhcp_dns2 | length < 1 or
+      timezone | length < 1 or
+      ansible_config_file_path | length < 1
 
 - name: Save input variables from file
   set_fact:
@@ -49,12 +54,39 @@
     nic:  "{{ hpc_nic }}"
     internet_nic: "{{ public_nic }}"
     path_for_iso_file: "{{ iso_file_path }}"
+    dhcp_gateway: "{{ dhcp_gateway | ipv4 }}"
+    dhcp_dns1: "{{ dhcp_dns1 | ipv4 }}"
+    dhcp_dns2: "{{ dhcp_dns2 | ipv4 }}"
     dhcp_start_ip: "{{ dhcp_start_ip_range | ipv4 }}"
     dhcp_end_ip: "{{ dhcp_end_ip_range | ipv4 }}"
     mapping_file: false
     path_for_mapping_file: "{{ mapping_file_path }}"
+    ks_timezone: "{{ timezone }}"
+    ansible_conf_file_path: "{{ ansible_config_file_path ​}}"
   no_log: true
 
+- name: Check whether ansible config file exists
+  stat:
+    path: "{{ ansible_conf_file_path }}/ansible.cfg"
+  register: ansible_conf_exists
+
+- name: Create the directory if it does not exist
+  file:
+    path: "{{ ansible_conf_file_path }}"
+    state: directory
+    mode: "{{ file_perm }}"
+  when: not ansible_conf_exists.stat.exists
+  changed_when: false
+
+- name: Create ansible config file if it does not exist
+  copy:
+    dest: '{{ ansible_conf_file_path }}/ansible.cfg'
+    mode: "{{ file_perm }}"
+    content: |
+      [defaults]
+      log_path = /var/log/omnia.log
+  when: not ansible_conf_exists.stat.exists
+
 - name: Get the system hpc ip
   shell:  "ifconfig {{ hpc_nic }} | grep 'inet' |cut -d: -f2 |  awk '{ print $2}'"
   register: ip
@@ -243,6 +275,18 @@
     fail_msg: "{{ fail_dhcp_range }}"
   register: dhcp_end_ip_check
 
+- name: Check timezone file
+  command: grep -Fx "{{ ks_timezone }}" {{ role_path }}/files/timezone.txt
+  ignore_errors: yes
+  register: timezone_out
+
+- name: Assert timezone
+  assert:
+    that: ks_timezone in timezone_out.stdout
+    success_msg: "{{ success_timezone }}"
+    fail_msg: "{{ fail_timezone }}"
+  register: timezone_check
+
 - name: Create ansible vault key
   set_fact:
     vault_key: "{{ lookup('password', '/dev/null chars=ascii_letters') }}"
@@ -334,4 +378,4 @@
   command: >-
     ansible-vault encrypt {{ role_path }}/../../../{{ config_filename }}
     --vault-password-file {{ role_path }}/../../../{{ config_vaultname }}
-  changed_when: false
+  changed_when: false

+ 23 - 5
appliance/roles/common/tasks/pre_requisite.yml

@@ -13,9 +13,20 @@
 #  limitations under the License.
 ---
 
+- name: Verify the ansible and python versions installed
+  fail:
+    msg: "{{ ansible_python_version_status }}"
+  when: ansible_python_version != python_version_support
+  tags: install
+
+- name: Verify whether ansible configuration file exists
+  stat:
+    path: "{{ default_ansible_config_file_path }}"
+  register: file_exists
+
 - name: Set omnia.log file
   replace:
-    path: /etc/ansible/ansible.cfg
+    path: "{{ default_ansible_config_file_path }}"
     regexp: '#log_path = /var/log/ansible.log'
     replace: 'log_path = /var/log/omnia.log'
   tags: install
@@ -27,15 +38,22 @@
   register: os_value
   tags: install
 
+- name: Fetch SElinux mode
+  command: sestatus
+  register: sestatus_current
+
 - name: Disable SElinux
-  selinux:
-    state: disabled
+  replace:
+    path: /etc/sysconfig/selinux
+    regexp: 'SELINUX=[a-z]+'
+    replace: 'SELINUX=disabled'
+  when: '"SELinux status:                 enabled" in sestatus_current.stdout_lines'
   tags: install
 
 - name: Status of SElinux
   fail:
     msg: "{{ selinux_status }}"
-  when: ansible_selinux.status != 'disabled'
+  when: '"SELinux status:                 enabled" in sestatus_current.stdout_lines'
   register: selinux_value
   tags: install
 
@@ -43,4 +61,4 @@
   service:
     name: firewalld
     state: started
-    enabled: yes
+    enabled: yes

+ 9 - 4
appliance/roles/common/vars/main.yml

@@ -30,9 +30,8 @@ common_packages:
   - nano
   - lvm2
   - gettext
-  - python-docker
   - net-tools
-  - python-netaddr
+  - python3-netaddr
   - yum-plugin-versionlock
 
 # Usage: pre_requisite.yml
@@ -41,12 +40,15 @@ internet_timeout: 10
 hostname: github.com
 port_no: 22
 os_name: CentOS
-os_version: '7.9' 
+os_version: '8.3' 
 internet_status: "Failed. No Internet connection. Make sure network is up."
 os_status: "Unsupported OS or OS version. OS should be {{ os_name }} and Version should be {{ os_version }} or more"
 selinux_status: "SElinux is not disabled. Disable it in /etc/sysconfig/selinux and reboot the system"
 iso_name: CentOS-7-x86_64-Minimal-2009.iso
-iso_fail: "Iso file not found. Download and copy the iso file to omnia/appliance/roles/provision/files"
+iso_fail: "Iso file not found. Download and copy the iso file to omnia/control_plane/roles/provision_cobbler/files"
+ansible_python_version_status: "For CentOS 8.3, python bindings of firewalld, dnf, selinux are not available if python is installed from source and not from dnf. So please make sure python3.6 is installed using dnf. And ansible uses the python version 3.6 installed using dnf"
+python_version_support: '3.6.8'
+default_ansible_config_file_path: /etc/ansible/ansible.cfg
 
 # Usage: docker_installation.yml
 docker_repo_url: https://download.docker.com/linux/centos/docker-ce.repo
@@ -92,3 +94,6 @@ fail_msg_mariadb_password: "Failed. Incorrect mariadb_password format provided i
 success_msg_mariadb_password: "mariadb_password validated"
 success_msg_k8s_cni: "Kubernetes CNI Validated"
 fail_msg_k8s_cni: "Failed. Kubernetes CNI is incorrect in omnia_config.yml"
+success_timezone: "timezone validated"
+fail_timezone: "Failed. Incorrect timezone provided. Please check the file timezone.txt in control_plane/roles/control_plane_common/files/ folder"
+file_perm: '0755'

+ 19 - 0
control_plane/roles/control_plane_customiso/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/control_plane_device/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/control_plane_ib/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/control_plane_k8s/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/control_plane_repo/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/control_plane_sm/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/network_ethernet/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/network_ib/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

+ 19 - 0
control_plane/roles/powervault_me4/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

appliance/roles/provision/files/Dockerfile → control_plane/roles/provision_cobbler/files/Dockerfile


appliance/roles/provision/files/cobbler_settings → control_plane/roles/provision_cobbler/files/cobbler_settings


+ 3 - 3
appliance/roles/provision/files/inventory_creation.yml

@@ -26,18 +26,18 @@
         vars_new: "{{ var| ipv4('address')| to_nice_yaml}}"
 
     - name: Create the static ip
-      shell: awk -F',' 'NR >1{print $3}' omnia/appliance/roles/provision/files/new_mapping_file.csv > static_hosts.yml
+      shell: awk -F',' 'NR >1{print $3}' omnia/control_plane/roles/provision/files/new_mapping_file.csv > static_hosts.yml
       changed_when: false
       ignore_errors: true
 
     - name: Create the dynamic inventory
       shell: |
-        echo "[all]" >  omnia/appliance/roles/inventory/files/provisioned_hosts.yml
+        echo "[all]" >  omnia/control_plane/roles/collect_node_info/files/provisioned_hosts.yml
         echo "{{ vars_new }}" > temp.txt
         egrep -o '[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' temp.txt >>dynamic_hosts.yml
       changed_when: false
       ignore_errors: true
 
     - name: Final inventory
-      shell: cat dynamic_hosts.yml static_hosts.yml| sort -ur  >> omnia/appliance/roles/inventory/files/provisioned_hosts.yml
+      shell: cat dynamic_hosts.yml static_hosts.yml| sort -ur  >> omnia/control_plane/roles/collect_node_info/files/provisioned_hosts.yml
       changed_when: false     

+ 5 - 6
appliance/roles/provision/files/kickstart.yml

@@ -35,14 +35,13 @@
       - tftp
       - httpd
 
-  - name: Cobbler get-loaders
-    command: cobbler get-loaders
+  - name: Remove loaders if it exists
+    command: rm -rfd /var/lib/cobbler/loaders
     changed_when: false
 
-  - name: Get fence agents
-    package:
-      name: fence-agents
-      state: present
+  - name: Untar loaders
+    command: tar -xf /root/omnia/control_plane/roles/provision_cobbler/files/loaders.tar -C /var/lib/cobbler
+    changed_when: false
 
   - name: Replace in /etc/debian
     replace:

BIN
control_plane/roles/provision_cobbler/files/loaders.tar


appliance/roles/provision/files/modules.conf → control_plane/roles/provision_cobbler/files/modules.conf


appliance/roles/provision/files/start_cobbler.yml → control_plane/roles/provision_cobbler/files/start_cobbler.yml


+ 7 - 1
appliance/roles/provision/files/temp_centos7.ks

@@ -38,7 +38,7 @@ rootpw --iscrypted password
 services --enabled="chronyd"
 
 # System timezone
-timezone Asia/Kolkata --isUtc
+timezone --utc ks_timezone
 
 # System bootloader configuration
 bootloader --location=mbr --boot-drive=sda
@@ -62,3 +62,9 @@ reboot
 net-tools
 %end
 
+%post
+$SNIPPET('post_install_kernel_options')
+$SNIPPET('cobbler_register')
+$SNIPPET('kickstart_done')
+%end
+

+ 2 - 0
appliance/roles/provision/files/temp_dhcp.template

@@ -19,6 +19,8 @@ set vendorclass = option vendor-class-identifier;
 option pxe-system-type code 93 = unsigned integer 16;
 
 subnet subnet_mask netmask net_mask {
+option routers router-ip;
+option domain-name-servers dns1, dns2;
 option subnet-mask net_mask;
 range dynamic-bootp start end;
 default-lease-time  21600;

appliance/roles/provision/files/tftp → control_plane/roles/provision_cobbler/files/tftp


appliance/roles/provision/files/tftp.yml → control_plane/roles/provision_cobbler/files/tftp.yml


+ 4 - 0
appliance/roles/provision/tasks/check_prerequisites.yml

@@ -44,12 +44,16 @@
     name: cobbler
   register: cobbler_image_result
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 - name: Check cobbler status on the machine
   docker_container_info:
     name: cobbler
   register: cobbler_result
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 - name: Update cobbler image status
   set_fact:

+ 2 - 0
appliance/roles/provision/tasks/cobbler_image.yml

@@ -23,6 +23,8 @@
       network: host
     state: present
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 - name: Run cobbler container
   command: "{{ cobbler_run_command }}"

appliance/roles/provision/tasks/configure_cobbler.yml → control_plane/roles/provision_cobbler/tasks/configure_cobbler.yml


+ 15 - 0
appliance/roles/provision/tasks/dhcp_configure.yml

@@ -32,6 +32,21 @@
     path: "{{ role_path }}/files/dhcp.template"
     regexp: '^option subnet-mask net_mask;'
     replace: 'option subnet-mask {{ netmask }};'
+  tags: install
+
+- name: Assign gateway
+  replace:
+    path: "{{ role_path }}/files/dhcp.template"
+    regexp: '^option routers router-ip;'
+    replace: 'option routers {{ dhcp_gateway }};'
+  tags: install
+
+- name: Assign DNS
+  replace:
+    path: "{{ role_path }}/files/dhcp.template"
+    regexp: '^option domain-name-servers dns1, dns2;'
+    replace: 'option domain-name-servers {{ dhcp_dns1 }}, {{ dhcp_dns2 }};'
+  tags: install
 
 - name: Assign DHCP range
   replace:

appliance/roles/provision/tasks/firewall_settings.yml → control_plane/roles/provision_cobbler/tasks/firewall_settings.yml


+ 3 - 3
appliance/roles/provision/tasks/main.yml

@@ -26,12 +26,12 @@
   import_tasks: firewall_settings.yml
   when: not cobbler_container_status
 
-- name: Include common variables
-  include_vars: ../../common/vars/main.yml
+- name: Include control_plane_common variables
+  include_vars: ../../control_plane_common/vars/main.yml
   when: not cobbler_container_status
 
 - name: Internet validation
-  include_tasks: ../../common/tasks/internet_validation.yml
+  include_tasks: ../../control_plane_common/tasks/internet_validation.yml
   when: not cobbler_container_status
 
 - name: Provision password validation

+ 1 - 1
appliance/roles/provision/tasks/mapping_file.yml

@@ -153,7 +153,7 @@
     dest: "{{ role_path }}/files/backup_mapping_file.csv"
 
 - name: Copy the dhcp.template inside container
-  command: docker exec cobbler cp /root/omnia/appliance/roles/provision/files/dhcp.template /etc/cobbler/dhcp.template
+  command: docker exec cobbler cp {{ role_path }}/files/dhcp.template /etc/cobbler/dhcp.template
   when:  ( cobbler_container_status == true ) and ( new_node_status == true )
 
 - name: Cobbler sync for adding new nodes

appliance/roles/provision/tasks/mount_iso.yml → control_plane/roles/provision_cobbler/tasks/mount_iso.yml


+ 7 - 0
appliance/roles/provision/tasks/provision_password.yml

@@ -87,3 +87,10 @@
     regexp: '^network  --bootproto=dhcp --device=nic --onboot=on'
     replace: 'network  --bootproto=dhcp --device={{ nic }} --onboot=on'
   tags: install
+
+- name: Configure kickstart file- timezone
+  replace:
+    path: "{{ role_path }}/files/centos7.ks"
+    regexp: '^timezone --utc ks_timezone'
+    replace: 'timezone --utc {{ ks_timezone }}'
+  tags: install

appliance/roles/provision/vars/main.yml → control_plane/roles/provision_cobbler/vars/main.yml


+ 19 - 0
control_plane/roles/provision_idrac/tasks/main.yml

@@ -0,0 +1,19 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+---
+
+# Will be updated later in each PR
+- name: Pass
+  debug:
+    msg: "Pass"

appliance/roles/web_ui/tasks/awx_configuration.yml → control_plane/roles/webui_awx/tasks/awx_configuration.yml


+ 4 - 0
appliance/roles/web_ui/tasks/check_awx_status.yml

@@ -24,12 +24,16 @@
     name: awx_task
   register: awx_task_result
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 - name: Check awx_web status on the machine
   docker_container_info:
     name: awx_web
   register: awx_web_result
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 - name: Update awx status
   set_fact:

appliance/roles/web_ui/tasks/clone_awx.yml → control_plane/roles/webui_awx/tasks/clone_awx.yml


appliance/roles/web_ui/tasks/firewall_settings.yml → control_plane/roles/webui_awx/tasks/firewall_settings.yml


appliance/roles/web_ui/tasks/install_awx.yml → control_plane/roles/webui_awx/tasks/install_awx.yml


appliance/roles/web_ui/tasks/install_awx_cli.yml → control_plane/roles/webui_awx/tasks/install_awx_cli.yml


+ 4 - 4
appliance/roles/web_ui/tasks/main.yml

@@ -18,12 +18,12 @@
   include_tasks: check_awx_status.yml
   tags: install
 
-- name: Include common variables
-  include_vars: ../../common/vars/main.yml
+- name: Include control_plane_common variables
+  include_vars: ../../control_plane_common/vars/main.yml
   tags: install
 
 - name: Internet validation
-  include_tasks: ../../common/tasks/internet_validation.yml
+  include_tasks: ../../control_plane_common/tasks/internet_validation.yml
   when: not awx_status
   tags: install
 
@@ -55,7 +55,7 @@
   tags: install
 
 - name: Internet validation
-  include_tasks: ../../common/tasks/internet_validation.yml
+  include_tasks: ../../control_plane_common/tasks/internet_validation.yml
   tags: install
 
 - name: Install AWX-CLI

+ 2 - 2
appliance/roles/web_ui/tasks/ui_accessibility.yml

@@ -74,8 +74,8 @@
             return_content: yes
           register: register_error
           until: awx_ui_msg in register_error.content
-          retries: 30
-          delay: 10
+          retries: 240
+          delay: 15
           changed_when: no
           no_log: True
       rescue:

+ 2 - 2
appliance/roles/web_ui/vars/main.yml

@@ -13,7 +13,7 @@
 # limitations under the License.
 ---
 
-# vars file for web_ui
+# vars file for webui_awx
 
 # Usage: clone_awx.yml
 awx_git_repo: "https://github.com/ansible/awx.git"
@@ -63,7 +63,7 @@ cobbler_username: root
 omnia_template_name: DeployOmnia
 omnia_playbook: omnia.yml
 inventory_template_name: DynamicInventory
-inventory_playbook: appliance/inventory.yml
+inventory_playbook: control_plane/collect_node_info.yml
 playbooks_verbosity: 0
 schedule_name: DynamicInventorySchedule
 schedule_rule: "DTSTART:20201201T000000Z RRULE:FREQ=MINUTELY;INTERVAL=10"

appliance/test/appliance_config_empty.yml → control_plane/test/appliance_config_empty.yml


appliance/test/appliance_config_test.yml → control_plane/test/appliance_config_test.yml


appliance/test/provisioned_hosts.yml → control_plane/test/provisioned_hosts.yml


appliance/test/test_common.yml → control_plane/test/test_common.yml


appliance/test/test_mapping_file → control_plane/test/test_mapping_file


appliance/test/test_provision_cc.yml → control_plane/test/test_provision_cc.yml


appliance/test/test_provision_cdip.yml → control_plane/test/test_provision_cdip.yml


appliance/test/test_provision_ndod.yml → control_plane/test/test_provision_ndod.yml


appliance/test/test_vars/test_common_vars.yml → control_plane/test/test_vars/test_common_vars.yml


appliance/test/test_vars/test_provision_vars.yml → control_plane/test/test_vars/test_provision_vars.yml


appliance/test/test_vars/test_web_ui_vars.yml → control_plane/test/test_vars/test_web_ui_vars.yml


appliance/test/test_web_ui.yml → control_plane/test/test_web_ui.yml


appliance/tools/passwordless_ssh.yml → control_plane/tools/passwordless_ssh.yml


+ 2 - 2
appliance/tools/provision_report.yml

@@ -14,9 +14,9 @@
 ---
 
 # This file used to generate a report of reachable and unreachable host of hpc cluster
-# This file can be executed only if provisioned_hosts.yml is created inside the path omnia/appliance/roles/inventory/files/provisioned_hosts.yml
+# This file can be executed only if provisioned_hosts.yml is created inside the path omnia/control_plane/roles/collect_node_info/files/provisioned_hosts.yml
 
-# Command to execute: ansible-playbook provision_report.yml -i ../roles/inventory/files/provisioned_hosts.yml
+# Command to execute: ansible-playbook provision_report.yml -i ../roles/collect_node_info/files/provisioned_hosts.yml
 
 - name: Fetch provision_password
   hosts: localhost

appliance/tools/roles/cluster_preperation/tasks/main.yml → control_plane/tools/roles/cluster_preperation/tasks/main.yml


appliance/tools/roles/cluster_preperation/tasks/passwordless_ssh.yml → control_plane/tools/roles/cluster_preperation/tasks/passwordless_ssh.yml


appliance/tools/roles/cluster_preperation/vars/main.yml → control_plane/tools/roles/cluster_preperation/vars/main.yml


+ 1 - 1
appliance/tools/roles/fetch_password/tasks/main.yml

@@ -13,7 +13,7 @@
 #  limitations under the License.
 ---
 - name: Include variables from common role
-  include_vars: "{{ role_path }}/../../../roles/common/vars/main.yml"
+  include_vars: "{{ role_path }}/../../../roles/control_plane_common/vars/main.yml"
   no_log: True
 
 - name: Check input config file is encrypted

appliance/tools/roles/hpc_cluster_report/tasks/main.yml → control_plane/tools/roles/hpc_cluster_report/tasks/main.yml


appliance/tools/roles/hpc_cluster_report/templates/provision_host_report.j2 → control_plane/tools/roles/hpc_cluster_report/templates/provision_host_report.j2


+ 3 - 3
docs/INSTALL_OMNIA.md

@@ -11,7 +11,7 @@ The following sections provide details on installing Omnia using CLI. If you wan
 
 1. Clone the Omnia repository:
 ``` 
-git clone https://github.com/dellhpc/omnia.git 
+git clone -b release https://github.com/dellhpc/omnia.git 
 ```
 __Note:__ After the Omnia repository is cloned, a folder named __omnia__ is created. Ensure that you do not rename this folder.
 
@@ -107,9 +107,9 @@ Commands to install JupyterHub and Kubeflow:
 * `ansible-playbook platforms/jupyterhub.yml -i inventory -e "ansible_python_interpreter=/usr/bin/python2"`
 * `ansible-playbook platforms/kubeflow.yml -i inventory -e "ansible_python_interpreter=/usr/bin/python2" `
 
-__Note:__ When the Internet connectivity is unstable or slow, it may take more time to pull the images to create the Kubeflow containers. If the time limit is exceeded, the **Apply Kubeflow configurations** task may fail. To resolve this issue, you must redeploy Kubernetes cluster and reinstall Kubeflow by completing the following steps:
+__Note:__ When the Internet connectivity is unstable or slow, it may take more time to pull the images to create the Kubeflow containers. If the time limit is exceeded, the Apply Kubeflow configurations task may fail. To resolve this issue, you must redeploy Kubernetes cluster and reinstall Kubeflow by completing the following steps:
 * Format the OS on manager and compute nodes.
-* In the `omnia_config.yml` file, change the k8s_cni variable value from calico to flannel.
+* In the omnia_config.yml file, change the k8s_cni variable value from calico to flannel.
 * Run the Kubernetes and Kubeflow playbooks.
 
 ## Add a new compute node to the cluster

+ 8 - 7
docs/INSTALL_OMNIA_APPLIANCE.md

@@ -11,7 +11,7 @@
 1. On the management node, change the working directory to the directory where you want to clone the Omnia Git repository.
 2. Clone the Omnia repository:
 ``` 
-git clone https://github.com/dellhpc/omnia.git 
+git clone -b release https://github.com/dellhpc/omnia.git 
 ```
 3. Change the directory to __omnia__: `cd omnia`
 4. Edit the `omnia_config.yml` file to:
@@ -32,22 +32,23 @@ __Note:__
 	
 	d. Provide a mapping file for DHCP configuration under `mapping_file_path`. The **mapping_file.csv** template file is present under `omnia/examples`. Enter the details in the order: `MAC, Hostname, IP`. The header in the template file must not be deleted before saving the file.  
 	If you want to continue without providing a mapping file, leave the `mapping_file_path` value as blank.  
-	__Note:__ Ensure that duplicate values are not provided for MAC, Hostname, and IP in the mapping file. The Hostname should not contain the following characters: , (comma), \. (period), and - (hyphen).
+	__Note:__ Ensure that duplicate values are not provided for MAC, Hostname, and IP in the mapping file. The Hostname should not contain the following characters: , (comma), \. (period), and _ (underscore).
 	
 	e. Provide valid DHCP range for HPC cluster under the variables `dhcp_start_ip_range` and `dhcp_end_ip_range`. 
 	
-7. Run `ansible-vault view appliance_config.yml --vault-password-file .vault_key` to view the set passwords of __appliance_config.yml__.
-
+	f. **GMT** is the default configured time zone set during the provisioning of OS on compute nodes. To change the time zone, edit the `timezone` variable and enter a time zone. You can set the time zone to **EST**, **CET**, **MST**, **CST6CDT**, or **PST8PDT**. For a list of available time zones, see the `appliance/roles/common/files/timezone.txt` file. 
+	
 Omnia considers the following usernames as default:  
 * `cobbler` for Cobbler Server
 * `admin` for AWX
 * `slurm` for MariaDB
 
-9. Run `ansible-playbook appliance.yml -e "ansible_python_interpreter=/usr/bin/python2"` to install Omnia appliance.
+7. Run `ansible-playbook appliance.yml` to install the Omnia appliance.  
 
-   
 Omnia creates a log file which is available at: `/var/log/omnia.log`.
 
+**Note**: If you want to view the Cobbler and AWX passwords provided in the **appliance_config.yml** file, run `ansible-vault view appliance_config.yml --vault-password-file .vault_key`.  
+
 ## Provision operating system on the target nodes 
 Omnia role used: *provision*  
 Ports used by Cobbler:  
@@ -183,6 +184,6 @@ The following __Slurm__ roles are provided by Omnia when __omnia.yml__ file is r
 	- Slurm exporter is a package for exporting metrics collected from Slurm resource scheduling system to prometheus.
 	- Slurm exporter is installed on the host like Slurm, and Slurm exporter will be successfully installed only if Slurm is installed.
 
-## Add a new compute node to the Cluster
+## Add a new compute node to the cluster
 
 If a new node is provisioned through Cobbler, the node address is automatically displayed on the AWX dashboard. The node is not assigned to any group. You can add the node to the compute group along with the existing nodes and run `omnia.yml` to add the new node to the cluster and update the configurations in the manager node.

+ 1 - 1
docs/PREINSTALL_OMNIA_APPLIANCE.md

@@ -10,7 +10,7 @@ Ensure that the following prequisites are met before installing the Omnia applia
 * To provision the bare metal servers, go to http://isoredirect.centos.org/centos/7/isos/x86_64/ and download the **CentOS-7-x86_64-Minimal-2009** ISO file.
 * For DHCP configuration, you can provide a mapping file. The provided details must be in the format: MAC, Hostname, IP. For example, `xx:xx:4B:C4:xx:44,validation01,172.17.0.81` and  `xx:xx:4B:C5:xx:52,validation02,172.17.0.82` are valid entries.  
 __Note:__ A template for mapping file is present in the `omnia/examples`, named `mapping_file.csv`. The header in the template file must not be deleted before saving the file.  
-__Note:__ Ensure that duplicate values are not provided for MAC, Hostname, and IP in the mapping file. The Hostname should not contain the following characters: , (comma), \. (period), and - (hyphen).
+__Note:__ Ensure that duplicate values are not provided for MAC, Hostname, and IP in the mapping file. The Hostname should not contain the following characters: , (comma), \. (period), and _ (underscore).
 * Connect one of the Ethernet cards on the management node to the HPC switch and the other ethernet card connected to the global network.
 * If SELinux is not disabled on the management node, disable it from `/etc/sysconfig/selinux` and restart the management node.
 * The default mode of PXE is __UEFI__, and the BIOS Legacy Mode is not supported.

+ 1 - 1
omnia.yml

@@ -126,5 +126,5 @@
   tags: slurm
 
 - name: Passwordless SSH between manager and compute nodes
-  include: appliance/tools/passwordless_ssh.yml
+  include: control_plane/tools/passwordless_ssh.yml
   when: hostvars['127.0.0.1']['appliance_status']

+ 6 - 0
omnia_config.yml

@@ -27,3 +27,9 @@ k8s_cni: "calico"
 # Default value is "10.244.0.0/16"
 # Make sure this value does not overlap with any of the host networks.
 k8s_pod_network_cidr: "10.244.0.0/16"
+
+# Path to directory hosting ansible config file (ansible.cfg file)
+# Default value is "/etc/ansible"
+# This directory is on the host running ansible, if ansible is installed using dnf
+# If ansible is installed using pip, this path should be set
+ansible_config_file_path: /etc/ansible

+ 31 - 1
roles/cluster_validation/tasks/fetch_password.yml

@@ -55,7 +55,8 @@
   when:
     - mariadb_password | length < 1 or
       k8s_cni | length < 1 or
-      k8s_pod_network_cidr | length < 1
+      k8s_pod_network_cidr | length < 1 or
+      ansible_config_file_path | length < 1
 
 - name: Assert mariadb_password
   assert:
@@ -88,8 +89,37 @@
     db_password: "{{ mariadb_password }}"
     k8s_cni: "{{ k8s_cni }}"
     k8s_pod_network_cidr: "{{ k8s_pod_network_cidr }}"
+    ansible_conf_file_path: "{{ ansible_config_file_path }}"
   no_log: True
 
+- name: Check whether ansible config file exists
+  stat:
+    path: "{{ ansible_conf_file_path }}/ansible.cfg"
+  register: ansible_conf_exists
+
+- name: Create the directory if it does not exist
+  file:
+    path: "{{ ansible_conf_file_path }}"
+    state: directory
+    mode: "{{ file_perm }}"
+  when: not ansible_conf_exists.stat.exists
+
+- name: Create ansible config file if it does not exist
+  copy:
+    dest: "{{ ansible_conf_file_path }}/ansible.cfg"
+    mode: "{{ file_perm }}"
+    content: |
+      [defaults]
+      log_path = /var/log/omnia.log
+  when: not ansible_conf_exists.stat.exists
+
+- name: Set omnia.log file
+  replace:
+    path: "{{ ansible_conf_file_path }}/ansible.cfg"
+    regexp: '#log_path = /var/log/ansible.log'
+    replace: 'log_path = /var/log/omnia.log'
+  when: ansible_conf_exists.stat.exists
+
 - name: Encrypt input config file
   command: >-
     ansible-vault encrypt {{ role_path }}/../../{{ config_filename }}

+ 0 - 0
roles/cluster_validation/vars/main.yml


Some files were not shown because too many files changed in this diff