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">
 <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)
 ![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
 ## Omnia Documentation
 For Omnia documentation, including installation and contribution instructions, please see the [website](https://dellhpc.github.io/omnia).
 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)
 * Lucas A. Wilson (Dell Technologies)
 * John Lockman (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.
 # 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.
 # The iso file should be CentOS7-2009-minimal edition.
 # Other iso file not supported.
 # 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 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.
 # 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.
 # The dhcp range for assigning the IPv4 address to the baremetal nodes.
 # Example: 10.1.23.1
 # Example: 10.1.23.1
+dhcp_gateway: ""
+dhcp_dns1: ""
+dhcp_dns2: ""
 dhcp_start_ip_range: ""
 dhcp_start_ip_range: ""
 dhcp_end_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
   connection: local
   gather_facts: no
   gather_facts: no
   roles:
   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");
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #  you may not use this file except in compliance with the License.
@@ -13,10 +13,7 @@
 #  limitations under the License.
 #  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"
     path: "{{ role_path }}/files/provisioned_hosts.yml"
   register: provisioned_file_result
   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
   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
   no_log: True
 
 
 - name: Update inventory file
 - 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
 - name: Create a docker volume
   docker_volume:
   docker_volume:
     name: "{{ docker_volume_name }}"
     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 }}"
     name: "{{ common_packages }}"
     state: present
     state: present
   tags: install
   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
       public_nic | length < 1 or
       iso_file_path | length < 1 or
       iso_file_path | length < 1 or
       dhcp_start_ip_range | 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
 - name: Save input variables from file
   set_fact:
   set_fact:
@@ -49,12 +54,39 @@
     nic:  "{{ hpc_nic }}"
     nic:  "{{ hpc_nic }}"
     internet_nic: "{{ public_nic }}"
     internet_nic: "{{ public_nic }}"
     path_for_iso_file: "{{ iso_file_path }}"
     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_start_ip: "{{ dhcp_start_ip_range | ipv4 }}"
     dhcp_end_ip: "{{ dhcp_end_ip_range | ipv4 }}"
     dhcp_end_ip: "{{ dhcp_end_ip_range | ipv4 }}"
     mapping_file: false
     mapping_file: false
     path_for_mapping_file: "{{ mapping_file_path }}"
     path_for_mapping_file: "{{ mapping_file_path }}"
+    ks_timezone: "{{ timezone }}"
+    ansible_conf_file_path: "{{ ansible_config_file_path ​}}"
   no_log: true
   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
 - name: Get the system hpc ip
   shell:  "ifconfig {{ hpc_nic }} | grep 'inet' |cut -d: -f2 |  awk '{ print $2}'"
   shell:  "ifconfig {{ hpc_nic }} | grep 'inet' |cut -d: -f2 |  awk '{ print $2}'"
   register: ip
   register: ip
@@ -243,6 +275,18 @@
     fail_msg: "{{ fail_dhcp_range }}"
     fail_msg: "{{ fail_dhcp_range }}"
   register: dhcp_end_ip_check
   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
 - name: Create ansible vault key
   set_fact:
   set_fact:
     vault_key: "{{ lookup('password', '/dev/null chars=ascii_letters') }}"
     vault_key: "{{ lookup('password', '/dev/null chars=ascii_letters') }}"
@@ -334,4 +378,4 @@
   command: >-
   command: >-
     ansible-vault encrypt {{ role_path }}/../../../{{ config_filename }}
     ansible-vault encrypt {{ role_path }}/../../../{{ config_filename }}
     --vault-password-file {{ role_path }}/../../../{{ config_vaultname }}
     --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.
 #  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
 - name: Set omnia.log file
   replace:
   replace:
-    path: /etc/ansible/ansible.cfg
+    path: "{{ default_ansible_config_file_path }}"
     regexp: '#log_path = /var/log/ansible.log'
     regexp: '#log_path = /var/log/ansible.log'
     replace: 'log_path = /var/log/omnia.log'
     replace: 'log_path = /var/log/omnia.log'
   tags: install
   tags: install
@@ -27,15 +38,22 @@
   register: os_value
   register: os_value
   tags: install
   tags: install
 
 
+- name: Fetch SElinux mode
+  command: sestatus
+  register: sestatus_current
+
 - name: Disable SElinux
 - 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
   tags: install
 
 
 - name: Status of SElinux
 - name: Status of SElinux
   fail:
   fail:
     msg: "{{ selinux_status }}"
     msg: "{{ selinux_status }}"
-  when: ansible_selinux.status != 'disabled'
+  when: '"SELinux status:                 enabled" in sestatus_current.stdout_lines'
   register: selinux_value
   register: selinux_value
   tags: install
   tags: install
 
 
@@ -43,4 +61,4 @@
   service:
   service:
     name: firewalld
     name: firewalld
     state: started
     state: started
-    enabled: yes
+    enabled: yes

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

@@ -30,9 +30,8 @@ common_packages:
   - nano
   - nano
   - lvm2
   - lvm2
   - gettext
   - gettext
-  - python-docker
   - net-tools
   - net-tools
-  - python-netaddr
+  - python3-netaddr
   - yum-plugin-versionlock
   - yum-plugin-versionlock
 
 
 # Usage: pre_requisite.yml
 # Usage: pre_requisite.yml
@@ -41,12 +40,15 @@ internet_timeout: 10
 hostname: github.com
 hostname: github.com
 port_no: 22
 port_no: 22
 os_name: CentOS
 os_name: CentOS
-os_version: '7.9' 
+os_version: '8.3' 
 internet_status: "Failed. No Internet connection. Make sure network is up."
 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"
 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"
 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_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
 # Usage: docker_installation.yml
 docker_repo_url: https://download.docker.com/linux/centos/docker-ce.repo
 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_mariadb_password: "mariadb_password validated"
 success_msg_k8s_cni: "Kubernetes CNI Validated"
 success_msg_k8s_cni: "Kubernetes CNI Validated"
 fail_msg_k8s_cni: "Failed. Kubernetes CNI is incorrect in omnia_config.yml"
 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}}"
         vars_new: "{{ var| ipv4('address')| to_nice_yaml}}"
 
 
     - name: Create the static ip
     - 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
       changed_when: false
       ignore_errors: true
       ignore_errors: true
 
 
     - name: Create the dynamic inventory
     - name: Create the dynamic inventory
       shell: |
       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
         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
         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
       changed_when: false
       ignore_errors: true
       ignore_errors: true
 
 
     - name: Final inventory
     - 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     
       changed_when: false     

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

@@ -35,14 +35,13 @@
       - tftp
       - tftp
       - httpd
       - 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
     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
   - name: Replace in /etc/debian
     replace:
     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"
 services --enabled="chronyd"
 
 
 # System timezone
 # System timezone
-timezone Asia/Kolkata --isUtc
+timezone --utc ks_timezone
 
 
 # System bootloader configuration
 # System bootloader configuration
 bootloader --location=mbr --boot-drive=sda
 bootloader --location=mbr --boot-drive=sda
@@ -62,3 +62,9 @@ reboot
 net-tools
 net-tools
 %end
 %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;
 option pxe-system-type code 93 = unsigned integer 16;
 
 
 subnet subnet_mask netmask net_mask {
 subnet subnet_mask netmask net_mask {
+option routers router-ip;
+option domain-name-servers dns1, dns2;
 option subnet-mask net_mask;
 option subnet-mask net_mask;
 range dynamic-bootp start end;
 range dynamic-bootp start end;
 default-lease-time  21600;
 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
     name: cobbler
   register: cobbler_image_result
   register: cobbler_image_result
   tags: install
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 
 - name: Check cobbler status on the machine
 - name: Check cobbler status on the machine
   docker_container_info:
   docker_container_info:
     name: cobbler
     name: cobbler
   register: cobbler_result
   register: cobbler_result
   tags: install
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 
 - name: Update cobbler image status
 - name: Update cobbler image status
   set_fact:
   set_fact:

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

@@ -23,6 +23,8 @@
       network: host
       network: host
     state: present
     state: present
   tags: install
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 
 - name: Run cobbler container
 - name: Run cobbler container
   command: "{{ cobbler_run_command }}"
   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"
     path: "{{ role_path }}/files/dhcp.template"
     regexp: '^option subnet-mask net_mask;'
     regexp: '^option subnet-mask net_mask;'
     replace: 'option subnet-mask {{ netmask }};'
     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
 - name: Assign DHCP range
   replace:
   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
   import_tasks: firewall_settings.yml
   when: not cobbler_container_status
   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
   when: not cobbler_container_status
 
 
 - name: Internet validation
 - name: Internet validation
-  include_tasks: ../../common/tasks/internet_validation.yml
+  include_tasks: ../../control_plane_common/tasks/internet_validation.yml
   when: not cobbler_container_status
   when: not cobbler_container_status
 
 
 - name: Provision password validation
 - 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"
     dest: "{{ role_path }}/files/backup_mapping_file.csv"
 
 
 - name: Copy the dhcp.template inside container
 - 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 )
   when:  ( cobbler_container_status == true ) and ( new_node_status == true )
 
 
 - name: Cobbler sync for adding new nodes
 - 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'
     regexp: '^network  --bootproto=dhcp --device=nic --onboot=on'
     replace: 'network  --bootproto=dhcp --device={{ nic }} --onboot=on'
     replace: 'network  --bootproto=dhcp --device={{ nic }} --onboot=on'
   tags: install
   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
     name: awx_task
   register: awx_task_result
   register: awx_task_result
   tags: install
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 
 - name: Check awx_web status on the machine
 - name: Check awx_web status on the machine
   docker_container_info:
   docker_container_info:
     name: awx_web
     name: awx_web
   register: awx_web_result
   register: awx_web_result
   tags: install
   tags: install
+  vars:
+    ansible_python_interpreter: "/usr/bin/python3"
 
 
 - name: Update awx status
 - name: Update awx status
   set_fact:
   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
   include_tasks: check_awx_status.yml
   tags: install
   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
   tags: install
 
 
 - name: Internet validation
 - name: Internet validation
-  include_tasks: ../../common/tasks/internet_validation.yml
+  include_tasks: ../../control_plane_common/tasks/internet_validation.yml
   when: not awx_status
   when: not awx_status
   tags: install
   tags: install
 
 
@@ -55,7 +55,7 @@
   tags: install
   tags: install
 
 
 - name: Internet validation
 - name: Internet validation
-  include_tasks: ../../common/tasks/internet_validation.yml
+  include_tasks: ../../control_plane_common/tasks/internet_validation.yml
   tags: install
   tags: install
 
 
 - name: Install AWX-CLI
 - name: Install AWX-CLI

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

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

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

@@ -13,7 +13,7 @@
 # limitations under the License.
 # limitations under the License.
 ---
 ---
 
 
-# vars file for web_ui
+# vars file for webui_awx
 
 
 # Usage: clone_awx.yml
 # Usage: clone_awx.yml
 awx_git_repo: "https://github.com/ansible/awx.git"
 awx_git_repo: "https://github.com/ansible/awx.git"
@@ -63,7 +63,7 @@ cobbler_username: root
 omnia_template_name: DeployOmnia
 omnia_template_name: DeployOmnia
 omnia_playbook: omnia.yml
 omnia_playbook: omnia.yml
 inventory_template_name: DynamicInventory
 inventory_template_name: DynamicInventory
-inventory_playbook: appliance/inventory.yml
+inventory_playbook: control_plane/collect_node_info.yml
 playbooks_verbosity: 0
 playbooks_verbosity: 0
 schedule_name: DynamicInventorySchedule
 schedule_name: DynamicInventorySchedule
 schedule_rule: "DTSTART:20201201T000000Z RRULE:FREQ=MINUTELY;INTERVAL=10"
 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 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
 - name: Fetch provision_password
   hosts: localhost
   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.
 #  limitations under the License.
 ---
 ---
 - name: Include variables from common role
 - 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
   no_log: True
 
 
 - name: Check input config file is encrypted
 - 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:
 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.
 __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/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" `
 * `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.
 * 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.
 * Run the Kubernetes and Kubeflow playbooks.
 
 
 ## Add a new compute node to the cluster
 ## 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.
 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:
 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`
 3. Change the directory to __omnia__: `cd omnia`
 4. Edit the `omnia_config.yml` file to:
 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.  
 	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.  
 	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`. 
 	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:  
 Omnia considers the following usernames as default:  
 * `cobbler` for Cobbler Server
 * `cobbler` for Cobbler Server
 * `admin` for AWX
 * `admin` for AWX
 * `slurm` for MariaDB
 * `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`.
 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 
 ## Provision operating system on the target nodes 
 Omnia role used: *provision*  
 Omnia role used: *provision*  
 Ports used by Cobbler:  
 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 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.
 	- 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.
 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.
 * 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.  
 * 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:__ 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.
 * 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.
 * 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.
 * 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
   tags: slurm
 
 
 - name: Passwordless SSH between manager and compute nodes
 - 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']
   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"
 # Default value is "10.244.0.0/16"
 # Make sure this value does not overlap with any of the host networks.
 # Make sure this value does not overlap with any of the host networks.
 k8s_pod_network_cidr: "10.244.0.0/16"
 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:
   when:
     - mariadb_password | length < 1 or
     - mariadb_password | length < 1 or
       k8s_cni | 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
 - name: Assert mariadb_password
   assert:
   assert:
@@ -88,8 +89,37 @@
     db_password: "{{ mariadb_password }}"
     db_password: "{{ mariadb_password }}"
     k8s_cni: "{{ k8s_cni }}"
     k8s_cni: "{{ k8s_cni }}"
     k8s_pod_network_cidr: "{{ k8s_pod_network_cidr }}"
     k8s_pod_network_cidr: "{{ k8s_pod_network_cidr }}"
+    ansible_conf_file_path: "{{ ansible_config_file_path }}"
   no_log: True
   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
 - name: Encrypt input config file
   command: >-
   command: >-
     ansible-vault encrypt {{ role_path }}/../../{{ config_filename }}
     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