Browse Source

AWX configuration and deployment

Signed-off-by: sakshiarora13 <sakshi_arora1@dell.com>
John Lockman 4 years ago
parent
commit
3e5b95af8f

+ 24 - 0
appliance/inventory.yml

@@ -0,0 +1,24 @@
+# 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.
+---
+
+# inventory playbook. Will be updated later
+- name: omnia
+  hosts: localhost
+  connection: local
+  gather_facts: no
+  tasks:
+    - name: Hello
+      debug:
+        msg: "Hello inventory.yml"

+ 0 - 21
appliance/roles/core/tasks/main.yml

@@ -1,21 +0,0 @@
-#  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: Install core  is called
-  debug:
-    msg:
-      - "core container is created"
-

+ 0 - 2
appliance/roles/core/vars/main.yml

@@ -1,2 +0,0 @@
----
-# vars file for core

+ 153 - 0
appliance/roles/web_ui/files/awx_configuration.yml

@@ -0,0 +1,153 @@
+# 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.
+---
+
+# Playbook to configure AWX
+- name: Configure AWX
+  hosts: localhost
+  connection: local
+  gather_facts: no
+  tasks:
+    - name: Include vars file
+      include_vars: ../vars/main.yml
+
+    # Get Current AWX configuration
+    - name: Get organization list
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        organizations list -f human
+      register: organizations_list
+
+    - name: Get project list
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        projects list -f human
+      register: projects_list
+
+    - name: Get inventory list
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        inventory list -f human
+      register: inventory_list
+
+    - name: Get template list
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        job_templates list -f human
+      register: job_templates_list
+
+    - name: If omnia-inventory exists, fetch group names in the inventory
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        groups list --inventory "{{ omnia_inventory_name }}" -f human
+      register: groups_list
+      when: omnia_inventory_name in inventory_list.stdout
+
+    - name: Get schedules list
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        schedules list -f human
+      register: schedules_list
+
+    # Delete Default Configurations
+    - name: Delete default organization
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        organizations delete "{{ default_org }}"
+      when: default_org in organizations_list.stdout
+
+    - name: Delete default job template
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        job_templates delete "{{ default_template }}"
+      when: default_template in job_templates_list.stdout
+
+    - name: Delete default project
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        projects delete "{{ default_projects }}"
+      when: default_projects in projects_list.stdout
+
+    # Create required configuration if not present
+    - name: Create organisation
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        organizations create --name "{{ organization_name }}"
+      when: organization_name not in organizations_list.stdout
+
+    - name: Create new project
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        projects create --name "{{ project_name }}" --organization "{{ organization_name }}"
+        --local_path "{{ dir_name }}"
+      when: project_name not in projects_list.stdout
+
+    - name: Create new omnia inventory
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        inventory create --name "{{ omnia_inventory_name }}" --organization "{{ organization_name }}"
+      when: omnia_inventory_name not in inventory_list.stdout
+
+    - name: Create groups in omnia inventory
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        groups create --name "{{ item }}" --inventory "{{ omnia_inventory_name }}"
+      when: omnia_inventory_name not in inventory_list.stdout or item not in groups_list.stdout
+      loop: "{{ group_names }}"
+
+    - name: Create template to deploy omnia
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        job_templates create
+        --name "{{ omnia_template_name }}"
+        --job_type run
+        --inventory "{{ omnia_inventory_name }}"
+        --project "{{ project_name }}"
+        --playbook "{{ omnia_playbook }}"
+        --verbosity "{{ playbooks_verbosity }}"
+        --ask_skip_tags_on_launch true
+      when: omnia_template_name not in job_templates_list.stdout
+
+    - name: Create template to fetch dynamic inventory
+      command: >-
+        awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+        job_templates create
+        --name "{{ inventory_template_name }}"
+        --job_type run
+        --inventory "{{ omnia_inventory_name }}"
+        --project "{{ project_name }}"
+        --playbook "{{ inventory_playbook }}"
+        --verbosity "{{ playbooks_verbosity }}"
+        --use_fact_cache true
+      when: inventory_template_name not in job_templates_list.stdout
+
+    - name: Schedule dynamic inventory template
+      block:
+        - name: Get unified job template list
+          command: >-
+            awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+            unified_job_templates list --name "{{ inventory_template_name }}" -f human
+          register: unified_job_template_list
+
+        - name: Get job ID
+          set_fact:
+            job_id: "{{ unified_job_template_list.stdout | regex_search('[0-9]+') }}"
+
+        - name: Schedule dynamic inventory job
+          command: >-
+            awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
+            schedules create --name "{{ schedule_name }}"
+            --unified_job_template="{{ job_id }}" --rrule="{{ schedule_rule }}"
+
+      when: schedule_name not in schedules_list.stdout

+ 118 - 0
appliance/roles/web_ui/tasks/awx_password.yml

@@ -0,0 +1,118 @@
+# 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.
+---
+
+#Tasks for getting and encrypting AWX Password
+- name: Clone AWX repo
+  git:
+    repo: "{{ awx_git_repo }}"
+    dest: "{{ awx_repo_path }}"
+    force: yes
+  tags: install
+
+- name: AWX password
+  block:
+    - name: Take awx password
+      pause:
+        prompt: "{{ prompt_password }}"
+        echo: no
+      register: prompt_admin_password
+      until:
+        - prompt_admin_password.user_input | length >  min_length| int  - 1
+        - '"-" not in prompt_admin_password.user_input '
+        - '"\\" not in prompt_admin_password.user_input '
+        - '"\"" not in prompt_admin_password.user_input '
+        - " \"'\" not in prompt_admin_password.user_input "
+      retries: "{{ retries }}"
+      delay: "{{ retry_delay }}"
+      when: admin_password is not defined and no_prompt is not defined
+  rescue:
+    - name: Abort if password validation fails
+      fail:
+        msg: "{{ msg_incorrect_password_format }}"
+  tags: install
+
+- name: Assert admin_password if prompt not given
+  assert:
+    that:
+        - admin_password | length >  min_length| int  - 1
+        - '"-" not in admin_password '
+        - '"\\" not in admin_password '
+        - '"\"" not in admin_password '
+        - " \"'\" not in admin_password "
+    success_msg: "{{ success_msg_pwd_format }}"
+    fail_msg: "{{ fail_msg_pwd_format }}"
+  register: msg_pwd_format
+  when: admin_password is defined and no_prompt is defined
+
+- name: Save admin password
+  set_fact:
+    admin_password: "{{ prompt_admin_password.user_input }}"
+  when: no_prompt is not defined
+
+- name: Confirmation
+  block:
+    - name: Confirm AWX password
+      pause:
+        prompt: "{{ confirm_password }}"
+        echo: no
+      register: prompt_admin_password_confirm
+      until: admin_password == prompt_admin_password_confirm.user_input
+      retries: "{{ confirm_retries }}"
+      delay: "{{ retry_delay }}"
+      when: admin_password_confirm is not defined and no_prompt is not defined
+  rescue:
+    - name: Abort if password confirmation failed
+      fail:
+        msg: "{{ msg_failed_password_confirm }}"
+  tags: install
+
+- name: Assert admin_password_confirm if prompt not given
+  assert:
+    that: admin_password == admin_password_confirm
+    success_msg: "{{ success_msg_pwd_confirm }}"
+    fail_msg: "{{ fail_msg_pwd_confirm }}"
+  register: msg_pwd_confirm
+  when: admin_password_confirm is defined and no_prompt is defined
+
+- name: Create ansible vault key
+  set_fact:
+    vault_key: "{{ lookup('password', '/dev/null chars=ascii_letters') }}"
+  tags: install
+
+- name: Save vault key
+  copy:
+    dest: "{{ awx_installer_path + vault_file }}"
+    content: |
+      {{ vault_key }}
+    owner: root
+    force: yes
+  tags: install
+
+- name: Encrypt awx password
+  command: ansible-vault encrypt_string "{{ admin_password }}" --name admin_password --vault-password-file "{{ vault_file }}"
+  register: encrypt_password
+  args:
+    chdir: "{{ awx_installer_path }}"
+  tags: install
+
+- name: Store encrypted password
+  copy:
+    dest: "{{ awx_installer_path + awx_password_file }}"
+    content: |
+      ---
+      {{ encrypt_password.stdout }}
+    force: yes
+    owner: root
+  tags: install

+ 48 - 0
appliance/roles/web_ui/tasks/check_prerequisites.yml

@@ -0,0 +1,48 @@
+# 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.
+---
+
+#Tasks for verifying if AWX is already installed on the system
+- name: Initialize variables
+  set_fact:
+    awx_status: false
+    awx_task_status: false
+  tags: install
+
+- name: Check awx_task status on the machine
+  docker_container_info:
+    name: awx_task
+  register: awx_task_result
+  tags: install
+
+- name: Update awx status
+  set_fact:
+    awx_task_status: true
+  when: awx_task_result.exists
+  tags: install
+
+- name: Check awx_web status on the machine
+  docker_container_info:
+    name: awx_web
+  register: awx_web_result
+  when: awx_task_status
+  tags: install
+
+- name: Update awx status
+  set_fact:
+    awx_status: true
+  when:
+    - awx_task_result.exists
+    - awx_web_result.exists
+  tags: install

+ 40 - 0
appliance/roles/web_ui/tasks/firewall_settings.yml

@@ -0,0 +1,40 @@
+# 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.
+---
+
+#Tasks for modifying firewall configurations for AWX
+
+- name: Masquerading on public zone
+  firewalld:
+    masquerade: yes
+    state: enabled
+    permanent: 'true'
+    zone: public
+  tags: install
+
+- name: Add HTTP and HTTPS services to firewalld
+  firewalld:
+    service: "{{ item }}"
+    permanent: true
+    state: enabled
+  with_items:
+    - http
+    - https
+  tags: install
+
+- name: Reboot firewalld
+  systemd:
+    name: firewalld
+    state: reloaded
+  tags: install

+ 45 - 0
appliance/roles/web_ui/tasks/install_awx.yml

@@ -0,0 +1,45 @@
+# 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.
+---
+
+# Tasks for installing AWX
+- name: Store omnia parent directory path
+  set_fact:
+     dir_path:
+  tags: install
+
+- name: Change inventory file
+  replace:
+    path: "{{ awx_inventory_path }}"
+    regexp: "{{ item.regexp }}"
+    replace: "{{ item.replace }}"
+  loop:
+    - { name: Project data directory, regexp: "{{ project_data_dir_old }}" , replace: "{{ project_data_dir_new }}" }
+    - { name: Alternate DNS Servers, regexp: "{{ awx_alternate_dns_servers_old }}", replace: "{{ awx_alternate_dns_servers_new }}" }
+    - { name: Credentials, regexp: "{{ admin_password_old }}", replace: "{{ admin_password_new }}"}
+  loop_control:
+    label: "{{ item.name }}"
+  tags: install
+
+- name: Create pgdocker directory
+  file:
+    path: "{{ pgdocker_dir_path }}"
+    state: directory
+  tags: install
+
+- name: Run AWX install.yml file
+  command: ansible-playbook -i inventory install.yml -e @"{{ awx_password_file }}" --vault-password-file "{{ vault_file }}"
+  args:
+    chdir: "{{ awx_installer_path }}"
+  tags: install

+ 32 - 0
appliance/roles/web_ui/tasks/install_awx_cli.yml

@@ -0,0 +1,32 @@
+# 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.
+---
+
+# Tasks for installing AWX-CLI
+- name: Add AWX CLI repo
+  block:
+    - get_url:
+        url: "{{ awx_cli_repo }}"
+        dest: "{{ awx_cli_repo_path }}"
+    - replace:
+        path: "{{ awx_cli_repo_path }}"
+        regexp: 'gpgcheck=1'
+        replace: 'gpgcheck=0'
+  tags: install
+
+- name: Install AWX-CLI
+  package:
+    name: ansible-tower-cli
+    state: present
+  tags: install

+ 64 - 15
appliance/roles/web_ui/tasks/main.yml

@@ -1,21 +1,70 @@
-#  Copyright 2020 Dell Inc. or its subsidiaries. All Rights Reserved.
+# 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
+# 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
+#     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.
-
+# 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: Install awx is called
-  debug:
-    msg:
-      - "awx installation started"
+# Tasks for Deploying AWX on the system
+- name: Check AWX status on machine
+  include_tasks: check_prerequisites.yml
+  tags: install
+
+- name: Include common variables
+  include_vars: ../../common/vars/main.yml
+  tags: install
+
+- name: Internet validation
+  include_tasks: ../../common/tasks/internet_validation.yml
+  when: not awx_status
+  tags: install
+
+- name: Get and encrypt AWX password
+  include_tasks: awx_password.yml
+  when: not awx_status
+  tags: install
+
+- name: Modify firewall config
+  include_tasks: firewall_settings.yml
+  when: not awx_status
+  tags: install
+
+- name: Install AWX
+  include_tasks: install_awx.yml
+  when: not awx_status
+  tags: install
+
+- name: Status message
+  block:
+    - debug:
+        msg: "{{ message_skipped }}"
+        verbosity: 2
+      when: awx_status
+    - debug:
+        msg: "{{ message_installed }}"
+        verbosity: 2
+      when: not awx_status
+  tags: install
+
+- name: Internet validation
+  include_tasks: ../../common/tasks/internet_validation.yml
+  tags: install
+
+- name: Install AWX-CLI
+  include_tasks: install_awx_cli.yml
+  tags: install
 
+- name: AWX configuration
+  command: >-
+    ansible-playbook "{{ role_path }}"/files/awx_configuration.yml
+    -e @"{{ awx_installer_path + awx_password_file }}"
+    --vault-password-file "{{ awx_installer_path + vault_file }}"
+  tags: install

+ 74 - 1
appliance/roles/web_ui/vars/main.yml

@@ -1,2 +1,75 @@
+# 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.
 ---
-# vars file for web-ui
+
+# vars file for web_ui
+
+# Usage: awx_password.yml
+awx_git_repo: "https://github.com/ansible/awx.git"
+min_length: 8
+retries: 3
+confirm_retries: 1
+retry_delay: 0.01
+prompt_password: "Enter AWX password.( Min. Length of Password should be {{ min_length| int }}. Dont use chars: - \' \\ \" )"
+confirm_password: "Confirm AWX Password"
+msg_incorrect_password_format: "Failed. Password format not correct."
+msg_failed_password_confirm: "Failed. Passwords did not match"
+docker_volume: "/var/lib/docker/volumes/{{ docker_volume_name }}"
+awx_repo_path: "{{ docker_volume }}/awx/"
+awx_installer_path: "{{ awx_repo_path }}/installer/"
+vault_file: .vault_key
+awx_password_file: .password.yml
+success_msg_pwd_format: "admin_password validated"
+fail_msg_pwd_format: "admin_password validation failed"
+success_msg_pwd_confirm: "admin_password confirmed"
+fail_msg_pwd_confirm: "admin_password confirmation failed"
+
+# Usage: install_awx.yml
+awx_inventory_path: "{{ awx_repo_path }}/installer/inventory"
+pgdocker_dir_path: /var/lib/pgdocker
+project_data_dir_old: "#project_data_dir=/var/lib/awx/projects"
+project_data_dir_new: "project_data_dir= {{ role_path + '/../../../..' }} "
+awx_alternate_dns_servers_old: '#awx_alternate_dns_servers="10.1.2.3,10.2.3.4"'
+awx_alternate_dns_servers_new: 'awx_alternate_dns_servers="8.8.8.8,8.8.4.4"'
+admin_password_old: "admin_password=password"
+admin_password_new: "#admin_password=password"
+
+# Usage: main.yml
+message_skipped: "Installation Skipped: AWX instance is already running on your system"
+message_installed: "Installation Successful"
+
+# Usage: install_awx_cli.yml
+awx_cli_repo: "https://releases.ansible.com/ansible-tower/cli/ansible-tower-cli-centos8.repo"
+awx_cli_repo_path: "/etc/yum.repos.d/ansible-tower-cli-centos8.repo"
+
+# Usage: awx_configuration.yml
+awx_ip: http://localhost
+awx_user: admin         #Don't change it. It is set as admin while installing AWX
+default_org: Default
+default_template: 'Demo Job Template'
+default_projects: 'Demo Project'
+dir_name: omnia
+organization_name: DellEMC
+project_name: omnia
+omnia_inventory_name: omnia_inventory
+group_names:
+  - manager
+  - compute
+omnia_template_name: DeployOmnia
+omnia_playbook: omnia.yml
+inventory_template_name: DynamicInventory
+inventory_playbook: appliance/inventory.yml
+playbooks_verbosity: 0
+schedule_name: DynamicInventorySchedule
+schedule_rule: "DTSTART:20201201T000000Z RRULE:FREQ=MINUTELY;INTERVAL=10"

+ 1 - 1
kubernetes/roles/startservices/tasks/main.yml

@@ -42,7 +42,7 @@
   tags: init
 
 - name: Start K8S Dashboard
-  shell: kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta6/aio/deploy/recommended.yaml
+  shell: kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
   tags: init
 
 - name: Helm - Add Stable Repo

+ 26 - 0
omnia.yml

@@ -0,0 +1,26 @@
+# 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.
+---
+
+# Omnia playbook. Will be updated later.
+
+- name: omnia
+  hosts: localhost
+  connection: local
+  gather_facts: no
+  tasks:
+    - name: Hello
+      debug:
+        msg: "Hello omnia.yml"
+