mofa

a lightweight remote chef-solo runner

Before you can start using mofa please create a config file:

mkdir ~/.mofa

cat <<EOF > ~/.mofa/config.yaml
# global mofa settings

# Admin User Account that should be used for all mofa tasks.
# The user has to be able to login passwordless
# and has tohave passwordless sudo permissions.
ssh_user: vagrant
ssh_port: 2222
ssh_keyfile: ~/.ssh/id_rsa_vagrant_insecure

# A REST-Webservice that returns a list of hosts that are potentially
# manageable with this mofa.
#service_hostlist_url: http://a-real-server:9292/hosts
# You can also have a json-file somewhere. See the test-file in the rspec-folder
service_hostlist_url: file:///Users/<yourname>/.mofa/example_hostlist.json
service_hostlist_default_filter: "localhost"
service_hostlist_api_key: <a api key used to access the above service>

# where to build tmporary cookbook packages and so on
tmp_dir: /var/tmp

# The cookbook architectural pattern should becodified by following
# a cookbook naming schema:
# * Cookbooks beginning with "env_*" are Envrionment Cookbooks
# * Cookbooks haven a prefix like "<organisation_name>_*" are
#   so-called Wrapper Cookbooks
# * Cookbooks having a "base_" Prefix are Base Cookbooks

cookbook_type_indicator:
  env: "^env_.*"
  wrapper: "^(<your_org>_|<another_pattern>_).*"
  base: ".*_base$"

# Binrepo for released cookbooks
binrepo_base_url: http://binrepo-server/cookbooks/

# Releasing into binrepo
binrepo_host: localhost
binrepo_ssh_user: berkshelf
binrepo_ssh_port: 2222
binrepo_ssh_keyfile: ~/.ssh/id_rsa_vagrant_insecure
binrepo_import_dir: /var/berks-api-binrepo/cookbooks

EOF

local Development

$ git clone https://github.com/pingworks/mofa.git
$ cd mofa
$ bundle install
$ cd ../somewhere_chef-env_some_cookbook
$ export BUNDLE_GEMFILE=../mofa/Gemfile
$ bundle exec
$ ../mofa/bin/mofa provision .