aboutsummaryrefslogtreecommitdiffstats
path: root/roles/oom_generate_artifacts
diff options
context:
space:
mode:
Diffstat (limited to 'roles/oom_generate_artifacts')
-rw-r--r--roles/oom_generate_artifacts/defaults/main.yaml7
-rw-r--r--roles/oom_generate_artifacts/tasks/loadbalancer_facts.yaml71
-rw-r--r--roles/oom_generate_artifacts/tasks/main.yaml82
3 files changed, 160 insertions, 0 deletions
diff --git a/roles/oom_generate_artifacts/defaults/main.yaml b/roles/oom_generate_artifacts/defaults/main.yaml
new file mode 100644
index 0000000..2e8b012
--- /dev/null
+++ b/roles/oom_generate_artifacts/defaults/main.yaml
@@ -0,0 +1,7 @@
+---
+aai_server: aai.api.sparky.simpledemo.onap.org
+aai_port: 30233
+aai_user: AAI
+aai_password: AAI
+msb_server: msb.api.simpledemo.onap.org
+msb_port: 30280
diff --git a/roles/oom_generate_artifacts/tasks/loadbalancer_facts.yaml b/roles/oom_generate_artifacts/tasks/loadbalancer_facts.yaml
new file mode 100644
index 0000000..aa2afcf
--- /dev/null
+++ b/roles/oom_generate_artifacts/tasks/loadbalancer_facts.yaml
@@ -0,0 +1,71 @@
+---
+- name: retrieve istio-ingressgateway device information
+ command: "kubectl get svc -o json -n istio-system istio-ingressgateway"
+ register: ingress_gw
+ changed_when: "false"
+ when: use_servicemesh
+
+- name: get IP of portal loadbalancer
+ ansible.builtin.set_fact:
+ first_node_ip: "{{
+ (ingress_gw.stdout|from_json).status.loadBalancer.ingress.0.ip }}"
+ when: use_servicemesh
+
+- name: retrieve portal device information
+ command: "kubectl get svc -o json -n {{ onap_namespace }} portal-app"
+ register: portal
+ changed_when: "false"
+ when: portal_enabled and not use_servicemesh
+
+- name: get IP of portal loadbalancer
+ ansible.builtin.set_fact:
+ portal_lb: "{{
+ (portal.stdout|from_json).status.loadBalancer.ingress.0.ip }}"
+ ignore_errors: yes
+ register: portal_lb_ip
+ when: portal_enabled and not use_servicemesh
+
+- name: get external IP of portal loadbalancer
+ ansible.builtin.set_fact:
+ portal_lb: "{{ (portal.stdout|from_json).spec.externalIPs.0 }}"
+ ignore_errors: "yes"
+ register: portal_external_ip_check
+ when: portal_enabled and and not use_servicemesh and ((portal_lb_ip is not defined) or
+ (portal_lb_ip|length == 0))
+
+- name: "[Facts retrieved] get first node IP address (case ip not defined)"
+ ansible.builtin.set_fact:
+ first_node_ip: "{{
+ hostvars[groups['kube-node'].0].ansible_default_ipv4.address }}"
+ when: gather_nodes_fact and not use_servicemesh
+
+- name: "[No Facts retrieved] get first node IP address (case ip not defined)"
+ ansible.builtin.set_fact:
+ first_node_ip: "{{ hostvars[groups['kube-node'].0].ip }}"
+ when: not gather_nodes_fact and not use_servicemesh
+
+- block:
+ - name: list all used ips
+ ansible.builtin.set_fact:
+ used_ips: "{{ used_ips|default([]) + [
+ hostvars[item].ansible_default_ipv4.address ~ '/' ~
+ ((hostvars[item].ansible_default_ipv4.network ~ '/' ~
+ hostvars[item].ansible_default_ipv4.netmask) |
+ ipaddr('prefix'))
+ ] }}"
+ loop: "{{ groups['k8s-cluster'] }}"
+ - name: generate network in ipaddr type
+ ansible.builtin.set_fact:
+ network: "{{ (ansible_default_ipv4.network ~ '/' ~
+ ansible_default_ipv4.netmask) | ipaddr('net') }}"
+ - name: generate the list of addresses in network
+ ansible.builtin.set_fact:
+ addresses: "{{ addresses|default([]) + [network | ipaddr(item)] }}"
+ loop: "{{ range(1, network | ipaddr('size') - 1) | list }}"
+
+ - name: pick a random address for portal
+ ansible.builtin.set_fact:
+ portal_lb: "{{ addresses | difference(used_ips) | random }}"
+ when: gather_nodes_fact and
+ portal_enabled and not use_servicemesh and
+ ((portal_lb_ip is not defined) or (portal_lb_ip|length == 0))
diff --git a/roles/oom_generate_artifacts/tasks/main.yaml b/roles/oom_generate_artifacts/tasks/main.yaml
new file mode 100644
index 0000000..55559ed
--- /dev/null
+++ b/roles/oom_generate_artifacts/tasks/main.yaml
@@ -0,0 +1,82 @@
+---
+- name: generate load balancer facts
+ import_tasks: loadbalancer_facts.yaml
+
+- name: update portal app to reflect this choice
+ command: |
+ kubectl patch svc portal-app -p \
+ '{"spec":{"externalIPs":["{{ portal_lb | ipaddr('address') }}"] }}' \
+ -n {{ onap_namespace }}
+ when: gather_nodes_fact and
+ portal_enabled and
+ ((portal_lb_ip is not defined) or (portal_lb_ip|length == 0)) and
+ ((portal_external_ip_check is not defined) or
+ portal_external_ip_check.failed)
+
+- name: generate etc/hosts
+ become: "yes"
+ ansible.builtin.blockinfile:
+ path: /etc/hosts
+ marker: "# {mark} ANSIBLE MANAGED OOM HOSTS"
+ block: |
+ {{ first_node_ip }} portal.api.simpledemo.onap.org
+ {{ first_node_ip }} vid.api.simpledemo.onap.org
+ {{ first_node_ip }} sdc.api.fe.simpledemo.onap.org
+ {{ first_node_ip }} sdc.api.be.simpledemo.onap.org
+ {{ first_node_ip }} portal-sdk.simpledemo.onap.org
+ {{ first_node_ip }} policy.api.simpledemo.onap.org
+ {{ first_node_ip }} aai.api.sparky.simpledemo.onap.org
+ {{ first_node_ip }} cli.api.simpledemo.onap.org
+ {{ first_node_ip }} msb.api.simpledemo.onap.org
+ {{ first_node_ip }} so.api.simpledemo.onap.org
+ {{ first_node_ip }} appc.api.simpledemo.onap.org
+ {{ first_node_ip }} sdnc.api.simpledemo.onap.org
+ {{ first_node_ip }} nbi.api.simpledemo.onap.org
+ {{ first_node_ip }} consul.api.simpledemo.onap.org
+ {{ first_node_ip }} kibana.api.simpledemo.onap.org
+ {{ first_node_ip }} mr.api.simpledemo.onap.org
+ {{ first_node_ip }} uui.api.simpledemo.onap.org
+ {{ first_node_ip }} aaf.api.simpledemo.onap.org
+ {{ first_node_ip }} robot.api.simpledemo.onap.org
+ {{ first_node_ip }} dcae.api.simpledemo.onap.org
+ {{ first_node_ip }} sdc.workflow.plugin.simpledemo.onap.org
+ {{ first_node_ip }} sdc.dcae.plugin.simpledemo.onap.org
+
+- name: generate hosts file for Non-Ingress Setup
+ ansible.builtin.copy:
+ dest: "{{ playbook_dir }}/vars/hosts"
+ content: |
+ {{ first_node_ip }} portal.api.simpledemo.onap.org
+ {{ first_node_ip }} vid.api.simpledemo.onap.org
+ {{ first_node_ip }} sdc.api.fe.simpledemo.onap.org
+ {{ first_node_ip }} sdc.api.be.simpledemo.onap.org
+ {{ first_node_ip }} portal-sdk.simpledemo.onap.org
+ {{ first_node_ip }} policy.api.simpledemo.onap.org
+ {{ first_node_ip }} aai.api.sparky.simpledemo.onap.org
+ {{ first_node_ip }} cli.api.simpledemo.onap.org
+ {{ first_node_ip }} msb.api.simpledemo.onap.org
+ {{ first_node_ip }} so.api.simpledemo.onap.org
+ {{ first_node_ip }} appc.api.simpledemo.onap.org
+ {{ first_node_ip }} sdnc.api.simpledemo.onap.org
+ {{ first_node_ip }} nbi.api.simpledemo.onap.org
+ {{ first_node_ip }} consul.api.simpledemo.onap.org
+ {{ first_node_ip }} kibana.api.simpledemo.onap.org
+ {{ first_node_ip }} mr.api.simpledemo.onap.org
+ {{ first_node_ip }} uui.api.simpledemo.onap.org
+ {{ first_node_ip }} aaf.api.simpledemo.onap.org
+ {{ first_node_ip }} robot.api.simpledemo.onap.org
+ {{ first_node_ip }} dcae.api.simpledemo.onap.org
+ {{ first_node_ip }} sdc.workflow.plugin.simpledemo.onap.org
+ {{ first_node_ip }} sdc.dcae.plugin.simpledemo.onap.org
+ delegate_to: localhost
+
+- name: generate cluster config file
+ ansible.builtin.copy:
+ dest: "{{ playbook_dir }}/vars/cluster.yml"
+ content: |
+ oom_cluster_ip: {{ first_node_ip }}
+ onap_namespace: {{ onap_namespace }}
+ openstack_tenant_id: {{ openstack_tenant_id }}
+ openstack_tenant_name: {{ openstack_tenant_name }}
+ deployment_type: {{ deployment_type }}
+ delegate_to: localhost