diff --git a/dev/heat/get-image.sh b/dev/heat/get-image.sh deleted file mode 100755 index 21166301e7..0000000000 --- a/dev/heat/get-image.sh +++ /dev/null @@ -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 < - 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]} diff --git a/dev/heat/kollanode.yaml b/dev/heat/kollanode.yaml deleted file mode 100644 index a1fa11a6b0..0000000000 --- a/dev/heat/kollanode.yaml +++ /dev/null @@ -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]} diff --git a/dev/heat/local.yaml.example b/dev/heat/local.yaml.example deleted file mode 100644 index 8f76cd835e..0000000000 --- a/dev/heat/local.yaml.example +++ /dev/null @@ -1,5 +0,0 @@ -parameters: - ssh_key_name: - external_network_id: - container_external_network_id: - container_external_subnet_id: diff --git a/doc/heat-dev-env.rst b/doc/heat-dev-env.rst deleted file mode 100644 index 46e7d5813e..0000000000 --- a/doc/heat-dev-env.rst +++ /dev/null @@ -1,198 +0,0 @@ -.. _heat-dev-env: - -================================= -Development Environment with Heat -================================= - -These `Heat `__ templates will -deploy an *N*-node `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 `__. 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 `__ -concept. - -The Kolla cluster is based on Fedora 21, requires the minimum Docker -version of 1.7.0 -`binary `__. - -These templates are designed to work with the Icehouse or Juno versions -of Heat. If using Icehouse Heat, this -`patch `__ 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 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 - -:: - - $ curl http://: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 '^]'. diff --git a/doc/index.rst b/doc/index.rst index a5d50bc6cb..00c484af8f 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -65,6 +65,5 @@ Developer Docs :maxdepth: 1 CONTRIBUTING - heat-dev-env vagrant-dev-env running-tests diff --git a/doc/quickstart.rst b/doc/quickstart.rst index c755dfa12e..55c0b87c03 100644 --- a/doc/quickstart.rst +++ b/doc/quickstart.rst @@ -305,23 +305,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 `__. - Building Container Images =========================