Folder for Murano Getting Started created.
* README updated. * Files to start Vagrant box added. * devstack's files added. * Permissions on local.sh changed. * devstack's files updated. Change-Id: I07b2562545e891490bdc6e2d41a804aad8f3ba7f
This commit is contained in:
parent
0d1a1baba6
commit
2dc524f73d
|
@ -0,0 +1,84 @@
|
|||
Murano Getting Started
|
||||
======================
|
||||
|
||||
This folder contains files mentioned in Murano Getting Started guide.
|
||||
|
||||
Murano Vagrant Box
|
||||
==================
|
||||
|
||||
This repo contains a few files that are required to build a Murano Devbox using Vagrant.
|
||||
|
||||
Required step are quite simple:
|
||||
|
||||
Prepare Environment
|
||||
-------------------
|
||||
|
||||
Ubuntu
|
||||
------
|
||||
|
||||
- Install *VirtualBox*:
|
||||
|
||||
::
|
||||
|
||||
apt-get install virtualbox
|
||||
|
||||
|
||||
- Install *VirtualBox Extension Pack*. You can find the appropriate version in [VirtualBox Downloads](https://www.virtualbox.org/wiki/Downloads)
|
||||
|
||||
- Install *Vagrant*:
|
||||
|
||||
::
|
||||
|
||||
apt-get install vagrant --no-install-recommends
|
||||
|
||||
|
||||
- Upgrade *Vagrant*:
|
||||
|
||||
- download latest Vagrant package from [official download site](http://downloads.vagrantup.com/). Example below uses version 1.2.7 for x64 .deb system:
|
||||
|
||||
::
|
||||
|
||||
wget http://files.vagrantup.com/packages/7ec0ee1d00a916f80b109a298bab08e391945243/vagrant_1.2.7_x86_64.deb
|
||||
|
||||
|
||||
- upgrade the existsing installation:
|
||||
|
||||
::
|
||||
|
||||
dpkg --install vagrant_1.2.7_x86_64.deb
|
||||
|
||||
|
||||
Launch The Box
|
||||
--------------
|
||||
|
||||
- This repository is already fetched somewhere on your machine, I suppose. If not - please clone it now.
|
||||
|
||||
- Change directory to cloned repository folder.
|
||||
|
||||
- **IMPORTANT STEP:** Edit the *lab-binding.rc* file.
|
||||
|
||||
- Launch the box:
|
||||
|
||||
::
|
||||
|
||||
./launch-the-box.sh
|
||||
|
||||
|
||||
- The script will do the following:
|
||||
|
||||
- Download the box.
|
||||
- Add the box into vagrant.
|
||||
|
||||
- Vagrant will do the rest:
|
||||
|
||||
- Start the box.
|
||||
- Download and install *Murano* components.
|
||||
|
||||
- When everything is done open the [http://127.0.0.1:8080/horizon](http://127.0.0.1:8080/horizon) link.
|
||||
|
||||
|
||||
|
||||
SEE ALSO
|
||||
========
|
||||
* `Murano <http://murano.mirantis.com>`__
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
||||
VAGRANTFILE_API_VERSION = "2"
|
||||
|
||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||
# All Vagrant configuration is done here. The most common configuration
|
||||
# options are documented and commented below. For a complete reference,
|
||||
# please see the online documentation at vagrantup.com.
|
||||
|
||||
# Every Vagrant virtual environment requires a box to build off of.
|
||||
config.vm.box = "precise64"
|
||||
|
||||
# The url from where the 'config.vm.box' box will be fetched if it
|
||||
# doesn't already exist on the user's system.
|
||||
config.vm.box_url = "https://www.dropbox.com/sh/f8w9xsowbr7rglj/uHiFONsUKO/precise64.box"
|
||||
|
||||
# Create a forwarded port mapping which allows access to a specific port
|
||||
# within the machine from a port on the host machine. In the example below,
|
||||
# accessing "localhost:8080" will access port 80 on the guest machine.
|
||||
# config.vm.network :forwarded_port, guest: 80, host: 8080
|
||||
config.vm.network :forwarded_port, guest: 80, host: 8080
|
||||
|
||||
# Create a private network, which allows host-only access to the machine
|
||||
# using a specific IP.
|
||||
# config.vm.network :private_network, ip: "192.168.33.10"
|
||||
|
||||
# Create a public network, which generally matched to bridged network.
|
||||
# Bridged networks make the machine appear as another physical device on
|
||||
# your network.
|
||||
# config.vm.network :public_network
|
||||
|
||||
# If true, then any SSH connections made will enable agent forwarding.
|
||||
# Default value: false
|
||||
# config.ssh.forward_agent = true
|
||||
|
||||
# Share an additional folder to the guest VM. The first argument is
|
||||
# the path on the host to the actual folder. The second argument is
|
||||
# the path on the guest to mount the folder. And the optional third
|
||||
# argument is a set of non-required options.
|
||||
# config.vm.synced_folder "../data", "/vagrant_data"
|
||||
|
||||
# Provider-specific configuration so you can fine-tune various
|
||||
# backing providers for Vagrant. These expose provider-specific options.
|
||||
# Example for VirtualBox:
|
||||
#
|
||||
# config.vm.provider :virtualbox do |vb|
|
||||
# # Don't boot with headless mode
|
||||
# vb.gui = true
|
||||
#
|
||||
# # Use VBoxManage to customize the VM. For example to change memory:
|
||||
# vb.customize ["modifyvm", :id, "--memory", "1024"]
|
||||
# end
|
||||
#
|
||||
# View the documentation for the provider you're using for more
|
||||
# information on available options.
|
||||
|
||||
# Enable provisioning with Puppet stand alone. Puppet manifests
|
||||
# are contained in a directory path relative to this Vagrantfile.
|
||||
# You will need to create the manifests directory and a manifest in
|
||||
# the file base.pp in the manifests_path directory.
|
||||
#
|
||||
# An example Puppet manifest to provision the message of the day:
|
||||
#
|
||||
# # group { "puppet":
|
||||
# # ensure => "present",
|
||||
# # }
|
||||
# #
|
||||
# # File { owner => 0, group => 0, mode => 0644 }
|
||||
# #
|
||||
# # file { '/etc/motd':
|
||||
# # content => "Welcome to your Vagrant-built virtual machine!
|
||||
# # Managed by Puppet.\n"
|
||||
# # }
|
||||
#
|
||||
# config.vm.provision :puppet do |puppet|
|
||||
# puppet.manifests_path = "manifests"
|
||||
# puppet.manifest_file = "init.pp"
|
||||
# end
|
||||
|
||||
# Enable provisioning with chef solo, specifying a cookbooks path, roles
|
||||
# path, and data_bags path (all relative to this Vagrantfile), and adding
|
||||
# some recipes and/or roles.
|
||||
#
|
||||
# config.vm.provision :chef_solo do |chef|
|
||||
# chef.cookbooks_path = "../my-recipes/cookbooks"
|
||||
# chef.roles_path = "../my-recipes/roles"
|
||||
# chef.data_bags_path = "../my-recipes/data_bags"
|
||||
# chef.add_recipe "mysql"
|
||||
# chef.add_role "web"
|
||||
#
|
||||
# # You may also specify custom JSON attributes:
|
||||
# chef.json = { :mysql_password => "foo" }
|
||||
# end
|
||||
|
||||
# Enable provisioning with chef server, specifying the chef server URL,
|
||||
# and the path to the validation key (relative to this Vagrantfile).
|
||||
#
|
||||
# The Opscode Platform uses HTTPS. Substitute your organization for
|
||||
# ORGNAME in the URL and validation key.
|
||||
#
|
||||
# If you have your own Chef Server, use the appropriate URL, which may be
|
||||
# HTTP instead of HTTPS depending on your configuration. Also change the
|
||||
# validation key to validation.pem.
|
||||
#
|
||||
# config.vm.provision :chef_client do |chef|
|
||||
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
|
||||
# chef.validation_key_path = "ORGNAME-validator.pem"
|
||||
# end
|
||||
#
|
||||
# If you're using the Opscode platform, your validator client is
|
||||
# ORGNAME-validator, replacing ORGNAME with your organization name.
|
||||
#
|
||||
# If you have your own Chef Server, the default validation client name is
|
||||
# chef-validator, unless you changed the configuration.
|
||||
#
|
||||
# chef.validation_client_name = "ORGNAME-validator"
|
||||
|
||||
config.vm.provision :shell, :path => "provision.sh"
|
||||
end
|
|
@ -0,0 +1,69 @@
|
|||
#
|
||||
# Insert your values instead of '***' marks anywhere in the config below.
|
||||
#
|
||||
|
||||
|
||||
# Lab Settings
|
||||
#-------------
|
||||
# Address of the host which provides Keystone service.
|
||||
#
|
||||
# LAB_HOST='172.18.124.201'
|
||||
LAB_HOST='***.***.***.***'
|
||||
|
||||
# An OpenStack Admin user.
|
||||
#
|
||||
# ADMIN_USER='admin'
|
||||
ADMIN_USER='admin'
|
||||
|
||||
# A password for OpenStack admin user.
|
||||
#
|
||||
# ADMIN_PASSWORD=''
|
||||
ADMIN_PASSWORD='***'
|
||||
#-------------
|
||||
|
||||
|
||||
# RabbitMQ Settings
|
||||
#------------------
|
||||
# A user which has permissions to connect to RabbitMQ vHost specified below.
|
||||
# NOTE: For now, this user MUST have an 'Administrator' tag
|
||||
#
|
||||
# RABBITMQ_USER='muranouser'
|
||||
RABBITMQ_USER='muranouser'
|
||||
|
||||
# A password for RabbitMQ user
|
||||
#
|
||||
# RABBITMQ_PASSWORD='murano'
|
||||
RABBITMQ_PASSWORD='***'
|
||||
|
||||
# A vHost for current devbox.
|
||||
# NOTE: It's a good practice to create new vHost dedicated to only one devbox.
|
||||
# This prevents name collisions and message stealing.
|
||||
#
|
||||
# RABBITMQ_VHOST='muranovhost'
|
||||
RABBITMQ_VHOST='***'
|
||||
#------------------
|
||||
|
||||
|
||||
# Murano Components Branch
|
||||
#-------------------------
|
||||
# Default branch name for all Murano components
|
||||
#
|
||||
# BRANCH_NAME='master'
|
||||
BRANCH_NAME='release-0.2'
|
||||
|
||||
# NOTE: Any Murano component can be checked out from its own branch.
|
||||
# This is useful for testing purposes.
|
||||
# Per-components branch variables are shown below.
|
||||
# Their names are self-explanatory.
|
||||
#
|
||||
#BRANCH_MURANO_API='master'
|
||||
#BRANCH_MURANO_CONDUCTOR='master'
|
||||
#BRANCH_MURANO_DASHBOARD='master'
|
||||
|
||||
#-------------------------
|
||||
|
||||
|
||||
# DO NOT MODIFY ANYTHING BELOW THIS LINE
|
||||
#=======================================
|
||||
|
||||
AUTH_URL="http://$LAB_HOST:5000/v2.0"
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
box_name='precise64'
|
||||
box_url='https://www.dropbox.com/sh/f8w9xsowbr7rglj/uHiFONsUKO/precise64.box'
|
||||
|
||||
if [ -f "$box_name.box" ] ; then
|
||||
echo "*** Box file found in current directory. Skipping download."
|
||||
else
|
||||
echo "*** Downloading box '$box_name' from '$box_url' ..."
|
||||
wget $box_url -O $box_name.box
|
||||
fi
|
||||
|
||||
echo "*** Adding the box to vagrant ..."
|
||||
vagrant box add $box_name $box_name.box
|
||||
|
||||
echo "*** Running vagrant ..."
|
||||
vagrant up
|
||||
# VAGRANT_LOG=debug is a workaround for the bug
|
||||
# https://github.com/mitchellh/vagrant/issues/516
|
||||
|
||||
echo "*** Now you can open the link 'http://127.0.0.1:8080' in your browser."
|
|
@ -0,0 +1,146 @@
|
|||
#!/bin/bash
|
||||
# Copyright (c) 2013 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
# Ubuntu script.
|
||||
|
||||
# Keep track of the devstack directory
|
||||
TOP_DIR=$(cd $(dirname "$0") && pwd)
|
||||
|
||||
# Import common functions
|
||||
source $TOP_DIR/functions
|
||||
|
||||
# Use openrc + stackrc + localrc for settings
|
||||
source $TOP_DIR/stackrc
|
||||
|
||||
# Destination path for installation ``DEST``
|
||||
DEST=${DEST:-/opt/stack}
|
||||
source $TOP_DIR/localrc
|
||||
|
||||
# Get OpenStack admin auth
|
||||
source $TOP_DIR/openrc admin admin
|
||||
|
||||
# set rabbitMQ murano credentials
|
||||
RABBIT_USER=${RABBIT_USER:-muranouser}
|
||||
RABBIT_PASSWD=${RABBIT_PASSWD:-murano}
|
||||
RABBIT_VHOST=${RABBIT_VHOST:-muranovhost}
|
||||
RABBIT_WWW_ENABLED=${RABBIT_WWW_ENABLED:-True}
|
||||
|
||||
|
||||
# Functions
|
||||
|
||||
# Enable web management for rabbitMQ
|
||||
function enable_rabbit_www {
|
||||
# Check that RABBIT_SBIN value right and exists !!!
|
||||
RABBIT_SBIN=/usr/lib/rabbitmq/lib/rabbitmq_server-2.7.1/sbin
|
||||
if [[ -z "$(sudo $RABBIT_SBIN/rabbitmq-plugins list -e | grep rabbitmq_management)" ]] ; then
|
||||
echo " * Enabling RabbitMQ management plugin"
|
||||
sudo $RABBIT_SBIN/rabbitmq-plugins enable rabbitmq_management
|
||||
echo " * Restarting RabbitMQ ..."
|
||||
restart_service rabbitmq-server
|
||||
else
|
||||
echo " * RabbitMQ management plugin already enabled."
|
||||
fi
|
||||
}
|
||||
|
||||
# Add murano credentials to rabbitMQ
|
||||
function configure_rabbitmq {
|
||||
echo " * Setting up RabbitMQ..."
|
||||
# wait until service brings up and start responding
|
||||
MAX_RETR=6
|
||||
SLEEP=10
|
||||
FAIL=1
|
||||
echo " * Waiting for rabbitMQ service ..."
|
||||
for _seq in $(seq $MAX_RETR)
|
||||
do
|
||||
sudo rabbitmqctl status
|
||||
if [ $? -ne 0 ]; then
|
||||
sleep $SLEEP
|
||||
else
|
||||
if [[ "$RABBIT_WWW_ENABLED" = "True" ]]; then
|
||||
enable_rabbit_www
|
||||
fi
|
||||
sleep 5
|
||||
if [[ -z "$(sudo rabbitmqctl list_users | grep murano)" ]]; then
|
||||
echo " * Adding user account settings for \"$RABBIT_USER\" ..."
|
||||
sudo rabbitmqctl add_user $RABBIT_USER $RABBIT_PASSWD
|
||||
sudo rabbitmqctl set_user_tags $RABBIT_USER administrator
|
||||
sudo rabbitmqctl add_vhost $RABBIT_VHOST
|
||||
sudo rabbitmqctl set_permissions -p $RABBIT_VHOST $RABBIT_USER ".*" ".*" ".*"
|
||||
else
|
||||
echo " * User \"$RABBIT_USER\" already exists."
|
||||
fi
|
||||
FAIL=0
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ $FAIL -ne 0 ]; then
|
||||
echo << "EOF"
|
||||
Something goes wrong with rabbitMQ, try run next lines manualy:
|
||||
sudo rabbitmqctl add_user $RABBIT_USER $RABBIT_PASSWD
|
||||
sudo rabbitmqctl set_user_tags $RABBIT_USER administrator
|
||||
sudo rabbitmqctl add_vhost $RABBIT_VHOST
|
||||
sudo rabbitmqctl set_permissions -p $RABBIT_VHOST $RABBIT_USER ".*" ".*" ".*"
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Replace nova flavours
|
||||
function replace_nova_flavors {
|
||||
echo " * Removing nova flavors ..."
|
||||
for id in $(nova flavor-list | awk '$2 ~ /[[:digit:]]/ {print $2}') ; do
|
||||
echo " * Removing flavor '$id'"
|
||||
nova flavor-delete $id
|
||||
done
|
||||
echo " * Creating new flavors ..."
|
||||
nova flavor-create m1.small auto 768 40 1
|
||||
nova flavor-create m1.medium auto 1024 40 1
|
||||
nova flavor-create m1.large auto 1280 40 2
|
||||
}
|
||||
|
||||
# Create security group rules
|
||||
function add_nova_secgroups {
|
||||
echo " * Creating security group rules ..."
|
||||
sleep 2
|
||||
nova secgroup-add-rule default tcp 1 65535 0.0.0.0/0
|
||||
sleep 2
|
||||
nova secgroup-add-rule default udp 1 65535 0.0.0.0/0
|
||||
sleep 2
|
||||
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
|
||||
sleep 2
|
||||
}
|
||||
|
||||
# Add Murano key
|
||||
function add_nova_keys {
|
||||
if [[ -z "$(nova keypair-list | grep murano_)" ]] ; then
|
||||
echo " * Creating keypair 'murano_*' ..."
|
||||
sleep 5
|
||||
nova keypair-add murano_key > ~/.ssh/murano_key.pub
|
||||
sleep 2
|
||||
nova keypair-add murano-lb-key > ~/.ssh/murano-lb-key.pub
|
||||
else
|
||||
echo " * Keypair 'murano_*' already exists"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main workflow
|
||||
replace_nova_flavors
|
||||
add_nova_secgroups
|
||||
add_nova_keys
|
||||
|
||||
configure_rabbitmq
|
||||
|
||||
# Restart Apache2
|
||||
restart_service apache2
|
|
@ -0,0 +1,76 @@
|
|||
#
|
||||
# Devstack's config file for Murano Getting Started
|
||||
# Replace strings '***' with your values.
|
||||
#
|
||||
|
||||
# Default password for this config
|
||||
#
|
||||
default_password='***'
|
||||
|
||||
# Other passwords
|
||||
#
|
||||
ADMIN_PASSWORD=$default_password
|
||||
MYSQL_PASSWORD=$default_password
|
||||
RABBIT_PASSWORD=$default_password
|
||||
SERVICE_PASSWORD=$default_password
|
||||
|
||||
SERVICE_TOKEN=tokentoken
|
||||
|
||||
|
||||
# IP address of your devstack box
|
||||
#
|
||||
HOST_IP='***.***.***.***'
|
||||
|
||||
|
||||
# Name of the interface which will be shared with Fixed Network
|
||||
#
|
||||
#FLAT_INTERFACE='***'
|
||||
|
||||
|
||||
# IP range for Fixed Network
|
||||
# Addresses which will be assigned to instances at startup are taken from that range
|
||||
#
|
||||
FIXED_RANGE='10.0.0.0/24'
|
||||
|
||||
|
||||
# IP range fo Floating Network
|
||||
#
|
||||
FLOATING_RANGE='***.***.***.***/***'
|
||||
|
||||
|
||||
# Enable MySQL backend explicitely
|
||||
#
|
||||
ENABLED_SERVICES+=,mysql
|
||||
|
||||
|
||||
# Enable Heat
|
||||
#
|
||||
ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
|
||||
|
||||
|
||||
# Add Fedora 17 image for load balancer
|
||||
#
|
||||
IMAGE_URLS+=",http://fedorapeople.org/groups/heat/prebuilt-jeos-images/F17-x86_64-cfntools.qcow2"
|
||||
|
||||
|
||||
# Logger settings
|
||||
#
|
||||
SCREEN_LOGDIR=/opt/stack/log/
|
||||
LOGFILE=$SCREEN_LOGDIR/stack.sh.log
|
||||
|
||||
|
||||
# Disable check of API requests rate
|
||||
#
|
||||
API_RATE_LIMIT=False
|
||||
|
||||
|
||||
# Set NoopFirewallDriver to disable anti-spoofing rules
|
||||
#
|
||||
LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver
|
||||
|
||||
|
||||
# Extra options for nova.conf
|
||||
#
|
||||
EXTRA_OPTS=(force_config_drive=true libvirt_images_type=qcow2 force_raw_images=false)
|
||||
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash -x
|
||||
|
||||
function log {
|
||||
echo "$@" | tee --append ~/provision.log
|
||||
}
|
||||
|
||||
apt-get install -y git
|
||||
|
||||
if [ ! -f '/vagrant/lab-binding.rc' ] ; then
|
||||
echo "File '/vagrant/lab-binding.rc' not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir /etc/murano-deployment
|
||||
|
||||
if [ ! -f '/etc/murano-deployment/lab-binding.rc' ] ; then
|
||||
cp /vagrant/lab-binding.rc /etc/murano-deployment
|
||||
fi
|
||||
|
||||
mkdir /opt/git
|
||||
|
||||
cd /opt/git
|
||||
|
||||
log "Cloning the 'murano-deployment' repository ..."
|
||||
git clone https://github.com/stackforge/murano-deployment.git >> ~/provision.log
|
||||
|
||||
cd murano-deployment
|
||||
git checkout -b release-0.2 origin/release-0.2
|
||||
|
||||
log "Installing pip ..."
|
||||
apt-get install python-setuptools >> ~/provision.log
|
||||
easy_install pip >> ~/provision.log
|
||||
|
||||
cd devbox-scripts
|
||||
log "Installing murano prerequisites ..."
|
||||
./murano-git-install.sh prerequisites >> ~/provision.log
|
||||
|
||||
log "Installing murano components ..."
|
||||
./murano-git-install.sh install >> ~/provision.log
|
||||
|
Loading…
Reference in New Issue