8. Symlinks
template '/srv/myapp/shared/settings_local.py' do
source 'settings_local.py.erb'
vars ...
end
• Put config files in shared
• ‘path/in/shared’ => ‘path/in/app’ deploy_revision '/srv/myapp' do
...
• symlink vs. before_migrate
symlink_before_migrate(
'settings_local.py'=>'conf/settings_local.py'
)
end
9. Migrations
deploy_revision '/srv/myapp' do
...
migrate true
• Run migrations automatically migration_command '/srv/myapp/shared/env/bin/python '
• Only on “master” machine? end
'/srv/myapp/current/manage.py syncdb --migrate'
migrate node[:roles].include? 'migrator'
14. PyChef
• pip install pychef import chef
• Reads knife.rb or client.rb
api = chef.autoconfigure()
• chef.Object(‘id’)
bag = chef.DataBag('applications')
• chef.Object.list()
item = bag['myapp']
• obj.save() item['revision']['production'] = 'v1.1'
• obj.delete() item.save()
15. Search
• Search(‘index’, ‘query’)
• row.object
import chef
api = chef.autoconfigure()
for row in chef.Search('node', 'role:myapp'):
print row.object['fqdn']