diff options
Diffstat (limited to 'xci/installer/osh/playbooks')
15 files changed, 759 insertions, 0 deletions
diff --git a/xci/installer/osh/playbooks/configure-kubenet.yml b/xci/installer/osh/playbooks/configure-kubenet.yml new file mode 100644 index 00000000..18a126c1 --- /dev/null +++ b/xci/installer/osh/playbooks/configure-kubenet.yml @@ -0,0 +1,51 @@ +--- +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2018 SUSE LINUX GmbH and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +# NOTE(hwoarang) Kubenet expects networking to be prepared by the administrator so it's necessary +# to do that as part of the node configuration. All we need is to add static routes on every node +# so cbr0 interfaces can talk to each other. +- name: Prepare networking for kubenet + hosts: k8s-cluster + remote_user: root + gather_facts: True + become: yes + vars_files: + - "{{ xci_path }}/xci/var/opnfv.yml" + tasks: + - name: Configure static routes + block: + - name: Collect cbr0 information from the nodes + set_fact: + kubenet_xci_static_routes: |- + {% set static_routes = [] %} + {% for host in groups['k8s-cluster']|select("ne", inventory_hostname) %} + {%- set _ = static_routes.append( + {'network': (hostvars[host]['ansible_cbr0']['ipv4']['network']+'/'+ + hostvars[host]['ansible_cbr0']['ipv4']['netmask'])|ipaddr('net'), + 'gateway': hostvars[host]['ansible_default_ipv4']['address']}) -%} + {% endfor %} + {{ static_routes }} + + - name: Add static routes on each node + shell: "ip route show | grep -q {{ item.network }} || ip route add {{ item.network }} via {{ item.gateway }}" + with_items: "{{ kubenet_xci_static_routes }}" + loop_control: + label: "{{ item.network }}" + when: deploy_scenario.find('k8-nosdn-') != -1 + + - name: Ensure rp_filter is disabled on localhost + sysctl: + name: net.ipv4.conf.all.rp_filter + sysctl_set: yes + state: present + value: "{{ (kubenet_xci_static_routes is defined) | ternary(0, 1) }}" + reload: yes + delegate_to: localhost + run_once: True diff --git a/xci/installer/osh/playbooks/configure-opnfvhost.yml b/xci/installer/osh/playbooks/configure-opnfvhost.yml new file mode 100644 index 00000000..54e32149 --- /dev/null +++ b/xci/installer/osh/playbooks/configure-opnfvhost.yml @@ -0,0 +1,109 @@ +--- +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +- hosts: opnfv + remote_user: root + vars_files: + - "{{ xci_path }}/xci/var/opnfv.yml" + + pre_tasks: + - name: Load distribution variables + include_vars: + file: "{{ item }}" + with_items: + - "{{ xci_path }}/xci/var/{{ ansible_os_family }}.yml" + - name: Set facts for remote deployment + set_fact: + remote_xci_path: "{{ ansible_env.HOME }}/releng-xci" + remote_xci_flavor_files: "{{ ansible_env.HOME }}/releng-xci/xci/installer/{{ installer_type }}/files/{{ xci_flavor }}" + remote_xci_playbooks: "{{ ansible_env.HOME }}/releng-xci/xci/playbooks" + + roles: + - role: bootstrap-host + configure_network: xci_flavor != 'aio' + + tasks: + - name: Create list of files to copy + shell: | + git ls-tree -r --name-only HEAD > {{ xci_cache }}/releng-xci.files + echo ".git/" >> {{ xci_cache }}/releng-xci.files + echo ".cache/repos/" >> {{ xci_cache }}/releng-xci.files + echo ".cache/xci.env" >> {{ xci_cache }}/releng-xci.files + args: + executable: /bin/bash + chdir: "{{ xci_path }}" + changed_when: False + delegate_to: 127.0.0.1 + tags: + - skip_ansible_lint + + - name: Copy releng-xci to remote host + synchronize: + archive: yes + src: "{{ xci_path }}/" + dest: "{{ remote_xci_path }}" + delete: yes + rsync_opts: + - "--recursive" + - "--files-from={{ xci_cache }}/releng-xci.files" + + - name: delete the opnfv_inventory directory + file: + path: "{{ remote_xci_path }}/.cache/repos/kubespray/opnfv_inventory" + state: absent + + - name: make sure kubespray/opnfv_inventory/group_vars/ exist + file: + path: "{{ remote_xci_path }}/.cache/repos/kubespray/opnfv_inventory/group_vars" + state: directory + + - name: copy kubespray inventory directory + file: + src: "{{ remote_xci_playbooks }}/dynamic_inventory.py" + path: "{{ remote_xci_path }}/.cache/repos/kubespray/opnfv_inventory/dynamic_inventory.py" + state: link + + - name: Reload XCI deployment host facts + setup: + filter: ansible_local + gather_subset: "!all" + delegate_to: 127.0.0.1 + + - name: Prepare everything to run the {{ deploy_scenario }} role + include_role: + name: "{{ hostvars['opnfv'].ansible_local.xci.scenarios.role }}" + + - name: Install required packages + package: + name: "{{ (ansible_pkg_mgr == 'zypper') | ternary('dbus-1', 'dbus') }}" + state: present + update_cache: "{{ (ansible_pkg_mgr in ['apt', 'zypper']) | ternary('yes', omit) }}" + when: xci_flavor == 'aio' + + - name: change dashboard server type to NodePort + lineinfile: + path: "{{ remote_xci_path }}/.cache/repos/kubespray/roles/kubernetes-apps/ansible/templates/dashboard.yml.j2" + insertafter: 'targetPort' + line: " type: NodePort" + + - name: pip install required packages + pip: + name: "{{ item.name }}" + version: "{{ item.version | default(omit) }}" + with_items: + - { name: 'ansible', version: "{{ xci_kube_ansible_pip_version }}" } + - { name: 'netaddr' } + - { name: 'ansible-modules-hashivault' } + + - name: fetch xci environment + copy: + src: "{{ xci_path }}/.cache/xci.env" + dest: /root/xci.env + + - name: Manage SSH keys + include_tasks: "{{ xci_path }}/xci/playbooks/manage-ssh-keys.yml" diff --git a/xci/installer/osh/playbooks/configure-targethosts.yml b/xci/installer/osh/playbooks/configure-targethosts.yml new file mode 100644 index 00000000..2fde9877 --- /dev/null +++ b/xci/installer/osh/playbooks/configure-targethosts.yml @@ -0,0 +1,40 @@ +--- +- hosts: k8s-cluster + remote_user: root + vars_files: + - "{{ xci_path }}/xci/var/opnfv.yml" + + pre_tasks: + - name: Load distribution variables + include_vars: + file: "{{ item }}" + with_items: + - "{{ xci_path }}/xci/var/{{ ansible_os_family }}.yml" + + roles: + - role: bootstrap-host + + tasks: + - name: Manage SSH keys + include_tasks: "{{ xci_path }}/xci/playbooks/manage-ssh-keys.yml" + + - name: Install dbus + package: + name: "{{ (ansible_pkg_mgr == 'zypper') | ternary('dbus-1', 'dbus') }}" + state: present + update_cache: "{{ (ansible_pkg_mgr in ['apt', 'zypper']) | ternary('yes', omit) }}" + +- hosts: kube-master + remote_user: root + vars_files: + - "{{ xci_path }}/xci/var/opnfv.yml" + pre_tasks: + - name: Load distribution variables + include_vars: + file: "{{ xci_path }}/xci/var/{{ ansible_os_family }}.yml" + roles: + - role: "keepalived" + when: xci_flavor == 'ha' + - role: "haproxy_server" + haproxy_service_configs: "{{ haproxy_default_services}}" + when: xci_flavor == 'ha' diff --git a/xci/installer/osh/playbooks/group_vars/all b/xci/installer/osh/playbooks/group_vars/all new file mode 100644 index 00000000..328f8dba --- /dev/null +++ b/xci/installer/osh/playbooks/group_vars/all @@ -0,0 +1,54 @@ +keepalived_ubuntu_src: "uca" +keepalived_uca_apt_repo_url: "{{ uca_apt_repo_url | default('http://ubuntu-cloud.archive.canonical.com/ubuntu') }}" + +keepalived_sync_groups: + haproxy: + instances: + - external + +haproxy_keepalived_external_interface: "{{ ansible_default_ipv4.interface }}" +haproxy_keepalived_authentication_password: 'keepalived' +keepalived_instances: + external: + interface: "{{ haproxy_keepalived_external_interface }}" + state: "BACKUP" + virtual_router_id: "{{ haproxy_keepalived_external_virtual_router_id | default ('10') }}" + priority: "{{ ((ansible_play_hosts|length-ansible_play_hosts.index(inventory_hostname))*100)-((ansible_play_hosts|length-ansible_play_hosts.index(inventory_hostname))*50) }}" + authentication_password: "{{ haproxy_keepalived_authentication_password }}" + vips: + - "{{ haproxy_keepalived_external_vip_cidr | default('192.168.122.222/32') }} dev {{ haproxy_keepalived_external_interface }}" + +haproxy_default_services: + - service: + haproxy_service_name: proxy-apiserver + haproxy_backend_nodes: "{{ groups['kube-master'] | default([]) }}" + haproxy_port: 8383 + haproxy_backend_port: 6443 + haproxy_balance_type: tcp + +haproxy_bind_on_non_local: "True" +haproxy_use_keepalived: "True" +keepalived_selinux_compile_rules: + - keepalived_ping + - keepalived_haproxy_pid_file + +# Ensure that the package state matches the global setting +haproxy_package_state: "latest" + +haproxy_whitelist_networks: + - 192.168.0.0/16 + - 172.16.0.0/12 + - 10.0.0.0/8 + +haproxy_galera_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_glance_registry_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_keystone_admin_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_nova_metadata_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_rabbitmq_management_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_repo_git_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_repo_cache_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_octavia_whitelist_networks: "{{ haproxy_whitelist_networks }}" +haproxy_ssl: false + +internal_lb_vip_address: "192.168.122.222" +external_lb_vip_address: "{{ internal_lb_vip_address }}" diff --git a/xci/installer/osh/playbooks/install-openstack-helm.yml b/xci/installer/osh/playbooks/install-openstack-helm.yml new file mode 100644 index 00000000..a16572a5 --- /dev/null +++ b/xci/installer/osh/playbooks/install-openstack-helm.yml @@ -0,0 +1,24 @@ +--- +- hosts: kube-node + remote_user: root + vars_files: + - "{{ xci_path }}/xci/var/opnfv.yml" + + roles: + - role: prepare-kube-nodes-osh + +- hosts: opnfv + remote_user: root + vars_files: + - "{{ xci_path }}/xci/var/opnfv.yml" + roles: + - role: prepare-opnfvhost-osh + - role: prepare-osh + - role: install-osh-mini + when: xci_flavor == 'mini' + environment: + - CONTAINER_DISTRO_NAME: "{{ container_distro_name }}" + - CONTAINER_DISTRO_VERSION: "{{ container_distro_version }}" + - OPENSTACK_RELEASE: "{{ openstack_osh_version }}" + - role: install-osh-noha + when: xci_flavor == 'noha' diff --git a/xci/installer/osh/playbooks/post-deployment.yml b/xci/installer/osh/playbooks/post-deployment.yml new file mode 100644 index 00000000..5c2f7f36 --- /dev/null +++ b/xci/installer/osh/playbooks/post-deployment.yml @@ -0,0 +1,42 @@ +--- +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2018 Ericsson AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +- hosts: opnfv + remote_user: root + vars_files: + - "{{ xci_path }}/xci/var/opnfv.yml" + + pre_tasks: + - name: Load distribution variables + include_vars: + file: "{{ item }}" + with_items: + - "{{ xci_path }}/xci/var/{{ ansible_os_family }}.yml" + - name: Set facts for remote deployment + set_fact: + remote_xci_scenario_path: "{{ ansible_env.HOME }}/releng-xci/.cache/repos/scenarios/{{ deploy_scenario }}/scenarios/{{ deploy_scenario }}" + + tasks: + - name: Reload XCI deployment host facts + setup: + filter: ansible_local + gather_subset: "!all" + delegate_to: 127.0.0.1 + + - name: Check if any post-deployment task defined for {{ deploy_scenario }} role + stat: + path: "{{ remote_xci_scenario_path }}/role/{{ deploy_scenario }}/tasks/post-deployment.yml" + register: post_deployment_yml + + - name: Execute post-deployment tasks of {{ deploy_scenario }} role + include_role: + name: "{{ hostvars['opnfv'].ansible_local.xci.scenarios.role }}" + tasks_from: post-deployment + when: + - post_deployment_yml.stat.exists diff --git a/xci/installer/osh/playbooks/roles/install-osh-mini/tasks/main.yml b/xci/installer/osh/playbooks/roles/install-osh-mini/tasks/main.yml new file mode 100644 index 00000000..e3fa2ddf --- /dev/null +++ b/xci/installer/osh/playbooks/roles/install-osh-mini/tasks/main.yml @@ -0,0 +1,118 @@ +--- +- set_fact: + container_distro_name: "opensuse" + container_distro_version: "15" + cacheable: yes + when: osh_distro == 'opensuse' + tags: + - skip_ansible_lint + +- set_fact: + container_distro_name: "ubuntu" + container_distro_version: "xenial" + cacheable: yes + when: osh_distro == 'ubuntu' + tags: + - skip_ansible_lint + +- name: Setup Clients + command: ./tools/deployment/common/setup-client.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy the ingress controller + command: ./tools/deployment/component/common/ingress.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy MariaDB + command: ./tools/deployment/component/common/mariadb.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy memcached + command: ./tools/deployment/component/common/memcached.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy RabbitMQ + command: ./tools/deployment/component/common/rabbitmq.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Update nfs-provisioner helm-chart + shell: helm dependency update nfs-provisioner + args: + chdir: /root/repos/openstack-helm-infra + executable: /bin/bash + tags: + - skip_ansible_lint + +- name: Deploy nfs-provisioner + command: ./tools/deployment/component/nfs-provisioner/nfs-provisioner.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Keystone + command: ./tools/deployment/component/keystone/keystone.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Heat + command: ./tools/deployment/component/heat/heat.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Glance + command: ./tools/deployment/component/glance/glance.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy OpenvSwitch + command: ./tools/deployment/component/compute-kit/openvswitch.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Libvirt + command: ./tools/deployment/component/compute-kit/libvirt.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Compute Kit (Nova and Neutron) + command: ./tools/deployment/component/compute-kit/compute-kit.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Copy script to the worker node + command: "scp -o \"StrictHostKeyChecking no\" tools/deployment/developer/ceph/170-setup-gateway.sh root@192.168.122.4:170-setup-gateway.sh" + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Setup the gateway to the public network at worker node + command: /root/170-setup-gateway.sh + changed_when: false + delegate_to: 192.168.122.4 + +- name: Add a route from opnfv to worker node for the public network + command: ip route add 172.24.4.0/24 via 192.168.122.4 + changed_when: false + +# Deployment validation +- name: Exercise the cloud + command: ./tools/deployment/developer/common/900-use-it.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm diff --git a/xci/installer/osh/playbooks/roles/install-osh-noha/tasks/main.yml b/xci/installer/osh/playbooks/roles/install-osh-noha/tasks/main.yml new file mode 100644 index 00000000..231572c9 --- /dev/null +++ b/xci/installer/osh/playbooks/roles/install-osh-noha/tasks/main.yml @@ -0,0 +1,109 @@ +- name: Setup Clients + command: ./tools/deployment/multinode/010-setup-client.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy the ingress controller + command: ./tools/deployment/multinode/020-ingress.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Ceph + command: ./tools/deployment/multinode/030-ceph.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Activate the openstack namespace to be able to use Ceph + command: ./tools/deployment/multinode/040-ceph-ns-activate.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy MariaDB + command: ./tools/deployment/multinode/050-mariadb.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy RabbitMQ + command: ./tools/deployment/multinode/060-rabbitmq.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy memcached + command: ./tools/deployment/multinode/070-memcached.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Keystone + command: ./tools/deployment/multinode/080-keystone.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Horizon + command: ./tools/deployment/multinode/085-horizon.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Rados Gateway for object store + command: ./tools/deployment/multinode/090-ceph-radosgateway.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Glance + command: ./tools/deployment/multinode/100-glance.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Cinder + command: ./tools/deployment/multinode/110-cinder.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy OpenvSwitch + command: ./tools/deployment/multinode/120-openvswitch.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Libvirt + command: ./tools/deployment/multinode/130-libvirt.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Compute Kit (Nova and Neutron) + command: ./tools/deployment/multinode/140-compute-kit.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Heat + command: ./tools/deployment/multinode/150-heat.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +- name: Deploy Barbican + command: ./tools/deployment/multinode/160-barbican.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + +# Deployment validation +- name: Deploy tempest + command: ./tools/deployment/multinode/900-tempest.sh + changed_when: false + args: + chdir: /root/repos/openstack-helm + diff --git a/xci/installer/osh/playbooks/roles/prepare-kube-nodes-osh/tasks/main.yml b/xci/installer/osh/playbooks/roles/prepare-kube-nodes-osh/tasks/main.yml new file mode 100644 index 00000000..5a70f971 --- /dev/null +++ b/xci/installer/osh/playbooks/roles/prepare-kube-nodes-osh/tasks/main.yml @@ -0,0 +1,11 @@ +- name: Install packages in kubernetes nodes + package: + name: "{{ packages }}" + state: present + changed_when: false + vars: + packages: + - ceph-common + - rbd-nbd + - apparmor + - nfs-common diff --git a/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/files/helm-serve.service b/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/files/helm-serve.service new file mode 100644 index 00000000..c3988d6f --- /dev/null +++ b/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/files/helm-serve.service @@ -0,0 +1,11 @@ +[Unit] +Description=Helm Server +After=network.target + +[Service] +User=root +Restart=always +ExecStart=/usr/bin/helm serve + +[Install] +WantedBy=multi-user.target diff --git a/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/tasks/main.yml b/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/tasks/main.yml new file mode 100644 index 00000000..7e2a52ab --- /dev/null +++ b/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/tasks/main.yml @@ -0,0 +1,141 @@ +- name: Set kubernetes service account permissions + command: "kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default" + changed_when: false + +- name: Set kubernetes node labels + shell: "for x in `kubectl get nodes --show-labels | grep 'node-role.kubernetes.io/node=true' | awk '{print $1}'`; do kubectl label nodes $x {{ item }}; done" + args: + executable: /bin/bash + changed_when: false + with_items: + - openstack-control-plane=enabled + - openstack-compute-node=enabled + - openstack-helm-node-class=primary + - openvswitch=enabled + - linuxbridge=enabled + - ceph-mon=enabled + - ceph-osd=enabled + - ceph-mds=enabled + - ceph-mgr=enabled + - ceph-rgw=enabled + +- name: Create directories + file: + path: /root/{{ item }} + state: directory + with_items: + ['repos','tmp', '.helm/repository/local'] + +- name: Rename bifrost clouds file to get it out of precedence + command: "mv .config/openstack/clouds.yaml .config/openstack/clouds.yaml.bifrost" + changed_when: false + +- name: Clone openstack-helm + git: + repo: "{{ osh_git_url }}" + dest: /root/repos/openstack-helm + version: "{{ osh_version }}" + update: true + force: true + register: git_clone + until: git_clone is success + retries: 2 + delay: 5 + +- name: Fix dns nameserver for openstack installation (mini flavor) + lineinfile: + path: /root/repos/openstack-helm/tools/gate/files/heat-public-net-deployment.yaml + regexp: '10\.96\.0\.10' + line: " - 10.233.0.3" + +- name: Fix dns nameserver for openstack installation (noha flavor) + lineinfile: + path: /root/repos/openstack-helm/tempest/values.yaml + regexp: 'dns_servers' + line: " dns_servers: 10.233.0.3" + +- name: Clone openstack-helm-infra + git: + repo: "{{ osh_infra_git_url }}" + dest: /root/repos/openstack-helm-infra + version: "{{ osh_infra_version }}" + update: true + force: true + register: git_clone + until: git_clone is success + retries: 2 + delay: 5 + +- name: Get helm + get_url: + url: "{{ osh_helm_binary_url }}/helm-{{ osh_helm_binary_version }}-linux-amd64.tar.gz" + dest: tmp + +- name: Uncompress helm package + command: "tar zxvf tmp/helm-{{ osh_helm_binary_version }}-linux-amd64.tar.gz --strip-components=1 -C tmp/" + changed_when: false + tags: + - skip_ansible_lint + +- name: Put helm in system binaries + copy: + src: tmp/helm + dest: /usr/bin/helm + remote_src: yes + mode: 0755 + +- name: Create helm-serve service file + copy: + src: helm-serve.service + dest: "/etc/systemd/system/helm-serve.service" + mode: 0640 + +- name: Start helm-serve service + service: + name: helm-serve + state: started + enabled: yes + +- name: Wait for helm-serve service to start + wait_for: + port: 8879 + host: 127.0.0.1 + +- name: Install pyhelm + pip: + name: pyhelm + +- name: Init helm + command: "helm init" + changed_when: false + +- name: Remove stable (external) service from helm + command: "helm repo remove stable" + changed_when: false + +- name: Add local repositories service to helm + command: "helm repo add local http://localhost:8879/charts" + changed_when: false + +- name: Make charts from infra + make: + chdir: /root/repos/openstack-helm-infra + target: "{{ item }}" + with_items: + - helm-toolkit + - ingress + - mariadb + - rabbitmq + - memcached + - ceph-mon + - ceph-osd + - ceph-client + - ceph-provisioners + - ceph-rgw + - openvswitch + - libvirt + +- name: Install packages + package: + name: "{{ required_packages }}" + state: present diff --git a/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/vars/main.yml b/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/vars/main.yml new file mode 100644 index 00000000..53188bdb --- /dev/null +++ b/xci/installer/osh/playbooks/roles/prepare-opnfvhost-osh/vars/main.yml @@ -0,0 +1,7 @@ +--- +required_packages: +- patch +- ipcalc +- jq +- nmap +- bc diff --git a/xci/installer/osh/playbooks/roles/prepare-osh/tasks/main.yml b/xci/installer/osh/playbooks/roles/prepare-osh/tasks/main.yml new file mode 100644 index 00000000..d9718ea4 --- /dev/null +++ b/xci/installer/osh/playbooks/roles/prepare-osh/tasks/main.yml @@ -0,0 +1,32 @@ +- name: Write new resolv.conf file + template: + src: resolv.conf.j2 + dest: /etc/resolv.conf + +- name: Make resolv.conf immutable + shell: "chattr +i /etc/resolv.conf" + changed_when: false + args: + executable: /bin/bash + tags: + - skip_ansible_lint + +#TODO Fetch the value from a file generated by k8s deployer +- name: Get kube service addresses + shell: "grep -r 'kube_service_addresses:' /root/releng-xci/.cache/repos/kubespray/opnfv_inventory/group_vars/k8s-cluster.yml | awk '{print $2}'" + changed_when: false + args: + executable: /bin/bash + register: kube_service_addresses + tags: + - skip_ansible_lint + +#This rule allows openstack client in OPNFV VM to reach openstack +- name: Update routing table with kube service addresses + shell: "ip route add {{ kube_service_addresses.stdout }} via 192.168.122.3 dev br-vlan onlink" + changed_when: false + args: + executable: /bin/bash + tags: + - skip_ansible_lint + diff --git a/xci/installer/osh/playbooks/roles/prepare-osh/templates/resolv.conf.j2 b/xci/installer/osh/playbooks/roles/prepare-osh/templates/resolv.conf.j2 new file mode 100644 index 00000000..ae706e02 --- /dev/null +++ b/xci/installer/osh/playbooks/roles/prepare-osh/templates/resolv.conf.j2 @@ -0,0 +1,4 @@ +{{ dns_var }} +{% for nameserver in external_dns_nameservers %} +nameserver {{ nameserver }} +{% endfor %} diff --git a/xci/installer/osh/playbooks/roles/prepare-osh/vars/main.yml b/xci/installer/osh/playbooks/roles/prepare-osh/vars/main.yml new file mode 100644 index 00000000..abb0d6eb --- /dev/null +++ b/xci/installer/osh/playbooks/roles/prepare-osh/vars/main.yml @@ -0,0 +1,6 @@ +kube_dns_ip: "10.233.0.3" +external_dns_nameservers: +- '{{kube_dns_ip}}' +- '192.168.122.1' +dns_var: "search svc.cluster.local cluster.local" + |