cookbook 'chef_eye', '~> 1.0.4'
chef_eye (8) Versions 1.0.4 Follow0
Installs/Configures chef_eye
cookbook 'chef_eye', '~> 1.0.4', :supermarket
knife supermarket install chef_eye
knife supermarket download chef_eye
chef_eye cookbook
Cookbook for setup eye services and applications
Related projects
Capistrano chef eye cookbook companion for Capistrano.
Supported Platforms
- Ubuntu 12.04
- Ubuntu 14.04
Attributes
Key | Type | Description | Default |
---|---|---|---|
chef_eye.eye_bin | String | Path to eye executable file | /usr/local/bin/eye |
chef_eye.leye_bin | String | Path to local eye executable file | /usr/local/bin/leye |
chef_eye.services | Hash or Array | Array of users or Hash with users as keys and service options as value | ['root'] |
chef_eye.service_provider | String |
'upstart' or 'init'
|
'upstart' |
chef_eye.applications | Hash | Applications configurations | {} |
chef_eye.install_ruby | Boolean | Try to install ruby packages ruby , ruby-dev . If you want to install ruby using another way, you should set this value to false
|
true |
Usage
This cookbook provides two strategies of usage eye
. "Eye" per user and "eye" per project (local eye).
First strategy run one eye daemon for all configurations and load it.
Eye per user file structure (for user vagrant):
/etc/init/eye_vagrant.conf # Eye service for user vagrant (generated by chef_eye::service recipe)
/etc/eye/config.eye # Main eye file. This file contains eye service settings and load config files from /etc/eye/vagrant/*.eye
/etc/eye/vagrant/application1.eye # Application config (generated by chef_eye_application lwrp)
/etc/eye/vagrant/application2.eye
/etc/eye/vagrant/*.eye
Eye per project (local eye) file structure (generated by provider Chef::Provider::ChefEyeApplicationLocal
):
/etc/init/leye_application.conf
/var/www/application/shared # Eye home
/var/www/application/shared/Eyefile # Local eye service configuration and loader for application config
/var/www/application/shared/.eye/sock
/var/www/application/shared/.eye/pid
/var/www/application/shared/config/application.eye # Configuration file for application. Default path /config/.eye
Recipes
chef_eye::default
Include chef_eye
in your node's run_list
:
{ "run_list": [ "recipe[chef_eye::default]" ] }
chef_eye::ruby
Cookbook used system ruby and try to install ruby
, ruby-dev
packages if node['chef_eye']['install_ruby']
set to true
If you want to use custom system ruby, you need set node['chef_eye']['install_ruby']
to false
and install custom ruby before
before this cookbook. For example, if you want to use uid
and gid
application options,
you need install ruby 2.0.0 as system ruby. Its installation is your concern.
chef_eye::service
This recipe configure chef_eye_service
for using with per user strategy
By default service named by eye_<username>
. For example, service for user vagrant, will be named as eye_vagrant
, service for user root as eye_root
, etc.
If you need to reload service for user vagrant
, you can use
some_resource do ... notifies :reload, 'chef_eye_service[eye_vagrant]' end
If you want to change configuration for service for ubuntu
:
default['chef_eye']['services'] = { ubuntu: { 'logger' => '/var/log/eye/ubuntu.log' 'mail' => { 'host' => 'mx.some.host', 'port' => 25, 'domain' => 'some.host' }, contacts: { 'errors' => { 'type' => 'mail', 'contact' => 'error@some.host' }, 'dev' => { 'type' => 'mail', 'contact' => 'error@some.host', 'opts' => {} }, } } }
chef_eye::applications
This service generate chef_eye_application
LWRP's using node['chef_eye']['applications']
attributes.
For example:
default['chef_eye']['applications']['my_app'] = { type: 'local', owner: 'vagrant', # required group: 'vagrant', config_dir: '/var/www/rails_sample/shared/config', # for local version eye_file: 'Eyefile', eye_home: '/var/www/rails_sample/shared', eye_config: { logger: '/var/www/rails_sample/shared/log/eye.log' }, service_provider: 'upstart', #application config config: { working_dir: '/var/www/rails_sample/current', checks: { cpu: { :every => 30, :below => 80, :times => 3 }, memory:{ :every => 30, :below => 73400320, :times => [ 3, 5 ] } }, process: { unicorn: { daemonize: true, pid_file: 'puma.pid', stdall: 'puma.log', start_command: 'bundle exec unicorn --port 33280 --environment production Config.ru', stop_signals: ['TERM', 5, 'KILL'] }, resque: { pid_file: 'tmp/pids/resque.pid', start_command: 'bin/resque work --queue=high', checks: { cpu: { :every => 30, :below => 80, :times => 3 } } } } } }
LWRPs
chef_eye_service
Attributes
Name | Type | Description | Default Value |
---|---|---|---|
service_name | String | Name of the system service and system configuration file (/etc/init/<service_name>.conf). | This is a name_attribute |
type | String | Type need for set execution file eye or leye . Can be 'local' or 'user' |
'user' |
service_provider | String |
upstart or init
|
'upstart' |
owner | String | Owner of service | 'root' |
group | String | Group of service | 'root' |
cookbook | Symbol, String, NilClass | Cookbook name for searching templates | nil |
eye_home | String, NilClass | Home directory for eye process. Used only for 'local' service type | nil |
eye_file | String, NilClass | Main configuration file for loading by service. For local service this is Eyefile name, for user '/etc/<username>.eye'. This file must be generated by another LWRP. |
nil |
Actions
Name | Description | |
---|---|---|
:nothing | default | |
:start | Start eye service | |
:stop | Stop eye service | |
:restart | Restart eye service | |
:stop_all | Send start to all loaded applications | |
:start_all | Send stop to all loaded applications | |
:restart_all | Send restart to all loaded applications |
chef_eye_application
This is a main LWRP for configure eye application.
You can use any valid eye options for config attribute.
Attributes:
Name | Type | Description | Default Value |
---|---|---|---|
owner | String | Owner fo application | 'root' |
group | String | Owner fo application | 'root' |
cookbook | String | Cookbook name for searching templates | 'chef_eye' |
config | Hash or Block | Application configuration | {} |
config_dir | String, NilClass | Application configuration | nil (set dynamic: <eye_home>/config for local , /etc/eye/<user_name>/ for user strategies) |
service_provider | string | Application configuration | node['chef_eye']['service_type'] |
eye_home | String, NillClass | Home for .eye directory, used only for local strategy. If empty, provider try to resolve eye_home path by eye_file . If eye_file is relative path, and eye_home empty, provider raise exception. |
|
eye_file | String | Application service configuration file name (relative of eye_home) or absolute path, used only for local strategy |
'Eyefile' |
eye_config | Hash or Block | Application Service configuration, used only for local strategy |
{} |
Providers
Provider Name | Description |
---|---|
Chef::Provider::ChefEyeApplication | Default provider. This provider implement user application strategy |
Chef::Provider::ChefEyeApplicationLocal | Default provider. This provider implement local application strategy |
Cookbook provide chef_eye_application
resource. This is a main resource for generate eye application configuration.
chef_eye_application 'name_of_my_app' do owner 'ubuntu' group 'ubuntu' working_dir '/var/www/rails_sample' config do env 'RAILS_ENV' => 'production' working_dir '/var/www/my_app' trigger :flapping, :times => 10, :within => 1.minute process :puma do daemonize true pid_file "puma.pid" stdall "puma.log" start_command "bundle exec puma --port 33280 --environment production thin.ru" stop_signals [:TERM, 5.seconds, :KILL] restart_command "kill -USR2 {PID}" restart_grace 10.seconds check :cpu, :every => 30, :below => 80, :times => 3 check :memory, :every => 30, :below => 70.megabytes, :times => [3,5] end end action :configure # or :delete notifies :reload, 'chef_eye_service[eye_ubuntu]' # you need notify service for reload end
Or as hash
chef_eye_application 'name_of_my_app' do owner 'ubuntu' group 'ubuntu' config({ env: { RAILS_ENV: 'production' }, working_dir: '/var/www/my_app', triggers: { flapping: { :times => 10, :within => 1.minute } }, processes: { puma: { daemonize: true, pid_file: "puma.pid", stdall: "puma.log", start_command: "bundle exec puma --port 33280 --environment production thin.ru", stop_signals: [:TERM, 5.seconds, :KILL], restart_command: "kill -USR2 {PID}", restart_grace: 10.seconds, checks: { cpu: {:every => 30, :below => 80, :times => 3}, memory: {:every => 30, :below => 70.megabytes, :times => [3, 5]} } } } }) action :configure # or :delete notifies :reload, 'chef_eye_service[eye_ubuntu]' # you need notify service for reload end
TODO
- Add unit tests
- Add integration tests
License and Authors
Author:: Nikolay Murga (nikolay.m@randrmusic.com)
Dependent cookbooks
apt >= 0.0.0 |
build-essential >= 0.0.0 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
Collaborator Number Metric
1.0.4 failed this metric
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
Contributing File Metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
1.0.4 failed this metric
FC122: Use the build_essential resource instead of the recipe: chef_eye/recipes/eye.rb:2
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
1.0.4 passed this metric
Testing File Metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
1.0.4 failed this metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
1.0.4 failed this metric
FC122: Use the build_essential resource instead of the recipe: chef_eye/recipes/eye.rb:2
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
1.0.4 passed this metric
Testing File Metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
1.0.4 failed this metric
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
1.0.4 passed this metric
Testing File Metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
1.0.4 failed this metric
1.0.4 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number