region: {{ os.region }}
{% if ubuntu.release == 'trusty' %}
source: "cloud:{{ ubuntu.release }}-{{ os.release }}"
+{% endif %}
+{% if ubuntu.release == 'xenial' %}
+{% if os.release == 'newton' %}
+ source: "cloud:{{ ubuntu.release }}-{{ os.release }}"
+{% endif %}
{% endif %}
openstack-origin: "cloud:{{ ubuntu.release }}-{{ os.release }}"
{% if os.ha.mode == 'nonha' %}
+++ /dev/null
-OpenDaylight Deployment with Juju
-=================================
-
-This readme contains instructions for checking out and deploying Juju charms for
-OpenDaylight.
-
-The charms are targetted at Trusty.
-
-
-Checkout charms
----------------
-
-Charms are hosted on Launchpad.
-You need to 'sudo apt-get install bzr' first.
-
-Follow these steps to checkout code:
-
-cd <deployer dir>
-./fetch-charms.sh
-
-This will checkout the relevant charms into 'src' and create any Juju symlinks
-in 'charms'.
-
-
-Deploy with cloud-sh-odl
-------------------------
-
-cloud-sh-odl is a collection of development shell scripts to deploy
-and setup OpenStack with OpenDaylight using Juju's local provider. This will
-create 3 KVMs as follows:
-
-*KVM #1 - Keystone, Glance, Neutron Server, Nova Cloud Controller, Horizon,
- MySQL, RabbitMQ, OpenDaylight Controller
-
-*KVM #2 - Neutron agents
-
-*KVM #3 - Nova Compute
-
-You'll require approx. 13Gb RAM with 40Gb+ disk space.
-Deployment can take anywhere between 20 mins to 1 hour.
-
-You need to 'sudo apt-get install juju juju-local uvtool', and
-logout/login in order to pick up libvirt group permissions before
-proceeding. See https://bugs.launchpad.net/juju-core/+bug/1308088.
-
-Follow these steps:
-
-ssh-keygen
- (if you don't already have a key at ~/.ssh/id_rsa).
-
-cp cloud-sh-odl/environments.yaml ~/.juju
- (or create your own default local environment in your existing
- environments.yaml file)
-
-cd cloud-sh-odl
-
-./deploy.sh
-
-This will log to 'out.log'.
-
-This will deploy OpenStack and import Trusty's daily image into Glance.
-
-Horizon will be located on the machine 'juju status openstack-dashboard' -
-http://<ip>/horizon.
-Admin credentials will be written to cloud/admin-openrc.
-
-The deployment can be destroyed with:
-
-juju destroy-environment local
-
-
-Deploy with Juju Deployer
--------------------------
-
-Juju Deployer can deploy a preset configuration of charms given a yaml
-configuration file. There is a configuration file in
-'juju-deployer/odl.yaml'.
-
-You need to 'sudo apt-get install juju-deployer' first.
-
-Then:
-
-cd juju-deployer
-
-juju-deployer -c odl.yaml -d trusty-icehouse-odl
-
-Juju Deployer will branch its own copy of the remote charms.
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-# adjust tiny image
-nova flavor-delete m1.tiny
-nova flavor-create m1.tiny 1 512 8 1
-
-# import key pair
-nova keypair-add --pub-key id_rsa.pub ubuntu-keypair
+++ /dev/null
-#!/bin/sh -e
-
-modprobe kvm_intel
-printf "\n%s\n" kvm_intel >> /etc/modules
-service libvirt-bin restart
-
-sed -e 's/KSM_ENABLED=1/KSM_ENABLED=0/' -i /etc/default/qemu-kvm
-service qemu-kvm restart
+++ /dev/null
-export JUJU_REPOSITORY=../charms
-
-DEFAULT_SERIES=trusty
-
-CHARM_GLANCE=local:trusty/glance
-
-CHARM_KEYSTONE=local:trusty/keystone
-CHARM_KEYSTONE_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_MYSQL=trusty/mysql
-CHARM_MYSQL_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_NEUTRON_API=local:trusty/neutron-api
-CHARM_NEUTRON_API_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_NEUTRON_GATEWAY=local:trusty/quantum-gateway
-CHARM_NEUTRON_GATEWAY_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_NEUTRON_ODL=local:trusty/neutron-odl
-
-CHARM_NOVA_CLOUD_CONTROLLER=local:trusty/nova-cloud-controller
-CHARM_NOVA_CLOUD_CONTROLLER_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_NOVA_COMPUTE=local:trusty/nova-compute
-
-CHARM_ODL_CONTROLLER=local:trusty/odl-controller
-
-CHARM_OPENSTACK_DASHBOARD=local:trusty/openstack-dashboard
-
-CHARM_RABBITMQ_SERVER=trusty/rabbitmq-server
+++ /dev/null
-keystone:
- admin-password: password
-
-mysql:
- dataset-size: 10%
- max-connections: 1000
-
-neutron-api:
- neutron-plugin: odl
- neutron-security-groups: True
-
-neutron-gateway:
- instance-mtu: 1400
- plugin: odl
-
-nova-cloud-controller:
- network-manager: Neutron
- quantum-security-groups: "yes"
+++ /dev/null
-#!/bin/sh -e
-exec ./openstack.sh ./config.sh 2>&1 | tee out.log
+++ /dev/null
-default: local
-
-environments:
- local:
- type: local
- container: kvm
- default-series: trusty
- lxc-clone: true
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-wget http://cloud-images.ubuntu.com/trusty/current/MD5SUMS
-
-wget http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
-glance image-create --name ubuntu-trusty-daily --disk-format qcow2 --container-format bare --owner admin --file trusty-server-cloudimg-amd64-disk1.img --checksum $(grep trusty-server-cloudimg-amd64-disk1.img MD5SUMS | cut -d " " -f 1) --is-public True
+++ /dev/null
-#!/bin/sh -e
-
-DEBIAN_FRONTEND=noninteractive apt-get -qy -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install lxc < /dev/null
-
-sed -e 's/^USE_LXC_BRIDGE="true"/USE_LXC_BRIDGE="false"/' -i /etc/default/lxc
-service lxc-net restart
-
-ifdown eth0
-mv /etc/network/interfaces.d/eth0.cfg /etc/network/interfaces.d/eth0.cfg.bak
-cat <<-"EOF" > /etc/network/interfaces.d/bridge.cfg
- auto eth0
- iface eth0 inet manual
-
- auto lxcbr0
- iface lxcbr0 inet dhcp
- bridge_ports eth0
- EOF
-ifup eth0 lxcbr0
+++ /dev/null
-#!/bin/sh -ex
-
-agentState()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"machines\"][\"$1\"][\"agent-state\"]" 2> /dev/null
-}
-
-agentStateUnit()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"agent-state\"]" 2> /dev/null
-}
-
-configOpenrc()
-{
- cat <<-EOF
- export OS_USERNAME=$1
- export OS_PASSWORD=$2
- export OS_TENANT_NAME=$3
- export OS_AUTH_URL=$4
- export OS_REGION_NAME=$5
- EOF
-}
-
-unitAddress()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null
-}
-
-unitMachine()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null
-}
-
-waitForMachine()
-{
- for machine; do
- while [ "$(agentState $machine)" != started ]; do
- sleep 5
- done
- done
-}
-
-waitForService()
-{
- for service; do
- while [ "$(agentStateUnit "$service" 0)" != started ]; do
- sleep 5
- done
- done
-}
-
-if [ $# -ne 0 ]; then
- . "$1"
-fi
-
-juju bootstrap
-waitForMachine 0
-
-spare_cpus=$(($(grep processor /proc/cpuinfo | wc -l) - 5))
-if [ $spare_cpus -gt 0 ]; then
- spare_cpus=$(((spare_cpus * 3) / 4))
-else
- spare_cpus=0
-fi
-
-extra_cpus=0
-[ $spare_cpus -ne 0 ] && extra_cpus=$((1 + (((spare_cpus - 1) * 3) / 4))) && spare_cpus=$((spare_cpus - extra_cpus))
-juju add-machine --constraints "cpu-cores=$((1 + extra_cpus)) mem=8G root-disk=20G" --series $DEFAULT_SERIES
-
-juju deploy --constraints mem=1G $CHARM_NEUTRON_GATEWAY_DEPLOY_OPTS "${CHARM_NEUTRON_GATEWAY:-quantum-gateway}" neutron-gateway
-
-juju deploy --constraints "cpu-cores=$((1 + spare_cpus)) mem=4G root-disk=20G" $CHARM_NOVA_COMPUTE_DEPLOY_OPTS "${CHARM_NOVA_COMPUTE:-nova-compute}"
-
-waitForMachine 1
-juju scp lxc-network.sh 1:
-juju run --machine 1 "sudo ./lxc-network.sh"
-juju deploy --to lxc:1 $CHARM_MYSQL_DEPLOY_OPTS "${CHARM_MYSQL:-mysql}"
-juju deploy --to lxc:1 $CHARM_RABBITMQ_SERVER_DEPLOY_OPTS "${CHARM_RABBITMQ_SERVER:-rabbitmq-server}"
-juju deploy --to lxc:1 $CHARM_KEYSTONE_DEPLOY_OPTS "${CHARM_KEYSTONE:-keystone}"
-juju deploy --to lxc:1 $CHARM_NOVA_CLOUD_CONTROLLER_DEPLOY_OPTS "${CHARM_NOVA_CLOUD_CONTROLLER:-nova-cloud-controller}"
-juju deploy --to lxc:1 $CHARM_NEUTRON_API_DEPLOY_OPTS "${CHARM_NEUTRON_API:-neutron-api}"
-juju deploy --to lxc:1 $CHARM_GLANCE_DEPLOY_OPTS "${CHARM_GLANCE:-glance}"
-juju deploy --to lxc:1 $CHARM_OPENSTACK_DASHBOARD_DEPLOY_OPTS "${CHARM_OPENSTACK_DASHBOARD:-openstack-dashboard}"
-# opendaylight
-juju deploy --to lxc:1 $CHARM_ODL_CONTROLLER_DEPLOY_OPTS "${CHARM_ODL_CONTROLLER:-odl-controller}"
-juju deploy $CHARM_NEUTRON_ODL_DEPLOY_OPTS "${CHARM_NEUTRON_ODL:-neutron-odl}"
-
-# relation must be set first
-# no official way of knowing when this relation hook will fire
-waitForService mysql keystone
-juju add-relation keystone mysql
-sleep 60
-
-waitForService rabbitmq-server nova-cloud-controller glance
-juju add-relation nova-cloud-controller mysql
-juju add-relation nova-cloud-controller rabbitmq-server
-juju add-relation nova-cloud-controller glance
-juju add-relation nova-cloud-controller keystone
-sleep 60
-
-waitForService neutron-api
-juju add-relation neutron-api mysql
-juju add-relation neutron-api rabbitmq-server
-juju add-relation neutron-api keystone
-juju add-relation neutron-api nova-cloud-controller
-sleep 60
-
-waitForService openstack-dashboard neutron-gateway nova-compute
-juju add-relation neutron-gateway mysql
-juju add-relation neutron-gateway:amqp rabbitmq-server:amqp
-juju add-relation neutron-gateway nova-cloud-controller
-juju add-relation neutron-gateway neutron-api
-juju add-relation nova-compute:shared-db mysql:shared-db
-juju add-relation nova-compute:amqp rabbitmq-server:amqp
-juju add-relation nova-compute glance
-juju add-relation nova-compute nova-cloud-controller
-juju add-relation glance mysql
-juju add-relation glance keystone
-juju add-relation openstack-dashboard keystone
-sleep 60
-
-# opendaylight
-waitForService odl-controller
-juju add-relation neutron-api odl-controller
-juju add-relation neutron-gateway odl-controller
-juju add-relation nova-compute neutron-odl
-juju add-relation neutron-odl odl-controller
-sleep 60
-
-# enable kvm on compute
-machine=$(unitMachine nova-compute 0)
-juju scp compute.sh $machine:
-juju run --machine $machine "sudo ./compute.sh"
-
-mkdir -m 0700 -p cloud
-controller_address=$(unitAddress keystone 0)
-configOpenrc admin password Admin http://$controller_address:5000/v2.0 RegionOne > cloud/admin-openrc
-chmod 0600 cloud/admin-openrc
-
-machine=$(unitMachine nova-cloud-controller 0)
-juju scp cloud-setup.sh cloud/admin-openrc ~/.ssh/id_rsa.pub $machine:
-juju run --machine $machine ./cloud-setup.sh
-
-machine=$(unitMachine glance 0)
-juju scp glance.sh cloud/admin-openrc $machine:
-juju run --machine $machine ./glance.sh
+++ /dev/null
-# vim: set ts=2 et:
-trusty-mitaka-nodes:
- inherits: openstack-phase1
- overrides:
- #os-data-network: 10.4.8.0/21
- #ceph-cluster-network: 10.4.0.0/21
- #prefer-ipv6: true
- #enable-dvr: true
- #l2-population: true
- region: Canonical
- #source: "cloud:trusty-mitaka"
- openstack-origin: "cloud:trusty-mitaka"
- #ceph-osd-replication-count: 2
- admin-role: admin
- keystone-admin-role: admin
- #use-internal-endpoints: true
- #os-public-hostname: pod.maas
-
-trusty-mitaka:
- inherits: openstack-phase2
-
-openstack-phase1:
- services:
- nodes:
- charm: "cs:trusty/ubuntu"
- num_units: 5
- ntp:
- charm: "local:trusty/ntp"
- mysql:
- charm: "local:trusty/percona-cluster"
- num_units: 3
- options:
- dataset-size: 2G
- lp1366997-workaround: true
- max-connections: 10000
- root-password: 293rhc395m
- sst-password: 127rc14t51
- vip: 10.4.1.15
- to:
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- ceilometer:
- charm: "local:trusty/ceilometer"
- num_units: 3
- options:
- vip: 10.4.1.14
- #os-public-hostname: api.public-fqdn
- to:
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- mongodb:
- charm: "local:trusty/mongodb"
- to:
- - "lxc:nodes=0"
- heat:
- charm: "local:trusty/heat"
- num_units: 3
- options:
- vip: 10.4.1.18
- #os-public-hostname: api.public-fqdn
- to:
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- ceph:
- charm: local:trusty/ceph
- num_units: 3
- options:
- fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
- monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
- monitor-count: 3
-# osd-reformat: 'false'
-# ceph-cluster-network: 192.168.0.0/24
-# ceph-public-network: 192.168.0.0/24
- to:
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- ceph-osd:
- charm: local:trusty/ceph-osd
- num_units: 3
- options:
- osd-devices: /srv
- osd-reformat: 'yes'
- to:
- - "nodes=2"
- - "nodes=3"
- - "nodes=4"
-# - "nodes=0"
- ceph-radosgw:
- charm: local:trusty/ceph-radosgw
-# vip: 10.4.1.10
- #os-public-hostname: api.public-fqdn
- options:
- use-embedded-webserver: true
- operator-roles: "Member,admin"
- to:
- - "lxc:nodes=0"
-# - "lxc:nodes=1"
-# - "lxc:nodes=2"
- cinder:
- charm: local:trusty/cinder
- num_units: 3
- options:
- block-device: None
- glance-api-version: 2
- vip: 10.4.1.19
- #os-public-hostname: api.public-fqdn
- to:
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- rabbitmq-server:
- charm: local:trusty/rabbitmq-server
- num_units: 3
- options:
- vip: 10.4.1.10
- to:
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- keystone:
- charm: local:trusty/keystone
- num_units: 3
- options:
- admin-password: openstack
- admin-token: admin
- vip: 10.4.1.13
- #os-public-hostname: api.public-fqdn
- to:
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- openstack-dashboard:
- charm: local:trusty/openstack-dashboard
- num_units: 3
- options:
- #endpoint-type: internalURL
- secret: admin
- vip: 10.4.1.11
- webroot: /
- to:
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- nova-compute:
- charm: local:trusty/nova-compute
- num_units: 4
- options:
- enable-live-migration: true
- enable-resize: true
- manage-neutron-plugin-legacy-mode: false
- migration-auth-type: ssh
- #virt-type: lxd
- #hugepages: "50%"
- to:
- - "nodes=1"
- - "nodes=2"
- - "nodes=3"
- - "nodes=4"
- nova-cloud-controller:
- charm: local:trusty/nova-cloud-controller
- num_units: 3
- options:
- console-access-protocol: novnc
- network-manager: Neutron
- #console-proxy-ip: pod.maas
- #service-guard: true
- vip: 10.4.1.16
- #os-public-hostname: api.public-fqdn
- to:
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- neutron-api:
- charm: local:trusty/neutron-api
- num_units: 3
- options:
- neutron-security-groups: True
- manage-neutron-plugin-legacy-mode: False
- vip: 10.4.1.17
- #os-public-hostname: api.public-fqdn
- to:
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- neutron-gateway:
- charm: local:trusty/neutron-gateway
- options:
- #ext-port: "eth1"
- plugin: ovs-odl
- instance-mtu: 1400
- to:
- - "nodes=0"
- odl-controller:
- charm: local:trusty/odl-controller
- options:
- install-url: "https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.4.2-Beryllium-SR2/distribution-karaf-0.4.2-Beryllium-SR2.tar.gz"
- profile: "openvswitch-odl-beryllium"
- to:
- - "lxc:nodes=0"
- glance:
- charm: local:trusty/glance
- num_units: 3
- options:
- vip: 10.4.1.12
- #os-public-hostname: api.public-fqdn
- to:
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- opnfv-promise:
- charm: local:trusty/promise
- to:
- - "lxc:nodes=0"
- congress:
- charm: local:trusty/congress
- options:
- #source-branch: stable/mitaka
- to:
- - "lxc:nodes=0"
- hacluster-keystone:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-cinder:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-heat:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-horizon:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-nova:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-neutron:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-glance:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-ceilometer:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-mysql:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
-# hacluster-ceph-radosgw:
-# charm: "local:trusty/hacluster"
-# options:
-# corosync_transport: unicast
-# cluster_count: 3
- relations:
- - - "ntp:juju-info"
- - "nodes:juju-info"
- - - "mysql:ha"
- - "hacluster-mysql:ha"
- - - "glance:ha"
- - "hacluster-glance:ha"
- - - "keystone:ha"
- - "hacluster-keystone:ha"
- - - "neutron-api:ha"
- - "hacluster-neutron:ha"
- - - "nova-cloud-controller:ha"
- - "hacluster-nova:ha"
- - - "openstack-dashboard:ha"
- - "hacluster-horizon:ha"
- - - "ceilometer:ha"
- - "hacluster-ceilometer:ha"
- - - "cinder:ha"
- - "hacluster-cinder:ha"
- - - "heat:ha"
- - "hacluster-heat:ha"
-# - - "ceph-radosgw:ha"
-# - "hacluster-ceph-radosgw:ha"
-
-openstack-phase2:
- inherits: openstack-phase1
- relations:
- - - "neutron-api:neutron-plugin-api-subordinate"
- - "neutron-api-odl:neutron-plugin-api-subordinate"
- - - "nova-compute:neutron-plugin"
- - "openvswitch-odl:neutron-plugin"
- - - "neutron-gateway"
- - "openvswitch-odl"
- - - "openvswitch-odl:ovsdb-manager"
- - "odl-controller:ovsdb-manager"
- - - "neutron-api-odl:odl-controller"
- - "odl-controller:controller-api"
- - - "keystone:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:image-service"
- - "glance:image-service"
- - - "nova-cloud-controller:identity-service"
- - "keystone:identity-service"
- - - "nova-cloud-controller:cloud-compute"
- - "nova-compute:cloud-compute"
- - - "nova-compute:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-compute:image-service"
- - "glance:image-service"
- - - "glance:shared-db"
- - "mysql:shared-db"
- - - "glance:identity-service"
- - "keystone:identity-service"
- - - "glance:amqp"
- - "rabbitmq-server:amqp"
- - - "openstack-dashboard:identity-service"
- - "keystone:identity-service"
- - - "neutron-api:shared-db"
- - "mysql:shared-db"
- - - "neutron-api:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:neutron-api"
- - "neutron-api:neutron-api"
- - - "neutron-api:identity-service"
- - "keystone:identity-service"
- - - "neutron-gateway:amqp"
- - "rabbitmq-server:amqp"
- - - "neutron-gateway:neutron-plugin-api"
- - "neutron-api:neutron-plugin-api"
- - - "nova-cloud-controller:quantum-network-service"
- - "neutron-gateway:quantum-network-service"
- - - "ceilometer:amqp"
- - "rabbitmq-server:amqp"
- - - "ceilometer-agent:ceilometer-service"
- - "ceilometer:ceilometer-service"
- - - "ceilometer:identity-service"
- - "keystone:identity-service"
- - - "ceilometer:identity-notifications"
- - "keystone:identity-notifications"
- - - "ceilometer-agent:nova-ceilometer"
- - "nova-compute:nova-ceilometer"
- - - "ceilometer:shared-db"
- - "mongodb:database"
- - - "heat:shared-db"
- - "mysql:shared-db"
- - - "heat:identity-service"
- - "keystone:identity-service"
- - - "heat:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:image-service"
- - "glance:image-service"
- - - "cinder:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:identity-service"
- - "keystone:identity-service"
- - - "cinder:cinder-volume-service"
- - "nova-cloud-controller:cinder-volume-service"
- - - "cinder-ceph:storage-backend"
- - "cinder:storage-backend"
- - - "ceph:client"
- - "nova-compute:ceph"
- - - "cinder:shared-db"
- - "mysql:shared-db"
- - - "ceph:client"
- - "cinder-ceph:ceph"
- - - "ceph:client"
- - "glance:ceph"
- - - "ceph-osd:mon"
- - "ceph:osd"
- - - "ceph-radosgw:mon"
- - "ceph:radosgw"
- - - "ceph-radosgw:identity-service"
- - "keystone:identity-service"
- #- - nova-compute:lxd
- #- lxd:lxd
- - - congress:shared-db
- - mysql:shared-db
- - - congress:identity-service
- - keystone:identity-service
- - - congress:amqp
- - rabbitmq-server:amqp
- services:
- cinder-ceph:
- charm: local:trusty/cinder-ceph
- ceilometer-agent:
- charm: "local:trusty/ceilometer-agent"
- openvswitch-odl:
- charm: local:trusty/openvswitch-odl
- neutron-api-odl:
- charm: local:trusty/neutron-api-odl
- options:
- overlay-network-type: 'vxlan'
- security-groups: True
+++ /dev/null
-# vim: set ts=2 et:
-trusty-mitaka-nodes:
- inherits: openstack-phase1
-
-trusty-mitaka:
- inherits: openstack-phase2
- overrides:
- #os-data-network: 10.4.8.0/21
- #ceph-cluster-network: 10.4.0.0/21
- #prefer-ipv6: true
- #enable-dvr: true
- #l2-population: true
- region: Canonical
- #source: "cloud:trusty-mitaka"
- openstack-origin: "cloud:trusty-mitaka"
- ceph-osd-replication-count: 2
- admin-role: admin
- keystone-admin-role: admin
-
-openstack-phase1:
- services:
- nodes:
- charm: "cs:trusty/ubuntu"
- num_units: 2
- ntp:
- charm: "local:trusty/ntp"
- relations:
- - - "ntp:juju-info"
- - "nodes:juju-info"
-
-openstack-phase2:
- inherits: openstack-phase1
- relations:
- - - "neutron-api:neutron-plugin-api-subordinate"
- - "neutron-api-odl:neutron-plugin-api-subordinate"
- - - "nova-compute:neutron-plugin"
- - "openvswitch-odl:neutron-plugin"
- - - "neutron-gateway"
- - "openvswitch-odl"
- - - "openvswitch-odl:ovsdb-manager"
- - "odl-controller:ovsdb-manager"
- - - "neutron-api-odl:odl-controller"
- - "odl-controller:controller-api"
- - - "keystone:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:image-service"
- - "glance:image-service"
- - - "nova-cloud-controller:identity-service"
- - "keystone:identity-service"
- - - "nova-cloud-controller:cloud-compute"
- - "nova-compute:cloud-compute"
- - - "nova-compute:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-compute:image-service"
- - "glance:image-service"
- - - "glance:shared-db"
- - "mysql:shared-db"
- - - "glance:identity-service"
- - "keystone:identity-service"
- - - "glance:amqp"
- - "rabbitmq-server:amqp"
- - - "openstack-dashboard:identity-service"
- - "keystone:identity-service"
- - - "neutron-api:shared-db"
- - "mysql:shared-db"
- - - "neutron-api:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:neutron-api"
- - "neutron-api:neutron-api"
- - - "neutron-api:identity-service"
- - "keystone:identity-service"
- - - "neutron-gateway:amqp"
- - "rabbitmq-server:amqp"
- - - "neutron-gateway:neutron-plugin-api"
- - "neutron-api:neutron-plugin-api"
- - - "nova-cloud-controller:quantum-network-service"
- - "neutron-gateway:quantum-network-service"
- - - "ceilometer:amqp"
- - "rabbitmq-server:amqp"
- - - "ceilometer-agent:ceilometer-service"
- - "ceilometer:ceilometer-service"
- - - "ceilometer:identity-service"
- - "keystone:identity-service"
- - - "ceilometer:identity-notifications"
- - "keystone:identity-notifications"
- - - "ceilometer-agent:nova-ceilometer"
- - "nova-compute:nova-ceilometer"
- - - "ceilometer:shared-db"
- - "mongodb:database"
- - - "heat:shared-db"
- - "mysql:shared-db"
- - - "heat:identity-service"
- - "keystone:identity-service"
- - - "heat:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:image-service"
- - "glance:image-service"
- - - "cinder:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:identity-service"
- - "keystone:identity-service"
- - - "cinder:cinder-volume-service"
- - "nova-cloud-controller:cinder-volume-service"
- - - "cinder-ceph:storage-backend"
- - "cinder:storage-backend"
- - - "ceph:client"
- - "nova-compute:ceph"
- - - "cinder:shared-db"
- - "mysql:shared-db"
- - - "ceph:client"
- - "cinder-ceph:ceph"
- - - "ceph:client"
- - "glance:ceph"
- - - "ceph-osd:mon"
- - "ceph:osd"
- - - "ceph-radosgw:mon"
- - "ceph:radosgw"
- - - "ceph-radosgw:identity-service"
- - "keystone:identity-service"
- #- - nova-compute:lxd
- #- lxd:lxd
- - - congress:shared-db
- - mysql:shared-db
- - - congress:identity-service
- - keystone:identity-service
- - - congress:amqp
- - rabbitmq-server:amqp
- services:
- mysql:
- charm: "local:trusty/percona-cluster"
- options:
- dataset-size: 2G
- max-connections: 10000
- to:
- - "lxc:nodes=0"
- ceilometer:
- charm: "local:trusty/ceilometer"
- to:
- - "lxc:nodes=1"
- ceilometer-agent:
- charm: "local:trusty/ceilometer-agent"
- mongodb:
- charm: "local:trusty/mongodb"
- to:
- - "lxc:nodes=0"
- heat:
- charm: "local:trusty/heat"
- to:
- - "lxc:nodes=1"
- ceph:
- charm: "local:trusty/ceph"
- num_units: 2
- options:
- fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
- monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
- monitor-count: 2
-# osd-reformat: 'no'
-# ceph-cluster-network: 192.168.0.0/24
-# ceph-public-network: 192.168.0.0/24
- to:
- - "lxc:nodes=0"
- - "lxc:nodes=0"
- ceph-osd:
- charm: "local:trusty/ceph-osd"
- num_units: 2
- options:
- osd-devices: /srv
- osd-reformat: 'yes'
- to:
- - "nodes=0"
- - "nodes=1"
- ceph-radosgw:
- charm: "local:trusty/ceph-radosgw"
- options:
- use-embedded-webserver: true
- operator-roles: "Member,admin"
- to:
- - "lxc:nodes=0"
- cinder:
- charm: "local:trusty/cinder"
- options:
- block-device: None
- glance-api-version: 2
- to:
- - "lxc:nodes=1"
- cinder-ceph:
- charm: "local:trusty/cinder-ceph"
- rabbitmq-server:
- charm: "local:trusty/rabbitmq-server"
- to:
- - "lxc:nodes=0"
- keystone:
- charm: "local:trusty/keystone"
- options:
- admin-password: openstack
- admin-token: admin
- to:
- - "lxc:nodes=1"
- openstack-dashboard:
- charm: "local:trusty/openstack-dashboard"
- options:
- secret: admin
- webroot: /
- to:
- - "lxc:nodes=1"
- nova-compute:
- charm: local:trusty/nova-compute
- options:
- enable-live-migration: true
- enable-resize: true
- manage-neutron-plugin-legacy-mode: false
- migration-auth-type: ssh
- #virt-type: lxd
- #hugepages: "50%"
- to:
- - "nodes=1"
- nova-cloud-controller:
- charm: local:trusty/nova-cloud-controller
- options:
- console-access-protocol: novnc
- network-manager: Neutron
- to:
- - "lxc:nodes=0"
- neutron-api:
- charm: local:trusty/neutron-api
- options:
- neutron-security-groups: True
- manage-neutron-plugin-legacy-mode: False
- to:
- - "lxc:nodes=1"
- neutron-gateway:
- charm: local:trusty/neutron-gateway
- options:
- #ext-port: "eth1"
- plugin: ovs-odl
- instance-mtu: 1400
- to:
- - "nodes=0"
- odl-controller:
- charm: local:trusty/odl-controller
- options:
- install-url: "https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.4.2-Beryllium-SR2/distribution-karaf-0.4.2-Beryllium-SR2.tar.gz"
- profile: "openvswitch-odl-beryllium"
- http-proxy: "http://squid.internal:3128"
- https-proxy: "http://squid.internal:3128"
- to:
- - "lxc:nodes=0"
- glance:
- charm: local:trusty/glance
- to:
- - "lxc:nodes=1"
- opnfv-promise:
- charm: local:trusty/promise
- to:
- - "lxc:nodes=0"
- neutron-api-odl:
- charm: local:trusty/neutron-api-odl
- options:
- overlay-network-type: 'vxlan'
- security-groups: True
- openvswitch-odl:
- charm: local:trusty/openvswitch-odl
- congress:
- charm: local:trusty/congress
- options:
- #source-branch: stable/mitaka
- to:
- - "lxc:nodes=1"
+++ /dev/null
-# vim: set ts=2 et:
-trusty-mitaka-nodes:
- inherits: openstack-phase1
-
-trusty-mitaka:
- inherits: openstack-phase2
- overrides:
- #os-data-network: 10.4.8.0/21
- #ceph-cluster-network: 10.4.0.0/21
- #prefer-ipv6: true
- #enable-dvr: true
- #l2-population: true
- region: Canonical
- #source: "cloud:trusty-mitaka"
- openstack-origin: "cloud:trusty-mitaka"
- ceph-osd-replication-count: 2
- admin-role: admin
- keystone-admin-role: admin
-
-openstack-phase1:
- services:
- nodes:
- charm: "cs:trusty/ubuntu"
- num_units: 2
- ntp:
- charm: "local:trusty/ntp"
- relations:
- - - "ntp:juju-info"
- - "nodes:juju-info"
- - - "ntp:juju-info"
- - "nodes:juju-info"
-
-openstack-phase2:
- inherits: openstack-phase1
- relations:
- - - "neutron-api:neutron-plugin-api-subordinate"
- - "neutron-api-odl:neutron-plugin-api-subordinate"
- - - "nova-compute:neutron-plugin"
- - "openvswitch-odl:neutron-plugin"
- - - "neutron-gateway"
- - "openvswitch-odl"
- - - "openvswitch-odl:ovsdb-manager"
- - "odl-controller:ovsdb-manager"
- - - "neutron-api-odl:odl-controller"
- - "odl-controller:controller-api"
- - - "keystone:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:image-service"
- - "glance:image-service"
- - - "nova-cloud-controller:identity-service"
- - "keystone:identity-service"
- - - "nova-cloud-controller:cloud-compute"
- - "nova-compute:cloud-compute"
- - - "nova-compute:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-compute:image-service"
- - "glance:image-service"
- - - "glance:shared-db"
- - "mysql:shared-db"
- - - "glance:identity-service"
- - "keystone:identity-service"
- - - "glance:amqp"
- - "rabbitmq-server:amqp"
- - - "openstack-dashboard:identity-service"
- - "keystone:identity-service"
- - - "neutron-api:shared-db"
- - "mysql:shared-db"
- - - "neutron-api:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:neutron-api"
- - "neutron-api:neutron-api"
- - - "neutron-api:identity-service"
- - "keystone:identity-service"
- - - "neutron-gateway:amqp"
- - "rabbitmq-server:amqp"
- - - "neutron-gateway:neutron-plugin-api"
- - "neutron-api:neutron-plugin-api"
- - - "nova-cloud-controller:quantum-network-service"
- - "neutron-gateway:quantum-network-service"
- - - "ceilometer:amqp"
- - "rabbitmq-server:amqp"
- - - "ceilometer-agent:ceilometer-service"
- - "ceilometer:ceilometer-service"
- - - "ceilometer:identity-service"
- - "keystone:identity-service"
- - - "ceilometer:identity-notifications"
- - "keystone:identity-notifications"
- - - "ceilometer-agent:nova-ceilometer"
- - "nova-compute:nova-ceilometer"
- - - "ceilometer:shared-db"
- - "mongodb:database"
- - - "heat:shared-db"
- - "mysql:shared-db"
- - - "heat:identity-service"
- - "keystone:identity-service"
- - - "heat:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:image-service"
- - "glance:image-service"
- - - "cinder:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:identity-service"
- - "keystone:identity-service"
- - - "cinder:cinder-volume-service"
- - "nova-cloud-controller:cinder-volume-service"
- - - "cinder-ceph:storage-backend"
- - "cinder:storage-backend"
- - - "ceph:client"
- - "nova-compute:ceph"
- - - "cinder:shared-db"
- - "mysql:shared-db"
- - - "ceph:client"
- - "cinder-ceph:ceph"
- - - "ceph:client"
- - "glance:ceph"
- - - "ceph-osd:mon"
- - "ceph:osd"
- - - "ceph-radosgw:mon"
- - "ceph:radosgw"
- - - "ceph-radosgw:identity-service"
- - "keystone:identity-service"
- #- - nova-compute:lxd
- #- lxd:lxd
- - - congress:shared-db
- - mysql:shared-db
- - - congress:identity-service
- - keystone:identity-service
- - - congress:amqp
- - rabbitmq-server:amqp
- services:
- mysql:
- charm: "local:trusty/percona-cluster"
- options:
- dataset-size: 2G
- max-connections: 10000
- to:
- - "lxc:nodes=0"
- ceilometer:
- charm: "local:trusty/ceilometer"
- to:
- - "lxc:nodes=1"
- ceilometer-agent:
- charm: "local:trusty/ceilometer-agent"
- mongodb:
- charm: "local:trusty/mongodb"
- to:
- - "lxc:nodes=0"
- heat:
- charm: "local:trusty/heat"
- to:
- - "lxc:nodes=1"
- ceph:
- charm: "local:trusty/ceph"
- num_units: 2
- options:
- fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
- monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
- monitor-count: 2
-# osd-reformat: 'no'
-# ceph-cluster-network: 192.168.0.0/24
-# ceph-public-network: 192.168.0.0/24
- to:
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- ceph-osd:
- charm: "local:trusty/ceph-osd"
- num_units: 2
- options:
- osd-devices: /srv
- osd-reformat: 'yes'
- to:
- - "nodes=0"
- - "nodes=1"
- ceph-radosgw:
- charm: "local:trusty/ceph-radosgw"
- options:
- use-embedded-webserver: true
- operator-roles: "Member,admin"
- to:
- - "lxc:nodes=1"
- cinder:
- charm: "local:trusty/cinder"
- options:
- block-device: None
- glance-api-version: 2
-# openstack-origin-git: include-file://cinder-master.yaml
- to:
- - "lxc:nodes=0"
- cinder-ceph:
- charm: "local:trusty/cinder-ceph"
- rabbitmq-server:
- charm: local:trusty/rabbitmq-server
- to:
- - "lxc:nodes=1"
- keystone:
- charm: local:trusty/keystone
- options:
- openstack-origin-git: include-file://keystone-master.yaml
- admin-password: openstack
- admin-token: admin
- to:
- - "lxc:nodes=1"
- openstack-dashboard:
- charm: local:trusty/openstack-dashboard
- options:
- openstack-origin-git: include-file://horizon-master.yaml
- secret: admin
- to:
- - "lxc:nodes=0"
- nova-compute:
- charm: local:trusty/nova-compute
- options:
- openstack-origin-git: include-file://nova-master.yaml
- enable-live-migration: true
- enable-resize: true
- manage-neutron-plugin-legacy-mode: false
- migration-auth-type: ssh
- #hugepages: "50%"
- #virt-type: lxd
- to:
- - "nodes=1"
- nova-cloud-controller:
- charm: local:trusty/nova-cloud-controller
- options:
- openstack-origin-git: include-file://nova-master.yaml
- console-access-protocol: novnc
- network-manager: Neutron
- to:
- - "lxc:nodes=1"
- neutron-api:
- charm: local:trusty/neutron-api
- options:
- neutron-security-groups: True
- manage-neutron-plugin-legacy-mode: False
- to:
- - "lxc:nodes=0"
- neutron-gateway:
- charm: local:trusty/neutron-gateway
- options:
- openstack-origin-git: include-file://neutron-master.yaml
- #ext-port: "eth1"
- plugin: ovs-odl
- instance-mtu: 1400
- to:
- - "nodes=0"
- odl-controller:
- charm: local:trusty/odl-controller
- options:
- install-url: "https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.4.2-Beryllium-SR2/distribution-karaf-0.4.2-Beryllium-SR2.tar.gz"
- profile: "openvswitch-odl-beryllium"
- http-proxy: "http://squid.internal:3128"
- https-proxy: "http://squid.internal:3128"
- to:
- - "lxc:nodes=1"
- glance:
- charm: local:trusty/glance
- options:
- openstack-origin-git: include-file://glance-master.yaml
- to:
- - "lxc:nodes=0"
- opnfv-promise:
- charm: local:trusty/promise
- to:
- - "lxc:nodes=1"
- neutron-api-odl:
- charm: local:trusty/neutron-api-odl
- options:
- overlay-network-type: 'vxlan'
- security-groups: True
- openvswitch-odl:
- charm: local:trusty/openvswitch-odl
- congress:
- charm: local:trusty/congress
- options:
- #source-branch: stable/mitaka
- to:
- - "lxc:nodes=0"
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-# adjust tiny image
-nova flavor-delete m1.tiny
-nova flavor-create m1.tiny 1 512 8 1
-
-# configure security groups
-neutron security-group-rule-create --direction ingress --ethertype IPv4 --protocol icmp --remote-ip-prefix 0.0.0.0/0 default
-neutron security-group-rule-create --direction ingress --ethertype IPv4 --protocol tcp --port-range-min 22 --port-range-max 22 --remote-ip-prefix 0.0.0.0/0 default
-
-# import key pair
-keystone tenant-create --name demo --description "Demo Tenant"
-keystone user-create --name demo --tenant demo --pass demo --email demo@demo.demo
-
-nova keypair-add --pub-key id_rsa.pub ubuntu-keypair
-
-# configure external network
-neutron net-create ext-net --router:external --provider:physical_network external --provider:network_type flat
-neutron subnet-create ext-net --name ext-subnet --allocation-pool start=10.5.8.5,end=10.5.8.254 --disable-dhcp --gateway 10.5.8.1 10.5.8.0/24
-
-# create vm network
-neutron net-create demo-net
-neutron subnet-create --name demo-subnet --gateway 10.20.5.1 demo-net 10.20.5.0/24
-
-neutron router-create demo-router
-
-neutron router-interface-add demo-router demo-subnet
-
-neutron router-gateway-set demo-router ext-net
-
-# create pool of floating ips
-i=0
-while [ $i -ne 10 ]; do
- neutron floatingip-create ext-net
- i=$((i + 1))
-done
-
-#http://docs.openstack.org/juno/install-guide/install/apt/content/launch-instance-neutron.html
-# nova boot --flavor m1.small --image cirros-0.3.3-x86_64 --nic net-id=b65479a4-3638-4595-9245-6e41ccd8bfd8 --security-group default --key-name ubuntu-keypair demo-instance1
-# nova floating-ip-associate demo-instance1 10.5.8.35
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-wget -P /tmp/images http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
-wget -P /tmp/images http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
-glance image-create --name "cirros-0.3.3-x86_64" --file /tmp/images/cirros-0.3.3-x86_64-disk.img --disk-format qcow2 --container-format bare --progress
-glance image-create --name "ubuntu-trusty-daily" --file /tmp/images/trusty-server-cloudimg-amd64-disk1.img --disk-format qcow2 --container-format bare --progress
-rm -rf /tmp/images
+++ /dev/null
-#!/bin/sh -ex
-
-configOpenrc()
-{
- cat <<-EOF
- export OS_USERNAME=$1
- export OS_PASSWORD=$2
- export OS_TENANT_NAME=$3
- export OS_AUTH_URL=$4
- export OS_REGION_NAME=$5
- EOF
-}
-
-unitAddress()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null
-}
-
-unitMachine()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null
-}
-
-mkdir -m 0700 -p cloud
-controller_address=$(unitAddress keystone 0)
-configOpenrc admin openstack admin http://$controller_address:5000/v2.0 Canonical > cloud/admin-openrc
-chmod 0600 cloud/admin-openrc
-
-machine=$(unitMachine glance 0)
-juju scp glance.sh cloud/admin-openrc $machine:
-juju run --machine $machine ./glance.sh
-
-machine=$(unitMachine nova-cloud-controller 0)
-juju scp cloud-setup.sh cloud/admin-openrc ~/.ssh/id_rsa.pub $machine:
-juju run --machine $machine ./cloud-setup.sh
-
+++ /dev/null
-ONOS Deployment with Juju
-=================================
-
-This readme contains instructions for checking out and deploying Juju charms for
-ONOS.
-
-The charms are targetted at Trusty.
-
-Checkout charms
----------------
-
-Charms are hosted on Launchpad.
-You need to 'sudo apt-get install bzr' first.
-
-Follow these steps to checkout code:
-
-cd <deployer dir>
-./fetch-charms.sh
-
-This will checkout the relevant charms into 'src' and create any Juju symlinks
-in 'charms'.
-
-Deploy with cloud-sh-onos
-------------------------
-
-cloud-sh-onos is a collection of development shell scripts to deploy
-and setup OpenStack with ONOS using Juju's local provider. This will
-create 3 KVMs as follows:
-
-*KVM #1 - Keystone, Glance, Neutron Server, Nova Cloud Controller, Horizon,
- MySQL, RabbitMQ, ONOS Controller
-
-*KVM #2 - Neutron agents
-
-*KVM #3 - Nova Compute
-
-You'll require approx. 13Gb RAM with 40Gb+ disk space.
-Deployment can take anywhere between 20 mins to 1 hour.
-
-You need to 'sudo apt-get install juju juju-local uvtool', and
-logout/login in order to pick up libvirt group permissions before
-proceeding. See https://bugs.launchpad.net/juju-core/+bug/1308088.
-
-Follow these steps:
-
-ssh-keygen
- (if you don't already have a key at ~/.ssh/id_rsa).
-
-cp cloud-sh-onos/environments.yaml ~/.juju
- (or create your own default local environment in your existing
- environments.yaml file)
-
-cd cloud-sh-onos
-
-./deploy.sh
-
-This will log to 'out.log'.
-
-This will deploy OpenStack and import Trusty's daily image into Glance.
-
-Horizon will be located on the machine 'juju status openstack-dashboard' -
-http://<ip>/horizon.
-Admin credentials will be written to cloud/admin-openrc.
-
-The deployment can be destroyed with:
-
-juju destroy-environment local
-
-
-Deploy with Juju Deployer
--------------------------
-
-Juju Deployer can deploy a preset configuration of charms given a yaml
-configuration file. There is a configuration file in
-'juju-deployer/onos.yaml'.
-
-You need to 'sudo apt-get install juju-deployer' first.
-
-Then:
-
-cd juju-deployer
-
-juju-deployer -c onos.yaml -d trusty-icehouse-onos
-
-Juju Deployer will branch its own copy of the remote charms.
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-# adjust tiny image
-nova flavor-delete m1.tiny
-nova flavor-create m1.tiny 1 512 8 1
-
-# import key pair
-nova keypair-add --pub-key id_rsa.pub ubuntu-keypair
+++ /dev/null
-#!/bin/sh -e
-
-modprobe kvm_intel
-printf "\n%s\n" kvm_intel >> /etc/modules
-service libvirt-bin restart
-
-sed -e 's/KSM_ENABLED=1/KSM_ENABLED=0/' -i /etc/default/qemu-kvm
-service qemu-kvm restart
+++ /dev/null
-export JUJU_REPOSITORY=../charms
-
-DEFAULT_SERIES=trusty
-
-CHARM_GLANCE=local:trusty/glance
-CHARM_GLANCE_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_KEYSTONE=local:trusty/keystone
-CHARM_KEYSTONE_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_MYSQL=trusty/mysql
-CHARM_MYSQL_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_NEUTRON_API=local:trusty/neutron-api
-CHARM_NEUTRON_API_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_NEUTRON_GATEWAY=local:trusty/neutron-gateway
-CHARM_NEUTRON_GATEWAY_DEPLOY_OPTS="--config config.yaml"
-
-
-CHARM_NOVA_CLOUD_CONTROLLER=local:trusty/nova-cloud-controller
-CHARM_NOVA_CLOUD_CONTROLLER_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_NOVA_COMPUTE=local:trusty/nova-compute
-CHARM_NOVA_COMPUTE_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_ONOS_CONTROLLER=local:trusty/onos-controller
-
-CHARM_OPENSTACK_DASHBOARD=local:trusty/openstack-dashboard
-CHARM_OPENSTACK_DASHBOARD_DEPLOY_OPTS="--config config.yaml"
-
-CHARM_RABBITMQ_SERVER=trusty/rabbitmq-server
+++ /dev/null
-keystone:
- admin-password: password
-
-
-mysql:
- dataset-size: 10%
- max-connections: 1000
-
-neutron-api:
- neutron-plugin: onos
- neutron-security-groups: True
-
-
-neutron-gateway:
- plugin: onos
-
-
-nova-cloud-controller:
- network-manager: Neutron
- quantum-security-groups: "yes"
-
+++ /dev/null
-#!/bin/sh -e
-exec ./openstack.sh ./config.sh 2>&1 | tee out.log
+++ /dev/null
-default: local
-
-environments:
- local:
- type: local
- container: kvm
- default-series: trusty
- lxc-clone: true
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-wget http://cloud-images.ubuntu.com/trusty/current/MD5SUMS
-
-wget http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
-glance image-create --name ubuntu-trusty-daily --disk-format qcow2 --container-format bare --owner admin --file trusty-server-cloudimg-amd64-disk1.img --checksum $(grep trusty-server-cloudimg-amd64-disk1.img MD5SUMS | cut -d " " -f 1) --is-public True
+++ /dev/null
-#!/bin/sh -e
-
-DEBIAN_FRONTEND=noninteractive apt-get -qy -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install lxc < /dev/null
-
-sed -e 's/^USE_LXC_BRIDGE="true"/USE_LXC_BRIDGE="false"/' -i /etc/default/lxc
-service lxc-net restart
-
-ifdown eth0
-mv /etc/network/interfaces.d/eth0.cfg /etc/network/interfaces.d/eth0.cfg.bak
-cat <<-"EOF" > /etc/network/interfaces.d/bridge.cfg
- auto eth0
- iface eth0 inet manual
-
- auto lxcbr0
- iface lxcbr0 inet dhcp
- bridge_ports eth0
- EOF
-ifup eth0 lxcbr0
+++ /dev/null
-#!/bin/sh -ex
-
-agentState()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"machines\"][\"$1\"][\"agent-state\"]" 2> /dev/null
-}
-
-agentStateUnit()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"agent-state\"]" 2> /dev/null
-}
-
-configOpenrc()
-{
- cat <<-EOF
- export OS_USERNAME=$1
- export OS_PASSWORD=$2
- export OS_TENANT_NAME=$3
- export OS_AUTH_URL=$4
- export OS_REGION_NAME=$5
- EOF
-}
-
-unitAddress()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null
-}
-
-unitMachine()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null
-}
-
-waitForMachine()
-{
- for machine; do
- while [ "$(agentState $machine)" != started ]; do
- sleep 60
- done
- done
-}
-
-waitForService()
-{
- for service; do
- while [ "$(agentStateUnit "$service" 0)" != started ]; do
- sleep 60
- done
- done
-}
-
-if [ $# -ne 0 ]; then
- . "$1"
-fi
-
-juju bootstrap
-waitForMachine 0
-
-spare_cpus=$(($(grep processor /proc/cpuinfo | wc -l) - 5))
-if [ $spare_cpus -gt 0 ]; then
- spare_cpus=$(((spare_cpus * 3) / 4))
-else
- spare_cpus=0
-fi
-
-extra_cpus=0
-[ $spare_cpus -ne 0 ] && extra_cpus=$((1 + (((spare_cpus - 1) * 3) / 4))) && spare_cpus=$((spare_cpus - extra_cpus))
-juju add-machine --constraints "cpu-cores=$((1 + extra_cpus)) mem=8G root-disk=20G" --series $DEFAULT_SERIES
-
-juju deploy --constraints mem=1G $CHARM_NEUTRON_GATEWAY_DEPLOY_OPTS "${CHARM_NEUTRON_GATEWAY:-neutron-gateway}" neutron-gateway
-
-juju deploy --constraints "cpu-cores=$((1 + spare_cpus)) mem=4G root-disk=20G" $CHARM_NOVA_COMPUTE_DEPLOY_OPTS "${CHARM_NOVA_COMPUTE:-nova-compute}"
-
-waitForMachine 1
-juju scp lxc-network.sh 1:
-juju run --machine 1 "sudo ./lxc-network.sh"
-juju deploy --to lxc:1 $CHARM_MYSQL_DEPLOY_OPTS "${CHARM_MYSQL:-mysql}"
-juju deploy --to lxc:1 $CHARM_RABBITMQ_SERVER_DEPLOY_OPTS "${CHARM_RABBITMQ_SERVER:-rabbitmq-server}"
-juju deploy --to lxc:1 $CHARM_KEYSTONE_DEPLOY_OPTS "${CHARM_KEYSTONE:-keystone}"
-juju deploy --to lxc:1 $CHARM_NOVA_CLOUD_CONTROLLER_DEPLOY_OPTS "${CHARM_NOVA_CLOUD_CONTROLLER:-nova-cloud-controller}"
-juju deploy --to lxc:1 $CHARM_NEUTRON_API_DEPLOY_OPTS "${CHARM_NEUTRON_API:-neutron-api}"
-juju deploy --to lxc:1 $CHARM_GLANCE_DEPLOY_OPTS "${CHARM_GLANCE:-glance}"
-juju deploy --to lxc:1 $CHARM_OPENSTACK_DASHBOARD_DEPLOY_OPTS "${CHARM_OPENSTACK_DASHBOARD:-openstack-dashboard}"
-# onos
-juju deploy --to lxc:1 $CHARM_ONOS_CONTROLLER_DEPLOY_OPTS "${CHARM_ONOS_CONTROLLER:-onos-controller}"
-
-# relation must be set first
-# no official way of knowing when this relation hook will fire
-waitForService mysql keystone
-juju add-relation keystone mysql
-sleep 60
-
-waitForService rabbitmq-server nova-cloud-controller glance
-juju add-relation nova-cloud-controller mysql
-juju add-relation nova-cloud-controller rabbitmq-server
-juju add-relation nova-cloud-controller glance
-juju add-relation nova-cloud-controller keystone
-sleep 60
-
-waitForService neutron-api
-juju add-relation neutron-api mysql
-juju add-relation neutron-api rabbitmq-server
-juju add-relation neutron-api keystone
-juju add-relation neutron-api nova-cloud-controller
-sleep 60
-
-waitForService openstack-dashboard neutron-gateway nova-compute
-juju add-relation neutron-gateway mysql
-juju add-relation neutron-gateway:amqp rabbitmq-server:amqp
-juju add-relation neutron-gateway nova-cloud-controller
-juju add-relation neutron-gateway neutron-api
-juju add-relation nova-compute:shared-db mysql:shared-db
-juju add-relation nova-compute:amqp rabbitmq-server:amqp
-juju add-relation nova-compute glance
-juju add-relation nova-compute nova-cloud-controller
-juju add-relation glance mysql
-juju add-relation glance keystone
-juju add-relation openstack-dashboard keystone
-sleep 60
-
-# onos
-waitForService onos-controller
-juju add-relation neutron-api onos-controller
-juju add-relation neutron-gateway onos-controller
-juju add-relation nova-compute onos-controller
-sleep 60
-
-# enable kvm on compute
-machine=$(unitMachine nova-compute 0)
-juju scp compute.sh $machine:
-juju run --machine $machine "sudo ./compute.sh"
-
-mkdir -m 0700 -p cloud
-controller_address=$(unitAddress keystone 0)
-configOpenrc admin admin Admin http://$controller_address:5000/v2.0 RegionOne > cloud/admin-openrc
-chmod 0600 cloud/admin-openrc
-
-# keystone need some extra time before it become availble for cloud operations.
-
-sleep 300
-machine=$(unitMachine nova-cloud-controller 0)
-juju scp cloud-setup.sh cloud/admin-openrc ~/.ssh/id_rsa.pub $machine:
-juju run --machine $machine ./cloud-setup.sh
-
-machine=$(unitMachine glance 0)
-juju scp glance.sh cloud/admin-openrc $machine:
-juju run --machine $machine ./glance.sh
+++ /dev/null
-# vim: set ts=2 et:
-trusty-mitaka-nodes:
- inherits: openstack-phase1
- overrides:
- #os-data-network: 10.4.8.0/21
- #ceph-cluster-network: 10.4.0.0/21
- #prefer-ipv6: true
- #enable-dvr: true
- #l2-population: true
- region: Canonical
- #source: "cloud:trusty-mitaka"
- openstack-origin: "cloud:trusty-mitaka"
- #ceph-osd-replication-count: 2
- admin-role: admin
- keystone-admin-role: admin
- #use-internal-endpoints: true
- #os-public-hostname: pod.maas
-
-trusty-mitaka:
- inherits: openstack-phase2
-
-openstack-phase1:
- services:
- nodes:
- charm: "cs:trusty/ubuntu"
- num_units: 5
- ntp:
- charm: "local:trusty/ntp"
- mysql:
- charm: "local:trusty/percona-cluster"
- num_units: 3
- options:
- dataset-size: 2G
- lp1366997-workaround: true
- max-connections: 20000
- root-password: 293rhc395m
- sst-password: 127rc14t51
- vip: 10.4.1.15
- to:
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- ceilometer:
- charm: "local:trusty/ceilometer"
- num_units: 3
- options:
- vip: 10.4.1.14
- to:
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- mongodb:
- charm: "local:trusty/mongodb"
- to:
- - "lxc:nodes=0"
- heat:
- charm: "local:trusty/heat"
- num_units: 3
- options:
- vip: 10.4.1.18
- to:
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- ceph:
- charm: "local:trusty/ceph"
- num_units: 3
- options:
- fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
- monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
- monitor-count: 3
-# osd-reformat: 'no'
-# ceph-cluster-network: 192.168.0.0/24
-# ceph-public-network: 192.168.0.0/24
- to:
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- ceph-osd:
- charm: "local:trusty/ceph-osd"
- num_units: 3
- options:
- osd-devices: /srv
- osd-reformat: 'yes'
- to:
- - "nodes=2"
- - "nodes=3"
- - "nodes=4"
- ceph-radosgw:
- charm: "local:trusty/ceph-radosgw"
- options:
- use-embedded-webserver: true
- operator-roles: "Member,admin"
- to:
- - "lxc:nodes=0"
-
- cinder:
- charm: "local:trusty/cinder"
- num_units: 3
- options:
- vip: 10.4.1.19
- block-device: None
- glance-api-version: 2
- to:
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- rabbitmq-server:
- charm: "local:trusty/rabbitmq-server"
- num_units: 3
- options:
- vip: 10.4.1.10
- to:
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- keystone:
- charm: "local:trusty/keystone"
- num_units: 3
- options:
- admin-password: openstack
- admin-token: admin
- vip: 10.4.1.13
- to:
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- openstack-dashboard:
- charm: "local:trusty/openstack-dashboard"
- num_units: 3
- options:
- secret: admin
- vip: 10.4.1.11
- webroot: /
- #endpoint-type: internalURL
- to:
- - "lxc:nodes=2"
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- nova-compute:
- charm: local:trusty/nova-compute
- num_units: 4
- options:
- enable-live-migration: true
- enable-resize: true
- manage-neutron-plugin-legacy-mode: false
- migration-auth-type: ssh
- #hugepages: "50%"
- #virt-type: lxd``
- to:
- - "nodes=1"
- - "nodes=2"
- - "nodes=3"
- - "nodes=4"
- nova-cloud-controller:
- charm: "local:trusty/nova-cloud-controller"
- num_units: 3
- options:
- console-access-protocol: novnc
- network-manager: Neutron
- #service-guard: true
- #console-proxy-ip: pod.maas
- vip: 10.4.1.16
- to:
- - "lxc:nodes=3"
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- neutron-api:
- charm: local:trusty/neutron-api
- num_units: 3
- options:
- neutron-security-groups: True
- flat-network-providers: "*"
- manage-neutron-plugin-legacy-mode: False
- vip: 10.4.1.17
- to:
- - "lxc:nodes=4"
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- neutron-gateway:
- charm: "local:trusty/neutron-gateway"
- options:
- #ext-port: "eth1"
- plugin: onos
- instance-mtu: 1400
- to:
- - "nodes=0"
- onos-controller:
- charm: "local:trusty/onos-controller"
- options:
- #ext-port: "eth1"
- #gateway-mac: "default"
- to:
- - "lxc:nodes=0"
- glance:
- charm: local:trusty/glance
- num_units: 3
- options:
- vip: 10.4.1.12
- to:
- - "lxc:nodes=0"
- - "lxc:nodes=1"
- - "lxc:nodes=2"
- opnfv-promise:
- charm: local:trusty/promise
- to:
- - "lxc:nodes=0"
- congress:
- charm: local:trusty/congress
- options:
- #source-branch: stable/mitaka
- to:
- - "lxc:nodes=0"
- hacluster-keystone:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-horizon:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-nova:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-neutron:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-glance:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-ceilometer:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-mysql:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-heat:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- hacluster-cinder:
- charm: "local:trusty/hacluster"
- options:
- corosync_transport: unicast
- cluster_count: 3
- relations:
- - - "ntp:juju-info"
- - "nodes:juju-info"
- - - "mysql:ha"
- - "hacluster-mysql:ha"
- - - "glance:ha"
- - "hacluster-glance:ha"
- - - "keystone:ha"
- - "hacluster-keystone:ha"
- - - "neutron-api:ha"
- - "hacluster-neutron:ha"
- - - "nova-cloud-controller:ha"
- - "hacluster-nova:ha"
- - - "openstack-dashboard:ha"
- - "hacluster-horizon:ha"
- - - "ceilometer:ha"
- - "hacluster-ceilometer:ha"
- - - "heat:ha"
- - "hacluster-heat:ha"
- - - "cinder:ha"
- - "hacluster-cinder:ha"
-
-openstack-phase2:
- inherits: openstack-phase1
- relations:
- - - "neutron-api:neutron-plugin-api-subordinate"
- - "neutron-api-onos:neutron-plugin-api-subordinate"
- - - "nova-compute:neutron-plugin"
- - "openvswitch-onos:neutron-plugin"
- - - "neutron-gateway"
- - "openvswitch-onos"
- - - "openvswitch-onos:ovsdb-manager"
- - "onos-controller:ovsdb-manager"
- - - "neutron-api-onos:onos-controller"
- - "onos-controller:controller-api"
- - - "keystone:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:image-service"
- - "glance:image-service"
- - - "nova-cloud-controller:identity-service"
- - "keystone:identity-service"
- - - "nova-cloud-controller:cloud-compute"
- - "nova-compute:cloud-compute"
- - - "nova-compute:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-compute:image-service"
- - "glance:image-service"
- - - "glance:shared-db"
- - "mysql:shared-db"
- - - "glance:identity-service"
- - "keystone:identity-service"
- - - "glance:amqp"
- - "rabbitmq-server:amqp"
- - - "openstack-dashboard:identity-service"
- - "keystone:identity-service"
- - - "neutron-api:shared-db"
- - "mysql:shared-db"
- - - "neutron-api:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:neutron-api"
- - "neutron-api:neutron-api"
- - - "neutron-api:identity-service"
- - "keystone:identity-service"
- - - "neutron-gateway:amqp"
- - "rabbitmq-server:amqp"
- - - "neutron-gateway:neutron-plugin-api"
- - "neutron-api:neutron-plugin-api"
- - - "nova-cloud-controller:quantum-network-service"
- - "neutron-gateway:quantum-network-service"
- - - "ceilometer:amqp"
- - "rabbitmq-server:amqp"
- - - "ceilometer-agent:ceilometer-service"
- - "ceilometer:ceilometer-service"
- - - "ceilometer:identity-service"
- - "keystone:identity-service"
- - - "ceilometer:identity-notifications"
- - "keystone:identity-notifications"
- - - "ceilometer-agent:nova-ceilometer"
- - "nova-compute:nova-ceilometer"
- - - "ceilometer:shared-db"
- - "mongodb:database"
- - - "heat:shared-db"
- - "mysql:shared-db"
- - - "heat:identity-service"
- - "keystone:identity-service"
- - - "heat:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:image-service"
- - "glance:image-service"
- - - "cinder:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:identity-service"
- - "keystone:identity-service"
- - - "cinder:cinder-volume-service"
- - "nova-cloud-controller:cinder-volume-service"
- - - "cinder-ceph:storage-backend"
- - "cinder:storage-backend"
- - - "ceph:client"
- - "nova-compute:ceph"
- - - "cinder:shared-db"
- - "mysql:shared-db"
- - - "ceph:client"
- - "cinder-ceph:ceph"
- - - "ceph:client"
- - "glance:ceph"
- - - "ceph-osd:mon"
- - "ceph:osd"
- - - "ceph-radosgw:mon"
- - "ceph:radosgw"
- - - "ceph-radosgw:identity-service"
- - "keystone:identity-service"
- #- - nova-compute:lxd
- #- lxd:lxd
- - - congress:shared-db
- - mysql:shared-db
- - - congress:identity-service
- - keystone:identity-service
- - - congress:amqp
- - rabbitmq-server:amqp
- services:
- ceilometer-agent:
- charm: "local:trusty/ceilometer-agent"
- cinder-ceph:
- charm: "local:trusty/cinder-ceph"
- openvswitch-onos:
- charm: "local:trusty/openvswitch-onos"
- neutron-api-onos:
- charm: "local:trusty/neutron-api-onos"
- options:
- overlay-network-type: 'vxlan'
- security-groups: True
+++ /dev/null
-# vim: set ts=2 et:
-trusty-mitaka-nodes:
- inherits: openstack-phase1
-
-trusty-mitaka:
- inherits: openstack-phase2
- overrides:
- #os-data-network: 10.4.8.0/21
- #ceph-cluster-network: 10.4.0.0/21
- #prefer-ipv6: true
- #enable-dvr: true
- #l2-population: true
- region: Canonical
- #source: "cloud:trusty-mitaka"
- openstack-origin: "cloud:trusty-mitaka"
- ceph-osd-replication-count: 2
- admin-role: admin
- keystone-admin-role: admin
-
-openstack-phase1:
- services:
- nodes:
- charm: "cs:trusty/ubuntu"
- num_units: 2
- ntp:
- charm: "local:trusty/ntp"
- relations:
- - - "ntp:juju-info"
- - "nodes:juju-info"
-
-openstack-phase2:
- inherits: openstack-phase1
- relations:
- - - "neutron-api:neutron-plugin-api-subordinate"
- - "neutron-api-onos:neutron-plugin-api-subordinate"
- - - "nova-compute:neutron-plugin"
- - "openvswitch-onos:neutron-plugin"
- - - "neutron-gateway"
- - "openvswitch-onos"
- - - "openvswitch-onos:ovsdb-manager"
- - "onos-controller:ovsdb-manager"
- - - "neutron-api-onos:onos-controller"
- - "onos-controller:controller-api"
- - - "keystone:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:image-service"
- - "glance:image-service"
- - - "nova-cloud-controller:identity-service"
- - "keystone:identity-service"
- - - "nova-cloud-controller:cloud-compute"
- - "nova-compute:cloud-compute"
- - - "nova-compute:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-compute:image-service"
- - "glance:image-service"
- - - "glance:shared-db"
- - "mysql:shared-db"
- - - "glance:identity-service"
- - "keystone:identity-service"
- - - "glance:amqp"
- - "rabbitmq-server:amqp"
- - - "openstack-dashboard:identity-service"
- - "keystone:identity-service"
- - - "neutron-api:shared-db"
- - "mysql:shared-db"
- - - "neutron-api:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:neutron-api"
- - "neutron-api:neutron-api"
- - - "neutron-api:identity-service"
- - "keystone:identity-service"
- - - "neutron-gateway:amqp"
- - "rabbitmq-server:amqp"
- - - "neutron-gateway:neutron-plugin-api"
- - "neutron-api:neutron-plugin-api"
- - - "nova-cloud-controller:quantum-network-service"
- - "neutron-gateway:quantum-network-service"
- - - "ceilometer:amqp"
- - "rabbitmq-server:amqp"
- - - "ceilometer-agent:ceilometer-service"
- - "ceilometer:ceilometer-service"
- - - "ceilometer:identity-service"
- - "keystone:identity-service"
- - - "ceilometer:identity-notifications"
- - "keystone:identity-notifications"
- - - "ceilometer-agent:nova-ceilometer"
- - "nova-compute:nova-ceilometer"
- - - "ceilometer:shared-db"
- - "mongodb:database"
- - - "heat:shared-db"
- - "mysql:shared-db"
- - - "heat:identity-service"
- - "keystone:identity-service"
- - - "heat:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:image-service"
- - "glance:image-service"
- - - "cinder:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:identity-service"
- - "keystone:identity-service"
- - - "cinder:cinder-volume-service"
- - "nova-cloud-controller:cinder-volume-service"
- - - "cinder-ceph:storage-backend"
- - "cinder:storage-backend"
- - - "ceph:client"
- - "nova-compute:ceph"
- - - "cinder:shared-db"
- - "mysql:shared-db"
- - - "ceph:client"
- - "cinder-ceph:ceph"
- - - "ceph:client"
- - "glance:ceph"
- - - "ceph-osd:mon"
- - "ceph:osd"
- - - "ceph-radosgw:mon"
- - "ceph:radosgw"
- - - "ceph-radosgw:identity-service"
- - "keystone:identity-service"
- #- - nova-compute:lxd
- #- lxd:lxd
- - - congress:shared-db
- - mysql:shared-db
- - - congress:identity-service
- - keystone:identity-service
- - - congress:amqp
- - rabbitmq-server:amqp
- services:
- mysql:
- charm: "local:trusty/percona-cluster"
- options:
- dataset-size: 2G
- max-connections: 10000
- to:
- - "lxc:nodes=0"
- ceilometer:
- charm: "local:trusty/ceilometer"
- to:
- - "lxc:nodes=1"
- ceilometer-agent:
- charm: "local:trusty/ceilometer-agent"
- mongodb:
- charm: "cs:trusty/mongodb"
- to:
- - "lxc:nodes=0"
- heat:
- charm: "local:trusty/heat"
- to:
- - "lxc:nodes=1"
- ceph:
- charm: "local:trusty/ceph"
- num_units: 2
- options:
- fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
- monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
- monitor-count: 2
-# osd-reformat: 'no'
-# ceph-cluster-network: 192.168.0.0/24
-# ceph-public-network: 192.168.0.0/24
- to:
- - "lxc:nodes=1"
- - "lxc:nodes=0"
- ceph-osd:
- charm: "local:trusty/ceph-osd"
- num_units: 2
- options:
- osd-devices: /srv
- osd-reformat: 'yes'
- to:
- - "nodes=0"
- - "nodes=1"
- ceph-radosgw:
- charm: "local:trusty/ceph-radosgw"
- options:
- use-embedded-webserver: true
- operator-roles: "Member,admin"
- to:
- - "lxc:nodes=0"
- cinder:
- charm: "local:trusty/cinder"
- options:
- block-device: None
- glance-api-version: 2
- to:
- - "lxc:nodes=1"
- cinder-ceph:
- charm: "local:trusty/cinder-ceph"
- rabbitmq-server:
- charm: "local:trusty/rabbitmq-server"
- to:
- - "lxc:nodes=0"
- keystone:
- charm: "local:trusty/keystone"
- options:
- admin-password: openstack
- admin-token: admin
- to:
- - "lxc:nodes=1"
- openstack-dashboard:
- charm: "local:trusty/openstack-dashboard"
- options:
- secret: admin
- webroot: /
- to:
- - "lxc:nodes=0"
- nova-compute:
- charm: local:trusty/nova-compute
- options:
- enable-live-migration: true
- enable-resize: true
- manage-neutron-plugin-legacy-mode: false
- migration-auth-type: ssh
- to:
- - "nodes=1"
- nova-cloud-controller:
- charm: "local:trusty/nova-cloud-controller"
- options:
- console-access-protocol: novnc
- network-manager: Neutron
- to:
- - "lxc:nodes=1"
- neutron-api:
- charm: local:trusty/neutron-api
- options:
- neutron-security-groups: True
- manage-neutron-plugin-legacy-mode: False
- to:
- - "lxc:nodes=0"
- neutron-gateway:
- charm: "local:trusty/neutron-gateway"
- options:
- #ext-port: "eth1"
- plugin: onos
- instance-mtu: 1400
- to:
- - "nodes=0"
- onos-controller:
- charm: "local:trusty/onos-controller"
- options:
- #ext-port: "eth1"
- #gateway-mac: "default"
- to:
- - "lxc:nodes=1"
- glance:
- charm: local:trusty/glance
- to:
- - "lxc:nodes=0"
- opnfv-promise:
- charm: local:trusty/promise
- to:
- - "lxc:nodes=1"
- neutron-api-onos:
- charm: "local:trusty/neutron-api-onos"
- options:
- overlay-network-type: 'vxlan'
- security-groups: True
- openvswitch-onos:
- charm: "local:trusty/openvswitch-onos"
- congress:
- charm: local:trusty/congress
- options:
- #source-branch: stable/mitaka
- to:
- - "lxc:nodes=0"
+++ /dev/null
-# vim: set ts=2 et:
-trusty-mitaka-nodes:
- inherits: openstack-phase1
-
-trusty-mitaka:
- inherits: openstack-phase2
- overrides:
- #os-data-network: 10.4.8.0/21
- #ceph-cluster-network: 10.4.0.0/21
- #prefer-ipv6: true
- #enable-dvr: true
- #l2-population: true
- region: Canonical
- #source: "cloud:trusty-mitaka"
- openstack-origin: "cloud:trusty-mitaka"
- ceph-osd-replication-count: 2
- admin-role: admin
- keystone-admin-role: admin
-
-openstack-phase1:
- services:
- nodes:
- charm: "cs:trusty/ubuntu"
- num_units: 2
- ntp:
- charm: "local:trusty/ntp"
- relations:
- - - "ntp:juju-info"
- - "nodes:juju-info"
-
-openstack-phase2:
- inherits: openstack-phase1
- relations:
- - - "nova-compute:neutron-plugin"
- - "neutron-api:neutron-plugin"
- - - "neutron-gateway"
- - "onos-controller:ovsdb-manager"
- - - "nova-compute:ovsdb-manager"
- - "onos-controller:ovsdb-manager"
- - - "neutron-api:onos-controller"
- - "onos-controller:controller-api"
- - - "keystone:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:shared-db"
- - "mysql:shared-db"
- - - "nova-cloud-controller:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:image-service"
- - "glance:image-service"
- - - "nova-cloud-controller:identity-service"
- - "keystone:identity-service"
- - - "nova-cloud-controller:cloud-compute"
- - "nova-compute:cloud-compute"
- - - "nova-compute:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-compute:image-service"
- - "glance:image-service"
- - - "glance:shared-db"
- - "mysql:shared-db"
- - - "glance:identity-service"
- - "keystone:identity-service"
- - - "glance:amqp"
- - "rabbitmq-server:amqp"
- - - "openstack-dashboard:identity-service"
- - "keystone:identity-service"
- - - "neutron-api:shared-db"
- - "mysql:shared-db"
- - - "neutron-api:amqp"
- - "rabbitmq-server:amqp"
- - - "nova-cloud-controller:neutron-api"
- - "neutron-api:neutron-api"
- - - "neutron-api:identity-service"
- - "keystone:identity-service"
- - - "neutron-gateway:amqp"
- - "rabbitmq-server:amqp"
- - - "neutron-gateway:neutron-plugin-api"
- - "neutron-api:neutron-plugin-api"
- - - "nova-cloud-controller:quantum-network-service"
- - "neutron-gateway:quantum-network-service"
- - - "ceilometer:amqp"
- - "rabbitmq-server:amqp"
- - - "ceilometer-agent:ceilometer-service"
- - "ceilometer:ceilometer-service"
- - - "ceilometer:identity-service"
- - "keystone:identity-service"
- - - "ceilometer:identity-notifications"
- - "keystone:identity-notifications"
- - - "ceilometer-agent:nova-ceilometer"
- - "nova-compute:nova-ceilometer"
- - - "ceilometer:shared-db"
- - "mongodb:database"
- - - "heat:shared-db"
- - "mysql:shared-db"
- - - "heat:identity-service"
- - "keystone:identity-service"
- - - "heat:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:image-service"
- - "glance:image-service"
- - - "cinder:amqp"
- - "rabbitmq-server:amqp"
- - - "cinder:identity-service"
- - "keystone:identity-service"
- - - "cinder:cinder-volume-service"
- - "nova-cloud-controller:cinder-volume-service"
- - - "cinder-ceph:storage-backend"
- - "cinder:storage-backend"
- - - "ceph:client"
- - "nova-compute:ceph"
- - - "cinder:shared-db"
- - "mysql:shared-db"
- - - "ceph:client"
- - "cinder-ceph:ceph"
- - - "ceph:client"
- - "glance:ceph"
- - - "ceph-osd:mon"
- - "ceph:osd"
- - - "ceph-radosgw:mon"
- - "ceph:radosgw"
- - - "ceph-radosgw:identity-service"
- - "keystone:identity-service"
- #- - nova-compute:lxd
- #- lxd:lxd
- - - congress:shared-db
- - mysql:shared-db
- - - congress:identity-service
- - keystone:identity-service
- - - congress:amqp
- - rabbitmq-server:amqp
- services:
- mysql:
- charm: "local:trusty/percona-cluster"
- options:
- dataset-size: 2G
- max-connections: 10000
- to:
- - "lxc:nodes=0"
- ceilometer:
- charm: "local:trusty/ceilometer"
- to:
- - "lxc:nodes=1"
- ceilometer-agent:
- charm: "local:trusty/ceilometer-agent"
- mongodb:
- charm: "cs:trusty/mongodb"
- to:
- - "lxc:nodes=0"
- heat:
- charm: "local:trusty/heat"
- to:
- - "lxc:nodes=1"
- ceph:
- charm: "local:trusty/ceilometer"
- num_units: 2
- options:
- fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
- monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
- monitor-count: 2
-# osd-reformat: 'no'
-# ceph-cluster-network: 192.168.0.0/24
-# ceph-public-network: 192.168.0.0/24
- to:
- - "lxc:nodes=1"
- - "lxc:nodes=0"
- ceph-osd:
- charm: "local:trusty/ceph-osd"
- num_units: 2
- options:
- osd-devices: /srv
- osd-reformat: 'yes'
- to:
- - "nodes=0"
- - "nodes=1"
- ceph-radosgw:
- charm: "local:trusty/ceph-radosgw"
- options:
- use-embedded-webserver: true
- operator-roles: "Member,admin"
- to:
- - "lxc:nodes=0"
- cinder:
- charm: "local:trusty/cinder"
- options:
- block-device: None
- glance-api-version: 2
-# openstack-origin-git: include-file://cinder-master.yaml
- to:
- - "lxc:nodes=1"
- cinder-ceph:
- charm: "local:trusty/cinder-ceph"
- rabbitmq-server:
- charm: "local:trusty/rabbitmq-server"
- to:
- - "lxc:nodes=0"
- keystone:
- charm: "local:trusty/keystone"
- options:
- openstack-origin-git: include-file://keystone-master.yaml
- admin-password: openstack
- admin-token: admin
- to:
- - "lxc:nodes=1"
- openstack-dashboard:
- charm: "local:trusty/openstack-dashboard"
- options:
- openstack-origin-git: include-file://horizon-master.yaml
- secret: admin
- to:
- - "lxc:nodes=0"
- nova-compute:
- charm: local:trusty/nova-compute
- options:
- openstack-origin-git: include-file://nova-master.yaml
- enable-live-migration: true
- enable-resize: true
- manage-neutron-plugin-legacy-mode: false
- migration-auth-type: ssh
- to:
- - "nodes=1"
- nova-cloud-controller:
- charm: "local:trusty/nova-cloud-controller"
- options:
- openstack-origin-git: include-file://nova-master.yaml
- console-access-protocol: novnc
- network-manager: Neutron
- to:
- - "lxc:nodes=1"
- neutron-api:
- charm: local:trusty/neutron-api
- options:
- neutron-security-groups: True
- manage-neutron-plugin-legacy-mode: False
- to:
- - "lxc:nodes=0"
- neutron-gateway:
- charm: "local:trusty/neutron-gateway"
- options:
- openstack-origin-git: include-file://neutron-master.yaml
- #ext-port: "eth1"
- plugin: onos
- instance-mtu: 1400
- to:
- - "nodes=0"
- onos-controller:
- charm: "local:trusty/onos-controller"
- options:
- #ext-port: "eth1"
- #gateway-mac: "default"
- to:
- - "lxc:nodes=1"
- glance:
- charm: "local:trusty/glance"
- options:
- openstack-origin-git: include-file://glance-master.yaml
- to:
- - "lxc:nodes=0"
- opnfv-promise:
- charm: local:trusty/promise
- to:
- - "lxc:nodes=1"
- neutron-api-onos:
- charm: "local:trusty/neutron-api-onos"
- options:
- overlay-network-type: 'vxlan'
- security-groups: True
- openvswitch-onos:
- charm: "local:trusty/openvswitch-onos"
- congress:
- charm: local:trusty/congress
- options:
- #source-branch: stable/mitaka
- to:
- - "lxc:nodes=0"
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-# adjust tiny image
-nova flavor-delete m1.tiny
-nova flavor-create m1.tiny 1 512 8 1
-
-# configure security groups
-neutron security-group-rule-create --direction ingress --ethertype IPv4 --protocol icmp --remote-ip-prefix 0.0.0.0/0 default
-neutron security-group-rule-create --direction ingress --ethertype IPv4 --protocol tcp --port-range-min 22 --port-range-max 22 --remote-ip-prefix 0.0.0.0/0 default
-
-# import key pair
-keystone tenant-create --name demo --description "Demo Tenant"
-keystone user-create --name demo --tenant demo --pass demo --email demo@demo.demo
-
-nova keypair-add --pub-key id_rsa.pub ubuntu-keypair
-
-# configure external network
-neutron net-create ext-net --router:external --provider:physical_network external --provider:network_type flat
-neutron subnet-create ext-net --name ext-subnet --allocation-pool start=10.5.8.5,end=10.5.8.254 --disable-dhcp --gateway 10.5.8.1 10.5.8.0/24
-
-# create vm network
-neutron net-create demo-net
-neutron subnet-create --name demo-subnet --gateway 10.20.5.1 demo-net 10.20.5.0/24
-
-neutron router-create demo-router
-
-neutron router-interface-add demo-router demo-subnet
-
-neutron router-gateway-set demo-router ext-net
-
-# create pool of floating ips
-i=0
-while [ $i -ne 10 ]; do
- neutron floatingip-create ext-net
- i=$((i + 1))
-done
-
-#http://docs.openstack.org/juno/install-guide/install/apt/content/launch-instance-neutron.html
-# nova boot --flavor m1.small --image cirros-0.3.3-x86_64 --nic net-id=b65479a4-3638-4595-9245-6e41ccd8bfd8 --security-group default --key-name ubuntu-keypair demo-instance1
-# nova floating-ip-associate demo-instance1 10.5.8.35
-
+++ /dev/null
-#!/bin/sh -e
-
-. ~/admin-openrc
-
-wget -P /tmp/images http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
-wget -P /tmp/images http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
-glance image-create --name "cirros-0.3.3-x86_64" --file /tmp/images/cirros-0.3.3-x86_64-disk.img --disk-format qcow2 --container-format bare --progress
-glance image-create --name "ubuntu-trusty-daily" --file /tmp/images/trusty-server-cloudimg-amd64-disk1.img --disk-format qcow2 --container-format bare --progress
-rm -rf /tmp/images
+++ /dev/null
-#!/bin/sh -ex
-
-configOpenrc()
-{
- cat <<-EOF
- export OS_USERNAME=$1
- export OS_PASSWORD=$2
- export OS_TENANT_NAME=$3
- export OS_AUTH_URL=$4
- export OS_REGION_NAME=$5
- EOF
-}
-
-unitAddress()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null
-}
-
-unitMachine()
-{
- juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null
-}
-
-mkdir -m 0700 -p cloud
-controller_address=$(unitAddress keystone 0)
-configOpenrc admin openstack admin http://$controller_address:5000/v2.0 Canonical > cloud/admin-openrc
-chmod 0600 cloud/admin-openrc
-
-machine=$(unitMachine glance 0)
-juju scp glance.sh cloud/admin-openrc $machine:
-juju run --machine $machine ./glance.sh
-
-machine=$(unitMachine nova-cloud-controller 0)
-juju scp cloud-setup.sh cloud/admin-openrc ~/.ssh/id_rsa.pub $machine:
-juju run --machine $machine ./cloud-setup.sh
-
--- /dev/null
+lab:
+ location: juniper
+ racks:
+ - rack: pod1
+ nodes:
+ - name: rack-R4N3B1-m1
+ architecture: x86_64
+ roles: [compute,storage]
+ nics:
+ - ifname: eth0
+ spaces: [admin]
+ mac: ["0c:c4:7a:53:57:c2"]
+ - ifname: eth1
+ spaces: [public]
+ mac: ["0c:c4:7a:53:57:c3"]
+ power:
+ type: ipmi
+ address: 10.10.7.84
+ user: ADMIN
+ pass: ADMIN
+ - name: rack-R4N4B2-m2
+ architecture: x86_64
+ roles: [compute,control,storage]
+ nics:
+ - ifname: eth0
+ spaces: [admin]
+ mac: ["0c:c4:7a:16:2a:70"]
+ - ifname: eth1
+ spaces: [public]
+ mac: ["0c:c4:7a:16:2a:71"]
+ power:
+ type: ipmi
+ address: 10.10.7.92
+ user: ADMIN
+ pass: ADMIN
+ - name: rack-R4N4B3-m3
+ architecture: x86_64
+ roles: [compute,control,storage]
+ nics:
+ - ifname: eth0
+ spaces: [admin]
+ mac: ["0c:c4:7a:16:2a:0a"]
+ - ifname: eth1
+ spaces: [public]
+ mac: ["0c:c4:7a:16:2a:0b"]
+ power:
+ type: ipmi
+ address: 10.10.7.93
+ user: ADMIN
+ pass: ADMIN
+ - name: rack-R4N4B4-m4
+ architecture: x86_64
+ roles: [compute,control,storage]
+ nics:
+ - ifname: eth0
+ spaces: [admin]
+ mac: ["0c:c4:7a:16:22:9c"]
+ - ifname: eth1
+ spaces: [public]
+ mac: ["0c:c4:7a:16:22:9d"]
+ power:
+ type: ipmi
+ address: 10.10.7.95
+ user: ADMIN
+ pass: ADMIN
+ - name: rack-R4N3B2-m5
+ architecture: x86_64
+ roles: [compute,storage]
+ nics:
+ - ifname: eth0
+ spaces: [admin]
+ mac: ["0c:c4:7a:53:57:16"]
+ - ifname: eth1
+ spaces: [public]
+ mac: ["0c:c4:7a:53:57:17"]
+ power:
+ type: ipmi
+ address: 10.10.7.85
+ user: ADMIN
+ pass: ADMIN
+ floating-ip-range: 10.5.15.6,10.5.15.250,10.5.15.1,10.5.15.0/24
+ ext-port: "eth1"
+ dns: 8.8.8.8
+ osdomainname:
+opnfv:
+ release: c
+ distro: trusty
+ type: nonha
+ openstack: mitaka
+ sdncontroller:
+ - type: nosdn
+ storage:
+ - type: ceph
+ disk: /srv
+ feature: odl_l2
+ spaces:
+ - type: admin
+ bridge: brAdm
+ cidr: 172.16.50.0/24
+ gateway: 172.16.50.1
+ vlan:
+ - type: public
+ bridge: brPublic
+ cidr: 10.10.0.0/28
+ gateway: 10.10.10.1
+ vlan: