GithubHelp home page GithubHelp logo

butlerwang / openstack-chef-repo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from chef-boneyard/openstack-chef-repo

0.0 2.0 0.0 929 KB

Chef Repository for OpenStack

Home Page: https://github.com/stackforge/openstack-chef-repo

License: Apache License 2.0

Ruby 100.00%

openstack-chef-repo's Introduction

Description

This repository contains examples of the roles, environments and other supporting files for deploying an OpenStack Juno reference architecture using Chef. This currently includes all OpenStack core projects: Compute, Dashboard, Identity, Image, Network, Object Storage, Block Storage, Telemetry and Orchestration.

Development of the latest OpenStack release will continue on the master branch and releases tagged with 10.0.X. Once development starts against OpenStack k release, this branch will move to stable/juno and the appropriate branches will continue development.

The documentation has been moved to the https://github.com/mattray/chef-docs repository for merging to https://github.com/opscode/chef-docs and eventual release to https://docs.getchef.com/openstack_develop.html. Instructions for building the docs are included in the repository. The documentation for Chef is available at http://docs.getchef.com. There is additional documentation on the OpenStack wiki.

Usage with Chef Server

This repository uses Berkshelf (https://berkshelf.com) to manage downloading all of the proper cookbook versions, whether from Git or from the Chef Supermarket site (https://supermarket.getchef.com/). The preference is to eventually upstream all cookbook dependencies to the Chef Supermarket site. The Berksfile lists the current dependencies. Note that berks will resolve version requirements and dependencies on first run and store these in Berksfile.lock. If new cookbooks become available you can run berks update to update the references in Berksfile.lock. Berksfile.lock will be included in stable branches to provide a known good set of dependencies. Berksfile.lock will not be included in development branches to encourage development against the latest cookbooks.

There is a Spiceweasel (http://bit.ly/spcwsl) infrastructure.yml manifest documenting all the roles and environments required to deploy OpenStack.

To see the commands necessary to push all of the files to the Chef server, run the following command:

spiceweasel infrastructure.yml

To actually deploy the repository to your Chef server, run the following command:

spiceweasel -e infrastructure.yml

Usage with Chef Server manual steps

Perpare Chef Server

Pre-condition

Make sure your Chef server's hostname is resolvable(i.e. ping your hostname will show the IP address).

Install Chef Server

Download Chef server package from here: https://www.chef.io/download-open-source-chef-server-11/

Install the file using the correct method for your system.

For Debain using dpkg -i chef-server.deb, for RHEL using rpm -i chef-server.rpm.

Configure Chef Server

chef-server-ctl reconfigure

Prepare Chef Workstation

Usually we setup the Chef workstation on Chef server node.

Install Chef

curl -L https://www.chef.io/chef/install.sh | bash

Configure Chef Workstation

knife ssl fetch
knife configure -y -i --defaults -r ''

Prepare Chef repository

Download OpenStack Chef cookbooks

git clone https://github.com/stackforge/openstack-chef-repo
cd openstack-chef-repo
/opt/chef/embedded/bin/gem install berkshelf
/opt/chef/embedded/bin/berks vendor ./cookbooks

Upload Chef roles and cookbooks

cd openstack-chef-repo
knife role from file ./roles/*.json
knife cookbook upload --cookbook-path ./cookbooks --all

Create and upload Chef environment

cd openstack-chef-repo
cp environments/example.json environments/your_environment.json
knife environment from file environments/your_environment.json

NOTE: Your should update the necessary attributes in environments/your_environment.json.

Start deploy OpenStack

Make sure your nodes can connect Chef server through Chef server's hostname/FQDN.

Deploy an allinone environment

knife bootstrap allinone_node_ip -E your_environment -r 'role[allinone-compute]'

Deploy a controller + compute environment

knife bootstrap controller_node_ip -E your_environment -r 'role[os-compute-single-controller]'
knife bootstrap compute_node1_ip -E your_environment -r 'role[os-compute-worker],role[os-telemetry-agent-compute]'
knife bootstrap compute_node2_ip -E your_environment -r 'role[os-compute-worker],role[os-telemetry-agent-compute]'

Usage with Chef Zero

Chef Zero is Chef local mode, without Chef server.

Install Chef

curl -L https://www.getchef.com/chef/install.sh | sudo bash

Checkout cookbooks

git clone https://github.com/stackforge/openstack-chef-repo
cd openstack-chef-repo
/opt/chef/embedded/bin/gem install berkshelf
/opt/chef/embedded/bin/berks vendor ./cookbooks

Prepare Chef environment

Here is a minimal environment file.

{
  "name": "zero-demo",
  "override_attributes": {
    "mysql": {
      "server_root_password": "ilikerandompasswords"
    },
    "openstack": {
      "developer_mode": true
    }
  }
}

Start to deploy

Note that your_node_name below is your node's hostname.

cd openstack-chef-repo
chef-client -z -E zero-demo -r 'role[allinone-compute]'

If there are no errors in output, congratulations!

Databags

You need to have some databags when you run the stackforge without the developer_mode -> true.

You need four databags : user_passwords, db_passwords, service_passwords, secrets

Each data bag need the following item to be created.

user_passwords ITEM example : {"id" : "admin", "admin" : "mypass"} - admin - guest

for item in admin guest ; do
 knife data bag create user_passw $p --secret-file ~/.chef/openstack_data_bag_secret;
done

db_passwords ITEM example : {"id" : "nova", "nova" : "mypass"}

- nova
- horizon
- keystone
- glance
- ceilometer
- neutron
- cinder
- heat
- dash
for item in nova horizon keystone glance ceilmeter neutron cinder heat dash ; do
 knife data bag create db_passwords $p --secret-file ~/.chef/openstack_data_bag_secret;
done

service_passwords ITEM example : {"id" : "openstack-image", "openstack-image" : "mypass"}

- openstack-image
- openstack-compute
- openstack-block-storage
- openstack-orchestration
- openstack-network
- rbd
for item in openstack-image openstack-compute openstack-block-storage openstack-orchestration openstack-network rbd ; do
 knife data bag create service_passwords $p --secret-file ~/.chef/openstack_data_bag_secret;
done

secrets ITEM example : {"id" : "openstack_identity_bootstrap_token", "openstack_identity_bootstrap_token" : "mytoken"}

- openstack_identity_bootstrap_token
- neutron_metadata_secret
for item in openstack_identity_bootstrap_token neutron_metadata_secret ; do
 knife data bag create secrets $p --secret-file ~/.chef/openstack_data_bag_secret;
done

Cookbooks

The cookbooks have been designed and written in such a way that they can be used to deploy individual service components on any of the nodes in the infrastructure; in short they can be used for single node 'all-in-one' installs (for testing), right up to multi/many node production installs. In order to achieve this flexibility, they are configured by attributes which may be used to override search. Chef 11 or later is currently required. Ruby 1.9.x is considered the minimum supported version of Ruby as well. Most users of this repository test with the full-stack Chef 11 client and a Chef server (Chef Solo is not explicity supported).

Each of the OpenStack services has its own cookbook and will eventually be available on the Chef Community site.

OpenStack Block Storage

http://github.com/stackforge/cookbook-openstack-block-storage/

There is further documentation in the OpenStack Block Storage cookbook README.

OpenStack Compute

http://github.com/stackforge/cookbook-openstack-compute/

There is further documentation in the OpenStack Compute cookbook README.

OpenStack Dashboard

http://github.com/stackforge/cookbook-openstack-dashboard/

There is further documentation in the OpenStack Dashboard cookbook README.

OpenStack Identity

http://github.com/stackforge/cookbook-openstack-identity/

There is further documentation in the OpenStack Identity cookbook README.

OpenStack Image

http://github.com/stackforge/cookbook-openstack-image/

There is further documentation in the OpenStack Image cookbook README.

OpenStack Network

Http://github.com/stackforge/cookbook-openstack-network/

There is further documentation in the OpenStack Network cookbook README.

OpenStack Object Storage

http://github.com/stackforge/cookbook-openstack-object-storage/

There is further documentation in the OpenStack Object Storage cookbook README.

Testing

Please refer to the TESTING.md for instructions for testing the repository and cookbooks with Vagrant or Vagabond.

License and Author

Author Matt Ray ([email protected])
Author Jay Pipes ([email protected])
Author Chen Zhiwei ([email protected])
Author Juergen Brueder ([email protected])
Author Mark Vanderwiel ([email protected])
Copyright Copyright (c) 2011-2013 Opscode, Inc.
Copyright Copyright (c) 2014-2015 IBM, Corp.

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.

openstack-chef-repo's People

Contributors

mattray avatar kramvan1 avatar mancdaz avatar chenzhiwei avatar hughsaunders avatar paulczar avatar jhtran avatar jaypipes avatar jjhua avatar breu avatar craigtracey avatar jaybrueder avatar mattt416 avatar laradji avatar alop avatar hanzhf avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.