CORD-1053 support for alternate onboarding recipes; rcord-new profile
Change-Id: Icd8edd8e55341b7ae428f61fb61395d305dda085
diff --git a/inventory/rcord-new b/inventory/rcord-new
new file mode 100644
index 0000000..92fb59c
--- /dev/null
+++ b/inventory/rcord-new
@@ -0,0 +1,8 @@
+; rcord configuration
+
+[all:vars]
+cord_profile=rcord-new
+
+[head]
+localhost ansible_connection=local
+
diff --git a/profile_manifests/rcord-new.yml b/profile_manifests/rcord-new.yml
new file mode 100644
index 0000000..b3a922a
--- /dev/null
+++ b/profile_manifests/rcord-new.yml
@@ -0,0 +1,361 @@
+---
+# vars/cord-pod.yaml
+# Configures an R-CORD pod
+
+# site configuration
+site_name: mysite
+site_humanname: MySite
+deployment_type: MyDeployment
+
+xos_admin_user: xosadmin@opencord.org
+xos_admin_pass: "{{ lookup('password', 'credentials/xosadmin@opencord.org chars=ascii_letters,digits') }}"
+xos_admin_first: XOS
+xos_admin_last: Admin
+
+xos_users: []
+
+use_vtn: True
+
+xos_tosca_config_templates:
+ - openstack.yaml
+ - vtn-service.yaml
+ - fabric-service.yaml
+ - management-net.yaml
+ - cord-services.yaml # should unify this with services.yaml.j2 eventually
+ - public-net.yaml
+ - volt-devices.yaml
+ - vrouter.yaml
+
+xos_other_templates:
+ - fabric-network-cfg.json
+
+cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
+
+xos_docker_volumes:
+ - host: "{{ cord_profile_dir }}/images"
+ container: /opt/xos/images
+
+# GUI branding
+gui_branding_name: "CORD"
+gui_branding_icon: "/static/cord-logo.png"
+gui_branding_favicon: "/static/cord-favicon.png"
+gui_branding_bg: "/static/cord-bg.jpg"
+
+# paths defined in manifest/default.xml
+xos_services:
+ - name: volt
+ path: onos-apps/apps/olt
+ - name: vtn
+ path: onos-apps/apps/vtn
+ - name: openstack
+ path: orchestration/xos_services/openstack
+ - name: onos
+ path: orchestration/xos_services/onos-service
+ - name: vrouter
+ path: orchestration/xos_services/vrouter
+ - name: vsg
+ path: orchestration/xos_services/vsg
+ - name: vtr
+ path: orchestration/xos_services/vtr
+ - name: fabric
+ path: orchestration/xos_services/fabric
+# needed onboarding synchronizer doesn't require service code to be present when started
+ - name: exampleservice
+ path: orchestration/xos_services/exampleservice
+ operation: onboardnew
+ - name: monitoring
+ path: orchestration/xos_services/monitoring
+
+xos_service_sshkeys:
+ - name: onos_rsa
+ source_path: "~/.ssh/id_rsa"
+ - name: onos_rsa.pub
+ source_path: "~/.ssh/id_rsa.pub"
+ - name: volt_rsa
+ source_path: "~/.ssh/id_rsa"
+ - name: volt_rsa.pub
+ source_path: "~/.ssh/id_rsa.pub"
+ - name: vsg_rsa
+ source_path: "~/.ssh/id_rsa"
+ - name: vsg_rsa.pub
+ source_path: "~/.ssh/id_rsa.pub"
+# needed onboarding synchronizer doesn't require service code to be present when started
+ - name: exampleservice_rsa
+ source_path: "~/.ssh/id_rsa"
+ - name: exampleservice_rsa.pub
+ source_path: "~/.ssh/id_rsa.pub"
+ - name: monitoringservice_rsa
+ source_path: "~/.ssh/id_rsa"
+ - name: monitoringservice_rsa.pub
+ source_path: "~/.ssh/id_rsa.pub"
+
+# VM networks/bridges on head
+virt_nets:
+ - name: mgmtbr
+ ipv4_prefix: 192.168.122
+ head_vms: true
+
+# site domain suffix
+site_suffix: cord.lab
+
+# resolv.conf settings
+dns_search:
+ - "{{ site_suffix }}"
+
+# SSL server certificate generation
+server_certs:
+ - cn: "keystone.{{ site_suffix }}"
+ subj: "/C=US/ST=California/L=Menlo Park/O=ON.Lab/OU=Test Deployment/CN=keystone.{{ site_suffix }}"
+ altnames:
+ - "DNS:keystone.{{ site_suffix }}"
+ - "DNS:keystone"
+ - cn: "xos-core.{{ site_suffix }}"
+ subj: "/C=US/ST=California/L=Menlo Park/O=ON.Lab/OU=Test Deployment/CN=xos-core.{{ site_suffix }}"
+ altnames:
+ - "DNS:xos-core.{{ site_suffix }}"
+
+# NSD/Unbound settings
+nsd_zones:
+ - name: "{{ site_suffix }}"
+ ipv4_first_octets: 192.168.122
+ name_reverse_unbound: "168.192.in-addr.arpa"
+ soa: ns1
+ ns:
+ - { name: ns1 }
+ nodelist: head_vm_list
+ aliases:
+ - { name: "ns1" , dest: "head" }
+ - { name: "ns" , dest: "head" }
+ - { name: "apt-cache" , dest: "head" }
+
+name_on_public_interface: head
+
+# VTN network configuration
+management_network_cidr: 172.27.0.0/24
+management_network_ip: 172.27.0.1/24
+data_plane_ip: 10.168.0.253/24
+
+# CORD ONOS app version
+cord_app_version: 1.2-SNAPSHOT
+
+# If true, unbound listens on the head node's `ansible_default_ipv4` interface
+unbound_listen_on_default: True
+
+# turn this on, or override it when running the playbook with --extra-vars="on_cloudlab=True"
+on_cloudlab: False
+
+# turn this off, or override when running playbook with --extra-vars="on_maas=False"
+on_maas: True
+
+run_dist_upgrade: False
+
+maas_node_key: /etc/maas/ansible/id_rsa
+
+openstack_version: kilo
+
+juju_config_name: cord
+
+juju_config_path: /usr/local/src/juju_config.yml
+
+# Pull ONOS from local Docker registry rather than Docker Hub
+onos_docker_image: "docker-registry:5000/opencord/onos:candidate"
+
+keystone_admin_password: "{{ lookup('password', 'credentials/cord_keystone_admin chars=ascii_letters,digits') }}"
+
+deployment_flavors:
+ - m1.small
+ - m1.medium
+ - m1.large
+ - m1.xlarge
+
+apt_cacher_name: apt-cache
+
+apt_ssl_sites:
+ - apt.dockerproject.org
+ - butler.opencloud.cs.arizona.edu
+ - deb.nodesource.com
+
+charm_versions:
+ ceilometer: "cs:trusty/ceilometer-17"
+ ceilometer-agent: "cs:trusty/ceilometer-agent-13"
+ glance: "cs:trusty/glance-28"
+ keystone: "cs:trusty/keystone-33"
+ mongodb: "cs:trusty/mongodb-33"
+ percona-cluster: "cs:trusty/percona-cluster-31"
+ nagios: "cs:trusty/nagios-10"
+ neutron-api: "cs:~cordteam/trusty/neutron-api-4"
+ nova-cloud-controller: "cs:trusty/nova-cloud-controller-64"
+ nova-compute: "cs:~cordteam/trusty/nova-compute-2"
+ nrpe: "cs:trusty/nrpe-4"
+ ntp: "cs:trusty/ntp-14"
+ openstack-dashboard: "cs:trusty/openstack-dashboard-19"
+ rabbitmq-server: "cs:trusty/rabbitmq-server-42"
+
+head_vm_list: []
+
+head_lxd_list:
+ - name: "juju-1"
+ service: "juju"
+ aliases:
+ - "juju"
+ ipv4_last_octet: 10
+
+ - name: "ceilometer-1"
+ service: "ceilometer"
+ aliases:
+ - "ceilometer"
+ ipv4_last_octet: 20
+ forwarded_ports:
+ - { ext: 8777, int: 8777 }
+
+ - name: "glance-1"
+ service: "glance"
+ aliases:
+ - "glance"
+ ipv4_last_octet: 30
+ forwarded_ports:
+ - { ext: 9292, int: 9292 }
+
+ - name: "keystone-1"
+ service: "keystone"
+ aliases:
+ - "keystone"
+ ipv4_last_octet: 40
+ forwarded_ports:
+ - { ext: 35357, int: 35357 }
+ - { ext: 4990, int: 4990 }
+ - { ext: 5000, int: 5000 }
+
+ - name: "percona-cluster-1"
+ service: "percona-cluster"
+ aliases:
+ - "percona-cluster"
+ ipv4_last_octet: 50
+
+ - name: "nagios-1"
+ service: "nagios"
+ aliases:
+ - "nagios"
+ ipv4_last_octet: 60
+ forwarded_ports:
+ - { ext: 3128, int: 80 }
+
+ - name: "neutron-api-1"
+ service: "neutron-api"
+ aliases:
+ - "neutron-api"
+ ipv4_last_octet: 70
+ forwarded_ports:
+ - { ext: 9696, int: 9696 }
+
+ - name: "nova-cloud-controller-1"
+ service: "nova-cloud-controller"
+ aliases:
+ - "nova-cloud-controller"
+ ipv4_last_octet: 80
+ forwarded_ports:
+ - { ext: 8774, int: 8774 }
+
+ - name: "openstack-dashboard-1"
+ service: "openstack-dashboard"
+ aliases:
+ - "openstack-dashboard"
+ ipv4_last_octet: 90
+ forwarded_ports:
+ - { ext: 8080, int: 80 }
+
+ - name: "rabbitmq-server-1"
+ service: "rabbitmq-server"
+ aliases:
+ - "rabbitmq-server"
+ ipv4_last_octet: 100
+
+ - name: "mongodb-1"
+ service: "mongodb"
+ aliases:
+ - "mongodb"
+ ipv4_last_octet: 110
+
+lxd_service_list:
+ - ceilometer
+ - glance
+ - keystone
+ - mongodb
+ - nagios
+ - neutron-api
+ - nova-cloud-controller
+ - openstack-dashboard
+ - percona-cluster
+ - rabbitmq-server
+
+standalone_service_list:
+ - ntp
+ - nrpe
+ - ceilometer-agent
+
+
+service_relations:
+ - name: keystone
+ relations: [ "percona-cluster", "nrpe", ]
+
+ - name: nova-cloud-controller
+ relations: [ "percona-cluster", "rabbitmq-server", "glance", "keystone", "nrpe", ]
+
+ - name: glance
+ relations: [ "percona-cluster", "keystone", "nrpe", ]
+
+ - name: neutron-api
+ relations: [ "keystone", "percona-cluster", "rabbitmq-server", "nova-cloud-controller", "nrpe", ]
+
+ - name: openstack-dashboard
+ relations: [ "keystone", "nrpe", ]
+
+ - name: nagios
+ relations: [ "nrpe", ]
+
+ - name: "percona-cluster:juju-info"
+ relations: [ "nrpe:general-info", ]
+
+ - name: rabbitmq-server
+ relations: [ "nrpe", ]
+
+ - name: ceilometer
+ relations: [ "mongodb", "rabbitmq-server", "nagios", "nrpe", ]
+
+ - name: "ceilometer:identity-service"
+ relations: [ "keystone:identity-service", ]
+
+ - name: "ceilometer:ceilometer-service"
+ relations: [ "ceilometer-agent:ceilometer-service", ]
+
+
+compute_relations:
+ - name: nova-compute
+ relations: [ "ceilometer-agent", "glance", "nova-cloud-controller", "nagios", "nrpe", ]
+
+ - name: "nova-compute:shared-db"
+ relations: [ "percona-cluster:shared-db", ]
+
+ - name: "nova-compute:amqp"
+ relations: [ "rabbitmq-server:amqp", ]
+
+ - name: ntp
+ relations: [ "nova-compute", ]
+
+
+xos_images:
+ - name: "trusty-server-multi-nic"
+ url: "http://www.vicci.org/opencloud/trusty-server-cloudimg-amd64-disk1.img.20170201"
+ checksum: "sha256:ebf007ba3ec1043b7cd011fc6668e2a1d1d4c69c41071e8513ab355df7a057cb"
+
+ - name: "vsg-1.1"
+ url: "http://www.vicci.org/cord/vsg-1.1.img"
+ checksum: "sha256:16b0beb6778aed0f5feecb05f8d5750e6c262f98e6011e99ddadf7d46a177b6f"
+
+ - name: "ceilometer-trusty-server-multi-nic"
+ url: "http://www.vicci.org/cord/ceilometer-trusty-server-multi-nic.compressed.qcow2"
+ checksum: "sha256:b77ef8d692b640568dea13df99fe1dfcb1f4bb4ac05408db9ff77399b34f754f"
+
+ - name: "ceilometer-service-trusty-server-multi-nic"
+ url: "http://www.vicci.org/cord/ceilometer-service-trusty-server-multi-nic.compressed.qcow2.20170131"
+ checksum: "sha256:f0341e283f0f2cb8f70cd1a6347e0081c9c8492ef34eb6397c657ef824800d4f"
diff --git a/roles/xos-onboarding/tasks/main.yml b/roles/xos-onboarding/tasks/main.yml
index b95f846..f1980fa 100644
--- a/roles/xos-onboarding/tasks/main.yml
+++ b/roles/xos-onboarding/tasks/main.yml
@@ -42,7 +42,7 @@
- skip_ansible_lint # TOSCA loading should be idempotent
- name: Onboard services
- command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/xos_services/{{ item.path | basename }}/xos/{{ item.name }}-onboard.yaml"
+ command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/xos_services/{{ item.path | basename }}/xos/{{ item.name }}-{{ item.operation | default('onboard') }}.yaml"
with_items: "{{ xos_services }}"
tags:
- skip_ansible_lint # TOSCA loading should be idempotent