diff options
Diffstat (limited to 'roles/oom_generate_artifacts')
-rw-r--r-- | roles/oom_generate_artifacts/defaults/main.yaml | 7 | ||||
-rw-r--r-- | roles/oom_generate_artifacts/tasks/loadbalancer_facts.yaml | 71 | ||||
-rw-r--r-- | roles/oom_generate_artifacts/tasks/main.yaml | 82 |
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 |