Merge "Remove heat dev environment"
This commit is contained in:
commit
7bf87dddec
@ -1,41 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script expects the following to be installed:
|
||||
# curl, libguestfs-tools-c
|
||||
|
||||
IMAGE_URL=http://archive.fedoraproject.org/pub/fedora/linux/releases/21/Cloud/Images/x86_64
|
||||
IMAGE=Fedora-Cloud-Base-20141203-21.x86_64.qcow2
|
||||
TARGET_DIR=/var/lib/libvirt/images
|
||||
TARGET=fedora-21-x86_64
|
||||
export LIBGUESTFS_BACKEND=direct
|
||||
|
||||
if ! [ -f "$IMAGE" ]; then
|
||||
echo "Downloading $IMAGE"
|
||||
curl -L -O $IMAGE_URL/$IMAGE
|
||||
fi
|
||||
|
||||
echo "Copying $IMAGE to $TARGET"
|
||||
cp "$IMAGE" $TARGET_DIR/$TARGET
|
||||
|
||||
|
||||
TMPFILE=$(mktemp /tmp/kolla-ifcfg-eth1.XXXXXXXXXX)
|
||||
cat > $TMPFILE <<EOF
|
||||
DEVICE=eth1
|
||||
BOOTPROTO=none
|
||||
ONBOOT=yes
|
||||
DEFROUTE=no
|
||||
EOF
|
||||
|
||||
|
||||
virt-customize \
|
||||
--add $TARGET_DIR/$TARGET \
|
||||
--upload $TMPFILE:/etc/sysconfig/network-scripts/ifcfg-eth1
|
||||
|
||||
# SELinux relabeling requires virt-customize to have networking disabled
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1122907
|
||||
virt-customize --add $TARGET_DIR/$TARGET --selinux-relabel --no-network
|
||||
|
||||
rm -f $TMPFILE
|
||||
|
||||
echo "Finished building image:"
|
||||
ls -l $TARGET_DIR/$TARGET
|
@ -1,120 +0,0 @@
|
||||
heat_template_version: 2013-05-23
|
||||
|
||||
description: >
|
||||
This template will boot a Kolla cluster with one or more
|
||||
nodes (as specified by the number_of_nodes parameter,
|
||||
which defaults to "1").
|
||||
|
||||
parameters:
|
||||
#
|
||||
# REQUIRED PARAMETERS
|
||||
#
|
||||
ssh_key_name:
|
||||
type: string
|
||||
description: name of ssh key to be provisioned on the Nova instances
|
||||
|
||||
external_network_id:
|
||||
type: string
|
||||
description: uuid of a network to use for accessing Kolla hosts by floating ip address
|
||||
|
||||
container_external_network_id:
|
||||
type: string
|
||||
description: uuid of a network to use for container floating ip addresses
|
||||
|
||||
container_external_subnet_id:
|
||||
type: string
|
||||
description: uuid of a subnet to use for container floating ip addresses
|
||||
|
||||
#
|
||||
# OPTIONAL PARAMETERS
|
||||
#
|
||||
server_image:
|
||||
type: string
|
||||
default: fedora-21-x86_64
|
||||
description: glance image used to boot the Nova instance
|
||||
|
||||
server_flavor:
|
||||
type: string
|
||||
default: m1.small
|
||||
description: flavor to use when booting the Nova instance
|
||||
|
||||
dns_nameserver:
|
||||
type: string
|
||||
description: address of a dns nameserver reachable in your environment
|
||||
default: 8.8.8.8
|
||||
|
||||
number_of_nodes:
|
||||
type: string
|
||||
description: how many kolla nodes to spawn
|
||||
default: 1
|
||||
|
||||
fixed_network_cidr:
|
||||
type: string
|
||||
description: network range for fixed ip network
|
||||
default: 10.0.0.0/24
|
||||
|
||||
resources:
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# network resources. allocate a network and router for our server.
|
||||
# it would also be possible to take advantage of existing network
|
||||
# resources (and have the deployer provide network and subnet ids,
|
||||
# etc, as parameters), but I wanted to minmize the amount of
|
||||
# configuration necessary to make this go.
|
||||
fixed_network:
|
||||
type: "OS::Neutron::Net"
|
||||
|
||||
# This is the subnet on which we will deploy our server eth0.
|
||||
fixed_subnet:
|
||||
type: "OS::Neutron::Subnet"
|
||||
properties:
|
||||
cidr: {get_param: fixed_network_cidr}
|
||||
network_id:
|
||||
get_resource: fixed_network
|
||||
dns_nameservers:
|
||||
- get_param: dns_nameserver
|
||||
|
||||
# create a router attached to the external network provided as a
|
||||
# parameter to this stack.
|
||||
extrouter:
|
||||
type: "OS::Neutron::Router"
|
||||
properties:
|
||||
external_gateway_info:
|
||||
network:
|
||||
get_param: external_network_id
|
||||
|
||||
# attached fixed_subnet to our extrouter router.
|
||||
extrouter_inside:
|
||||
type: "OS::Neutron::RouterInterface"
|
||||
properties:
|
||||
router_id:
|
||||
get_resource: extrouter
|
||||
subnet_id:
|
||||
get_resource:
|
||||
fixed_subnet
|
||||
|
||||
kolla_nodes:
|
||||
type: "OS::Heat::ResourceGroup"
|
||||
depends_on:
|
||||
- extrouter_inside
|
||||
properties:
|
||||
count: {get_param: number_of_nodes}
|
||||
resource_def:
|
||||
type: kollanode.yaml
|
||||
properties:
|
||||
ssh_key_name: {get_param: ssh_key_name}
|
||||
server_image: {get_param: server_image}
|
||||
server_flavor: {get_param: server_flavor}
|
||||
fixed_network_id: {get_resource: fixed_network}
|
||||
fixed_subnet_id: {get_resource: fixed_subnet}
|
||||
external_network_id: {get_param: external_network_id}
|
||||
container_external_network_id: {get_param: container_external_network_id}
|
||||
container_external_subnet_id: {get_param: container_external_subnet_id}
|
||||
outputs:
|
||||
|
||||
kolla_node_internal_ip:
|
||||
value: {get_attr: [kolla_nodes, kolla_node_ip_eth0]}
|
||||
|
||||
kolla_node_external_ip:
|
||||
value: {get_attr: [kolla_nodes, kolla_node_external_ip]}
|
@ -1,251 +0,0 @@
|
||||
heat_template_version: 2013-05-23
|
||||
|
||||
description: >
|
||||
This is a nested stack that defines a single Kolla node,
|
||||
based on a Fedora 21 cloud image. This stack is included by
|
||||
a ResourceGroup resource in the parent template (kollacluster.yaml).
|
||||
|
||||
parameters:
|
||||
|
||||
server_image:
|
||||
type: string
|
||||
default: fedora-21-x86_64
|
||||
description: glance image used to boot the server
|
||||
|
||||
server_flavor:
|
||||
type: string
|
||||
default: m1.small
|
||||
description: flavor to use when booting the server
|
||||
|
||||
ssh_key_name:
|
||||
type: string
|
||||
description: name of ssh key to be provisioned on our server
|
||||
|
||||
external_network_id:
|
||||
type: string
|
||||
description: uuid of a network to use for kolla host floating ip addresses
|
||||
|
||||
container_external_network_id:
|
||||
type: string
|
||||
description: uuid of a network to use for container floating ip addresses
|
||||
|
||||
container_external_subnet_id:
|
||||
type: string
|
||||
description: uuid of a subnet to use for container floating ip addresses
|
||||
|
||||
# The following are all generated in the parent template.
|
||||
fixed_network_id:
|
||||
type: string
|
||||
description: Network from which to allocate fixed addresses.
|
||||
fixed_subnet_id:
|
||||
type: string
|
||||
description: Subnet from which to allocate fixed addresses.
|
||||
|
||||
resources:
|
||||
|
||||
node_wait_handle:
|
||||
type: "AWS::CloudFormation::WaitConditionHandle"
|
||||
|
||||
node_wait_condition:
|
||||
type: "AWS::CloudFormation::WaitCondition"
|
||||
depends_on:
|
||||
- kolla_node
|
||||
properties:
|
||||
Handle:
|
||||
get_resource: node_wait_handle
|
||||
Timeout: "6000"
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Security groups. We need to permit network traffic of various
|
||||
# sorts.
|
||||
#
|
||||
secgroup_base:
|
||||
type: "OS::Neutron::SecurityGroup"
|
||||
properties:
|
||||
rules:
|
||||
- protocol: icmp
|
||||
- protocol: tcp
|
||||
port_range_min: 22
|
||||
port_range_max: 22
|
||||
|
||||
# Use by eth1 to permit all traffic to instances.
|
||||
# Let the Neutron container apply security to this traffic.
|
||||
secgroup_all_open:
|
||||
type: "OS::Neutron::SecurityGroup"
|
||||
properties:
|
||||
rules:
|
||||
- protocol: icmp
|
||||
- protocol: tcp
|
||||
- protocol: udp
|
||||
|
||||
secgroup_kolla:
|
||||
type: "OS::Neutron::SecurityGroup"
|
||||
properties:
|
||||
rules:
|
||||
- protocol: tcp
|
||||
port_range_min: 5672
|
||||
port_range_max: 5672
|
||||
- protocol: tcp
|
||||
port_range_min: 3306
|
||||
port_range_max: 3306
|
||||
- protocol: tcp
|
||||
port_range_min: 8773
|
||||
port_range_max: 8776
|
||||
- protocol: tcp
|
||||
port_range_min: 6080
|
||||
port_range_max: 6080
|
||||
- protocol: tcp
|
||||
port_range_min: 6081
|
||||
port_range_max: 6081
|
||||
- protocol: tcp
|
||||
port_range_min: 35357
|
||||
port_range_max: 35357
|
||||
- protocol: tcp
|
||||
port_range_min: 5000
|
||||
port_range_max: 5000
|
||||
- protocol: tcp
|
||||
port_range_min: 9191
|
||||
port_range_max: 9191
|
||||
- protocol: tcp
|
||||
port_range_min: 9292
|
||||
port_range_max: 9292
|
||||
- protocol: tcp
|
||||
port_range_min: 9696
|
||||
port_range_max: 9696
|
||||
- protocol: tcp
|
||||
port_range_min: 80
|
||||
port_range_max: 80
|
||||
- protocol: tcp
|
||||
port_range_min: 443
|
||||
port_range_max: 443
|
||||
- protocol: tcp
|
||||
port_range_min: 8000
|
||||
port_range_max: 8000
|
||||
- protocol: tcp
|
||||
port_range_min: 8004
|
||||
port_range_max: 8004
|
||||
- protocol: tcp
|
||||
port_range_min: 8003
|
||||
port_range_max: 8003
|
||||
- protocol: tcp
|
||||
port_range_min: 8080
|
||||
port_range_max: 8080
|
||||
- protocol: tcp
|
||||
port_range_min: 8777
|
||||
port_range_max: 8777
|
||||
|
||||
kolla_node:
|
||||
type: "OS::Nova::Server"
|
||||
properties:
|
||||
image:
|
||||
get_param: server_image
|
||||
flavor:
|
||||
get_param: server_flavor
|
||||
key_name:
|
||||
get_param: ssh_key_name
|
||||
user_data_format: RAW
|
||||
user_data:
|
||||
str_replace:
|
||||
template: |
|
||||
#!/bin/bash
|
||||
|
||||
# Latest packages
|
||||
yum clean all
|
||||
yum -y update
|
||||
|
||||
# Remove network manager
|
||||
yum -y remove NetworkManager
|
||||
chkconfig network on
|
||||
|
||||
# Install base packages
|
||||
yum -y install wget ntp git tcpdump python-pip python-devel
|
||||
|
||||
# Install Docker from binaries
|
||||
curl -L https://get.docker.com/builds/Linux/x86_64/docker-1.7.0 -o /usr/local/sbin/docker
|
||||
chmod +x /usr/local/sbin/docker && cd /usr/local/sbin/
|
||||
./docker -d &
|
||||
|
||||
# Install Compose with pid=host support
|
||||
cd /root
|
||||
git clone http://github.com/docker/compose.git
|
||||
cd compose
|
||||
pip install -e .
|
||||
|
||||
# Pull the Kolla repo
|
||||
cd /root
|
||||
git clone https://git.openstack.org/openstack/kolla
|
||||
|
||||
# Add vxlan kernel module for Neutron
|
||||
modprobe vxlan
|
||||
|
||||
# Start NTP
|
||||
systemctl enable ntpd
|
||||
systemctl start ntpd
|
||||
|
||||
# Install mariadb-client
|
||||
yum -y install mariadb
|
||||
|
||||
# Install OpenStack Clients
|
||||
yum -y install python-keystoneclient python-glanceclient \
|
||||
python-novaclient python-cinderclient \
|
||||
python-neutronclient python-heatclient
|
||||
|
||||
# Disable firewalld per OpenStack documentation
|
||||
service firewalld stop
|
||||
chkconfig firewalld off
|
||||
|
||||
# Install Magnum Client
|
||||
git clone https://git.openstack.org/openstack/python-magnumclient
|
||||
cd python-magnumclient
|
||||
sudo pip install -e .
|
||||
|
||||
# Send the CFN signal
|
||||
cfn-signal -e0 --data 'OK' -r 'Setup complete' '$WAIT_HANDLE'
|
||||
params:
|
||||
"$WAIT_HANDLE":
|
||||
get_resource: node_wait_handle
|
||||
networks:
|
||||
- port:
|
||||
get_resource: kolla_node_eth0
|
||||
- port:
|
||||
get_resource: kolla_node_eth1
|
||||
|
||||
kolla_node_eth0:
|
||||
type: "OS::Neutron::Port"
|
||||
properties:
|
||||
network_id:
|
||||
get_param: fixed_network_id
|
||||
security_groups:
|
||||
- get_resource: secgroup_base
|
||||
- get_resource: secgroup_kolla
|
||||
fixed_ips:
|
||||
- subnet_id:
|
||||
get_param: fixed_subnet_id
|
||||
|
||||
kolla_node_eth1:
|
||||
type: "OS::Neutron::Port"
|
||||
properties:
|
||||
network_id:
|
||||
get_param: container_external_network_id
|
||||
security_groups:
|
||||
- get_resource: secgroup_all_open
|
||||
fixed_ips:
|
||||
- subnet_id:
|
||||
get_param: container_external_subnet_id
|
||||
|
||||
kolla_node_floating:
|
||||
type: "OS::Neutron::FloatingIP"
|
||||
properties:
|
||||
floating_network_id:
|
||||
get_param: external_network_id
|
||||
port_id:
|
||||
get_resource: kolla_node_eth0
|
||||
|
||||
outputs:
|
||||
|
||||
kolla_node_ip_eth0:
|
||||
value: {get_attr: [kolla_node_eth0, fixed_ips, 0, ip_address]}
|
||||
|
||||
kolla_node_external_ip:
|
||||
value: {get_attr: [kolla_node_floating, floating_ip_address]}
|
@ -1,5 +0,0 @@
|
||||
parameters:
|
||||
ssh_key_name: <YOUR_NOVA_KEYPAIR>
|
||||
external_network_id: <NEUTRON_EXTERNAL_NET_ID>
|
||||
container_external_network_id: <NEUTRON_EXTERNAL_NET_ID2>
|
||||
container_external_subnet_id: <NEUTRON_EXTERNAL_SUBNETNET_ID2>
|
@ -1,198 +0,0 @@
|
||||
.. _heat-dev-env:
|
||||
|
||||
=================================
|
||||
Development Environment with Heat
|
||||
=================================
|
||||
|
||||
These `Heat <https://wiki.openstack.org/wiki/Heat>`__ templates will
|
||||
deploy an *N*-node `Kolla <https://wiki.openstack.org/Kolla>`__ cluster,
|
||||
where *N* is the value of the ``number_of_nodes`` parameter you specify
|
||||
when creating the stack.
|
||||
|
||||
Kolla has recently undergone a considerable design change. The details
|
||||
of the design change is addressed in this
|
||||
`spec <https://review.openstack.org/#/c/153798/>`__. As part of the
|
||||
design change, containers share pid and networking namespaces with the
|
||||
Docker host. Therefore, containers no longer connect to a docker0 bridge
|
||||
and have separate networking from the host. As a result, Kolla
|
||||
networking has a configuration similar to:
|
||||
|
||||
.. image:: kollanet.png
|
||||
:alt: Kolla networking
|
||||
|
||||
Sharing pid and networking namespaces is detailed in the `super
|
||||
privileged
|
||||
containers <http://sdake.io/2015/01/28/an-atomic-upgrade-process-for-openstack-compute-nodes/>`__
|
||||
concept.
|
||||
|
||||
The Kolla cluster is based on Fedora 21, requires the minimum Docker
|
||||
version of 1.7.0
|
||||
`binary <https://docs.docker.com/installation/binaries/>`__.
|
||||
|
||||
These templates are designed to work with the Icehouse or Juno versions
|
||||
of Heat. If using Icehouse Heat, this
|
||||
`patch <https://review.openstack.org/#/c/121139/>`__ is required to
|
||||
correct a bug with template validation when using the "Fn::Join"
|
||||
function).
|
||||
|
||||
Create the Glance Image
|
||||
=======================
|
||||
|
||||
After cloning the project, run the get-image.sh script from the
|
||||
project's devenv directory:
|
||||
|
||||
::
|
||||
|
||||
$ ./get-image.sh
|
||||
|
||||
The script will create a Fedora 21 image with the required
|
||||
modifications.
|
||||
|
||||
Add the image to your Glance image store:
|
||||
|
||||
::
|
||||
|
||||
$ glance image-create --name "fedora-21-x86_64" \
|
||||
--file /var/lib/libvirt/images/fedora-21-x86_64 \
|
||||
--disk-format qcow2 --container-format bare \
|
||||
--is-public True --progress
|
||||
|
||||
Create the Stack
|
||||
================
|
||||
|
||||
Copy local.yaml.example to local.yaml and edit the contents to match
|
||||
your deployment environment. Here is an example of a customized
|
||||
local.yaml:
|
||||
|
||||
::
|
||||
|
||||
parameters:
|
||||
ssh_key_name: admin-key
|
||||
external_network_id: 028d70dd-67b8-4901-8bdd-0c62b06cce2d
|
||||
container_external_network_id: 028d70dd-67b8-4901-8bdd-0c62b06cce2d
|
||||
container_external_subnet_id: 575770dd-6828-1101-34dd-0c62b06fjf8s
|
||||
dns_nameserver: 192.168.200.1
|
||||
|
||||
The external\_network\_id is used by Heat to automatically assign
|
||||
floating IP's to your Kolla nodes. You can then access your Kolla nodes
|
||||
directly using the floating IP. The network ID is derived from the
|
||||
``neutron net-list`` command.
|
||||
|
||||
The container\_external\_network\_id is used by the nova-network
|
||||
container within the Kolla node as the FLAT\_INTERFACE. The
|
||||
FLAT\_INTERFACE tells Nova what device to use (i.e. eth1) to pass
|
||||
network traffic between Nova instances across Kolla nodes. This network
|
||||
should be separate from the external\_network\_id above and is derived
|
||||
from the 'neutron net-list' command.
|
||||
|
||||
The container\_external\_subnet\_id: is the subnet equivalent to
|
||||
container\_external\_network\_id
|
||||
|
||||
Review the parameters section of kollacluster.yaml for a full list of
|
||||
configuration options.
|
||||
|
||||
.. note:: You must provide values for:
|
||||
|
||||
- ``ssh_key_name``
|
||||
- ``external_network_id``
|
||||
- ``container_external_network_id``
|
||||
- ``container_external_subnet_id``
|
||||
|
||||
And then create the stack, referencing that environment file:
|
||||
|
||||
::
|
||||
|
||||
$ openstack stack create -f kollacluster.yaml -e local.yaml kolla-cluster
|
||||
|
||||
Access the Kolla Nodes
|
||||
======================
|
||||
|
||||
You can get the ip address of the Kolla nodes using the
|
||||
``openstack stack output show`` command:
|
||||
|
||||
::
|
||||
|
||||
$ openstack stack output show kolla-cluster kolla_node_external_ip
|
||||
"192.168.200.86"
|
||||
|
||||
You can ssh into that server as the ``fedora`` user:
|
||||
|
||||
::
|
||||
|
||||
$ ssh fedora@192.168.200.86
|
||||
|
||||
Once logged into your Kolla node, setup your environment. The basic
|
||||
starting environment will be created using ``docker-compose``. This
|
||||
environment will start up the openstack services listed in the compose
|
||||
directory.
|
||||
|
||||
To start, setup your environment variables.
|
||||
|
||||
::
|
||||
|
||||
$ cd kolla
|
||||
$ ./tools/genenv
|
||||
|
||||
The ``genenv`` script will create a compose/openstack.env file and an
|
||||
openrc file in your current directory. The openstack.env file contains
|
||||
all of your initialized environment variables, which you can edit for a
|
||||
different setup.
|
||||
|
||||
Next, run the start script.
|
||||
|
||||
::
|
||||
|
||||
$ ./tools/kolla-compose start
|
||||
|
||||
The ``start`` script is responsible for starting the containers using
|
||||
``docker-compose -f <osp-service-container> up -d``.
|
||||
|
||||
If you want to start a container set by hand use this template
|
||||
|
||||
::
|
||||
|
||||
$ docker-compose -f glance-api-registry.yml up -d
|
||||
|
||||
Debugging
|
||||
=========
|
||||
|
||||
All Docker commands should be run from the directory of the Docker
|
||||
binary, by default this is ``/``.
|
||||
|
||||
A few commands for debugging the system.
|
||||
|
||||
::
|
||||
|
||||
$ sudo ./docker images
|
||||
|
||||
Lists all images that have been pulled from the upstream kolla
|
||||
repository thus far. This can be run on the node during the ``./start``
|
||||
operation to check on the download progress.
|
||||
|
||||
::
|
||||
|
||||
$ sudo ./docker ps -a
|
||||
|
||||
This will show all processes that docker has started. Removing the
|
||||
``-a`` will show only active processes. This can be run on the node
|
||||
during the ``./start`` operation to check that the containers are
|
||||
orchestrated.
|
||||
|
||||
::
|
||||
|
||||
$ sudo ./docker logs <containerid>
|
||||
|
||||
::
|
||||
|
||||
$ curl http://<NODE_IP>:3306
|
||||
|
||||
You can use curl to test connectivity to a container. This example
|
||||
demonstrates the Mariadb service is running on the node. Output should
|
||||
appear as follows
|
||||
|
||||
::
|
||||
|
||||
$ curl http://10.0.0.4:3306
|
||||
Trying 10.0.0.4...
|
||||
Connected to 10.0.0.4.
|
||||
Escape character is '^]'.
|
@ -65,6 +65,5 @@ Developer Docs
|
||||
:maxdepth: 1
|
||||
|
||||
CONTRIBUTING
|
||||
heat-dev-env
|
||||
vagrant-dev-env
|
||||
running-tests
|
||||
|
@ -360,23 +360,10 @@ Two virtualized development environment options are available for Kolla. These
|
||||
options permit the development of Kolla without disrupting the host operating
|
||||
system.
|
||||
|
||||
If developing Kolla on an OpenStack cloud environment that supports Heat,
|
||||
follow the :doc:`heat-dev-env`.
|
||||
|
||||
If developing Kolla on a system that provides VirtualBox or Libvirt in addition
|
||||
to Vagrant, use the Vagrant virtual environment documented in
|
||||
:doc:`vagrant-dev-env`.
|
||||
|
||||
Currently the Heat development environment is entirely non-functional. The
|
||||
Kolla core reviewers have debated removing it from the repository but have
|
||||
resisted to provide an opportunity for contributors to make Heat usable for
|
||||
Kolla development. The Kolla core reviewers believe Heat would offer a great
|
||||
way to develop Kolla in addition to Vagrant, bare metal, or a manually setup
|
||||
virtual machine.
|
||||
|
||||
For more information refer to
|
||||
`_bug 1562334 <https://bugs.launchpad.net/kolla/+bug/1562334>`__.
|
||||
|
||||
Building Container Images
|
||||
=========================
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user