{"id":13905699,"url":"https://github.com/locomote/gusteau","last_synced_at":"2025-07-18T03:31:08.360Z","repository":{"id":6107584,"uuid":"7335162","full_name":"locomote/gusteau","owner":"locomote","description":"A tasteful Chef Solo wrapper and configuration manager","archived":true,"fork":false,"pushed_at":"2017-09-04T02:09:59.000Z","size":560,"stargazers_count":66,"open_issues_count":8,"forks_count":18,"subscribers_count":77,"default_branch":"master","last_synced_at":"2024-09-20T07:08:22.026Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://gusteau.gs","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/locomote.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-12-27T03:06:56.000Z","updated_at":"2023-11-17T11:54:23.000Z","dependencies_parsed_at":"2022-08-20T22:00:46.515Z","dependency_job_id":null,"html_url":"https://github.com/locomote/gusteau","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/locomote%2Fgusteau","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/locomote%2Fgusteau/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/locomote%2Fgusteau/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/locomote%2Fgusteau/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/locomote","download_url":"https://codeload.github.com/locomote/gusteau/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226336651,"owners_count":17608867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-06T23:01:21.666Z","updated_at":"2024-11-25T13:31:40.287Z","avatar_url":"https://github.com/locomote.png","language":"Ruby","readme":"# Gusteau\n\n*\"Anyone can cook.\"*\n\n[![Build Status](https://travis-ci.org/locomote/gusteau.png?branch=master)](https://travis-ci.org/locomote/gusteau)\n[![Coverage Status](https://coveralls.io/repos/locomote/gusteau/badge.png?branch=master)](https://coveralls.io/r/locomote/gusteau?branch=master)\n[![Gem Version](https://badge.fury.io/rb/gusteau.png)](http://badge.fury.io/rb/gusteau)\n\nGusteau is an easy to use configuration manager for Chef Solo and Vagrant. It aims to:\n\n* Provide existing Chef Solo users with a more efficient workflow\n* Make Chef Solo usable for a small to mid scale multi-node setup\n* Make Chef Solo more accessible for the new users\n\nSome of the features include:\n\n* YAML for readable, flexible infrastructure configuration\n* Usage of a single SSH connection to stream compressed files and commands\n* Support for normal Chef CLI flags:\n  * `-W` or `--why-run` (dry run mode)\n  * `-l` for setting a log level and   `-F` for setting an output formatter\n* Bootstrapping target systems with Chef-Omnibus or custom scripts.\n\n\n## Getting started\n\nGusteau is a Ruby gem:\n\n```\ngem install gusteau\n```\n\nThe following command generates an example Chef-repo:\n\n```\ngusteau init project-name\n```\n\nMake sure you read through `project-name/README.md` first.\n\nA typical `.gusteau.yml` looks like this:\n\n```\nbefore:\n  - bundle exec berks install --path ./cookbooks\n\nenvironments:\n  development:\n    attributes:\n      mysql:\n        server_root_password: ASahiweqwqe2\n      rvm:\n        default_ruby: 1.9.3-p362\n      users:\n       - linguini\n\n    run_list:\n      - role[base]\n      - recipe[mysql::server]\n      - recipe[iptables]\n\n    nodes:\n      playground:\n        host: 33.33.33.20\n        password: omgsecret\n```\n\n\n## Converging a server\n\nThe following command will run the whole run_list on the node.\n\n```\ngusteau converge development-playground\n```\n\nUse the `--bootstrap` or `-b` flag to bootstrap chef-solo (e.g. during the first run).\n\n## Applying individual recipes\n\nYou may choose to run a custom run_list instead of the full convergence.\n\n```\ngusteau apply development-playground \"role[base],recipe[oh-my-zsh]\"\n```\n\n## SSH\n\nGusteau provides a useful shortcut that you may use to ssh into a node. If you haven't got passwordless authentication set up, Gusteau will use `user` and `password` values from the node configuration.\n\n```\ngusteau ssh development-playground\n```\n\nPlease note that `expect` utility must be installed for `gusteau ssh` to work.\n\nIf you prefer calling ssh directly, you will find the `gusteau ssh_config` subcommand useful:\n\n```\ngusteau ssh_config \u003e\u003e ~/.ssh/config\n```\n\n## Vagrant Plugin\n\nGusteau can save you from writing some Vagrantfile boilerplate code. It enables you to move node specific Vagrant configuration away from the Vagrantfile into node definitions. The Vagrant plugin for Gusteau means you can then bring up this node in VirtualBox.\n\n```\ndevelopment:\n  nodes:\n    www:\n      vagrant:\n        IP: 192.168.100.20\n        cpus: 1\n        memory: 512\n        box_url: 'https://opscode-vm.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box'\n```\n\nThe following snippet in the Vagrantfile configures Vagrant for all nodes (as above) listed in Gusteau which have `vagrant` sections defined.\n\n```ruby\nVagrant.configure('2') do |config|\n  Gusteau::Vagrant.detect(config) do |setup|\n    setup.prefix = 'loco'\n    setup.defaults.box_url = 'http://example.com/vm/opscode_centos-6.4.box'\n  end\nend\n```\n\n* The `prefix` option lets you prepend your VirtualBox VMs names, e.g. `loco-nodename`.\n* The `defaults` one lets you provide default values for `cpus`, `memory`, `box_url`, `box`.\n\nPlease note that the add-on only works with Vagrant ~\u003e 1.2 and needs Gusteau to be installed as a Vagrant plugin:\n\n```\nvagrant plugin install gusteau\n```\n\nOnce the Gusteau plugin for Vagrant is installed you can start up VirtualBox using the environment and node data for vagrant in .gusteau.yml:\n\n```\nvagrant up development-www\n```\n\n## Configuration\n\n### Before and after hooks\n\nYou can tell Gusteau to execute specific commands before and / or after `converge` or `apply` take place. They get executed on the host system. Example `.gusteau.yml` snippet:\n\n```\nbefore:\n  - bundle exec librarian-chef install\n\nafter:\n  - bundle exec rake spec\n```\n\n### Attributes\nIn addition to specifying `attributes` for environments you can set node-specifc ones. They will be deep-merged with environment ones:\n\n```\nenvironments:\n  staging:\n    attributes:\n      hostname: staging\n    nodes:\n      one:\n        attributes: { hostname: staging-one }\n      two:\n        attributes: { hostname: staging-two }\n```\n\n### Run lists\n\nYou can also override `run_list` for specific nodes.\n\n### Bootstrap script\n\nBy default, Gusteau installs the [Omnibus Chef](http://www.opscode.com/chef/install/) 11.4.4. You can also set the Omnibus Chef version explicitly by specifying it in `.gusteau.yml`:\n\n```\nchef_version: 10.26.0\n```\n\nIf you're targeting a non Omnibus-supported platform you might want to specify the `platform` value for a node: this invokes a specific [script](https://github.com/locomote/gusteau/tree/master/bootstrap).\n\nAlternatively, you can specify a custom script in `.gusteau.yml`:\n\n```\nbootstrap: ./scripts/freebsd.sh\n```\n\n\n### Custom cookbooks path\n\nBy default, Gusteau uploads and sets Chef Solo up to use cookbooks from `./cookbooks` and `./site-cookbooks` directories. If it doesn't work for you, you can override these values in `.gusteau.yml`:\n\n```\ncookbooks_path: [ './my-cookbooks', '../something-else' ]\nroles_path: './base-roles'\n```\n\n### Custom Chef run configuration directory (e.g. `/etc/chef`)\n\nBy default, Gusteau uploads the necessary files and folders (i.e. cookbooks and roles directories) to `/etc/chef/`.\n\nYou can specify a custom target directory in `.gusteau.yml`:\n\n```\nchef_config_dir: /etc/custom_chef_dir\n```\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flocomote%2Fgusteau","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flocomote%2Fgusteau","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flocomote%2Fgusteau/lists"}