Overview - Django Application with Chef
This code repository is a starter code base for creating a server with python, Django, nginx, gunicorn, and postgreSQL installed. There are a few things that need to be setup in order for this to work for other individuals.
Getting Started with Chef
Getting Started with your knife plugin
I'll let you google any other plugins that you might need.
**As a recommendation when setting up your knife plugin - rather than putting your hosting provider credentials directly in the installed code base, add these variables to your .bash_profile like this:
- export RACKSPACE_USERNAME=''
- export RACKSPACE_API_KEY=''
This way these credentials stay local and private.
Change the user in the
I have my personal user in the users folder; you should remove this user and replace it with your own unless you want me to have access to all your boxes :)
Links to particularly interesting articles I found while making this repository
Links to my Chef presentation at PyCon 2013
- Slides - http://bit.ly/WwYuVl
- Video - http://pyvideo.org/video/1756/chef-automating-web-application-infrastructure
Overview - Chef Repo
Every Chef installation needs a Chef Repository. This is the place where cookbooks, roles, config files and other artifacts for managing systems with Chef will live. We strongly recommend storing this repository in a version control system such as Git and treat it like source code.
While we prefer Git, and make this repository available via GitHub, you are welcome to download a tar or zip archive and use your favorite version control system to manage the code.
This repository contains several directories, and each directory contains a README file that describes what it is for in greater detail, and how to use it for managing your systems with Chef.
certificates/- SSL certificates generated by
rake ssl_certlive here.
config/- Contains the Rake configuration file,
cookbooks/- Cookbooks you download or create.
data_bags/- Store data bags and items in .json in the repository.
roles/- Store roles in .rb or .json in the repository.
The repository contains a
Rakefile that includes tasks that are installed with the Chef libraries. To view the tasks available with in the repository with a brief description, run
The default task (
default) is run when executing
rake with no arguments. It will call the task
The following tasks are not directly replaced by knife sub-commands.
bundle_cookbook[cookbook]- Creates cookbook tarballs in the
ssl_cert- Create self-signed SSL certificates in
update- Update the repository from source control server, understands git and svn.
The following tasks duplicate functionality from knife and may be removed in a future version of Chef.
metadata- replaced by
knife cookbook metadata -a.
new_cookbook- replaced by
knife cookbook create.
role[role_name]- replaced by
knife role from file.
roles- iterates over the roles and uploads with
knife role from file.
test_cookbooks- replaced by
knife cookbook test -a.
test_cookbook[cookbook]- replaced by
knife cookbook test COOKBOOK.
upload_cookbooks- replaced by
knife cookbook upload -a.
upload_cookbook[cookbook]- replaced by
knife cookbook upload COOKBOOK.
The repository uses two configuration files.
config/rake.rb configures the Rakefile in two sections.
- Constants used in the
ssl_certtask for creating the certificates.
- Constants that set the directory locations used in various tasks.
If you use the
ssl_cert task, change the values in the
config/rake.rb file appropriately. These values were also used in the
new_cookbook task, but that task is replaced by the
knife cookbook create command which can be configured below.
The second config file,
.chef/knife.rb is a repository specific configuration file for knife. If you're using the Opscode Platform, you can download one for your organization from the management console. If you're using the Open Source Chef Server, you can generate a new one with
knife configure. For more information about configuring Knife, see the Knife documentation.
Read the README file in each of the subdirectories for more information about what goes in those directories.