Project

master-cap

0.01
No commit activity in last 3 years
No release in over 3 years
Capistrano tasks designed to work with master-chef
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

What is it ?

Here are capistrano extensions to be used with master-chef

How to use it

  • Add master-cap to your Gemfile
  • Load master-cap in your Capfile: require 'master-cap'
  • Choose a topology driver and load it ** on :load, :load_topology_directory ** Create a subdirectory named topology, and add your toplogy YAML files into
  • Enjoy :)

Topology file

Example of a topology file: integ.yml

:topology:
  :app:
    :hostname: my_app_server.mydomain.net
    :type: linux_chef
    :roles:
      - app_server
  :db:
    :hostname: db_server.mydomain.net
    :type: linux_chef
    :roles:
      - db_server
  :redis:
    :hostname: redise.mydomain.net
    :type: linux_chef
    :roles:
      - redis_server
:cap_override:
  :my_specific_cap_param: 'toto'
:default_role_list:
  - base

Capistrano commands

Node selection

  • cap integ show
  • cap app-integ show
  • cap integ_db_server show

SSH command

  • cap integ check: try to connect on each nodes with ssh
  • cap integ ssh_cmd -s cmd=uname: exec unamecommand on each nodes

Master-chef binding

Configuration

If you use only master-chef (no custom repo with Chef recipes), you have nothing to do.

If you use a custom repo, please add following lines before requiring master-cap

set :git_repos_manager_class, 'SimpleGitReposManager'

set :git_repos, [
  {
    :url => "http://github.com/octo-technology/master-chef.git",
    :ref => "aa597911b6d394dff27338c825aa966105cb6607",
  },
  {
    :url => "git@github.com:xxxx/yyyy.git",
    :local_path => "../yyyy",
  }
]

Note:

  • :ref is used to lock master-chef version
  • :local_path is used to run chef:local

Cap commands

  • cap integ chef: run chef on all servers
  • cap app-integ chef:local: run chef on app server, using local recipes. Usefull for debugging.
  • cap app-integ chef:generate_local_json: generate the local.json file using current topology.
  • cap app-integ chef:stack: output last chef stack trace
  • cap integ chef:stack: purge all master-chef git repos caches

License

Copyright 2012 Bertrand Paquet

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.