Граф коммитов

153 Коммитов

Автор SHA1 Сообщение Дата
Dr Nic Williams 30daf099ff add a section in dev_setup README for custom domains
Change-Id: I1fb957ce5f9e2b239f20bbebc16a2e3e5a527a21
2011-12-20 11:30:27 -08:00
Dr Nic Williams bd3983b9d4 Tell getops to parse -D flag on vcap_dev_setup
Change-Id: I7a03a59b818da94570da73149ac8dc3e1d5c932e
2011-12-19 10:22:11 -08:00
Dr Nic Williams d45b8ae774 bin/vcap_dev_setup & chefsolo_launch.rb take a -D flag to override the domain (instead of vcap.me)
Change-Id: If6b6cc63e21f9cbd20c3787ec0e2d159932ec477
2011-12-19 10:22:11 -08:00
Mahesh 8e47fd4ffe Merge "Fix ruby installs, take 2" 2011-12-16 21:11:37 +00:00
anferneeg 4c570676e3 First pass for router v2 implementation. The init version of router v2 is done by
Jun Xiao, polished by Anfernee with a couple of bug fixes and enhancement.

router v2 decouples control and data path to some extent, it's a logic router
including both nginx and uls (upstream location server) parts.

uls (aka control plane) is based on legacy router:
- all communications with nats are kept the same as before
- client facing interface (actually connected to nginx) is simplified to
  handle the location query/stats update from nginx only.
- the original app facing interface is totally removed.

nginx (aka data plane)
- package lua in nginx so most functionalities can be implemented with it.
- for each request, nginx will generate a subrequest (to fit in nginx
  single thread event model) which carries location query/stats info to uls,
  the response of the subrequest will return backend addr and also an
  opaque tags (only known by uls), and the corresponding main request will
  also be awaked and routed to the backend server, when a response from backend
  is returned back, the counter associated with the particular opaque tags
  will be incremented accoring to the response code. The next incoming
  request will always help to carry not-synced stats to uls along with
  its location query.
- sticky session and trace header are also implemented here,
  also their key related config are moved to nginx part.

testing
- "rake spec" will only test uls, while "rake test" will run both unit test and
  integration test with nginx
- integration test requires nginx with lua module installed running

Change-Id: I9b25b24c449b0421754e541ab5ba60a00c551da9
2011-12-16 10:45:18 -08:00
AB Srinivasan 85e0eabd3b Upgrade Node to v0.4.12.
Change-Id: I7d9d67b30acab80b0b36f221c4f4d1aa65ffff3e
2011-12-16 09:18:13 -08:00
Mahesh 734c7bd77c Fix ruby installs, take 2
The current recipes seem to work with chef-solo version 0.10.4 but version
0.10.6+  needs unique names for the bash code blocks.

Change-Id: I282abaad0f7a40ec2e7f0de1663da735e839104e
2011-12-15 17:09:07 -08:00
Mahesh f458bb0041 Fix ruby install recipes
Added a new library function cf_ruby_install that abstracts the ruby
installation. The current recipes were a hack.

Also fixed rake db:migrate to use bundle exec in dev_setup/bin/vcap.

Note for reviewers, This new library function is a straight copy of the
existing code in ruby/recipes/default.rb with the ruby versions and paths passed
in as parameters i.e. No new real code was added, existing code was moved and
abstracted in a more chef compliant manner.

Testing Done: Deployed a single host cloud.

Change-Id: I0d9ba26e0fb5abc6ebe8add00c857faf2e797c26
2011-12-15 12:00:47 -08:00
Katsunori Kawaguchi 824774f8fc Fix bug to create correct yaml to load
Change-Id: Id6a2491e55a4d3e412a65437944fcdda8f2cf147
2011-12-07 14:49:34 -08:00
Alex Pop 4445693257 Added VCAP_REPO_BRANCH optional argument to help install VCAP based on a point in time version of the repository
Change-Id: I2b81daee4d62bd940cbaca780bdb327d4b318b38
2011-12-07 14:49:34 -08:00
Mahesh 1509ee3924 Fix a typo
QA ran into an issue where they could not run more than one app.

Change-Id: I9e9aaea8d924717c19f44b28070bc9cd12d67abc
2011-12-07 10:35:48 -08:00
Mahesh 3251dbf910 Fix Issue CF-260
We shouldnt be running bundle install in vcap/common.

Change-Id: Ibc152a4e0545758d0af09a05d7369b5353c58dd1
2011-11-29 15:03:40 -08:00
mpage 455c335f1b Remove 'local_register_only' and add 'allow_registration'.
The existing implementation of 'local_register_only' had a security hole.
Moreover, I'm not sure that it's possible to implement the intent of 'local_register_only'
in Rails/EM safely. We would need to grab the socket for the current request and call getpeername()
on it.

We attempt to provide similar functionality to 'local_register_only' by allowing users to disable
registration and provide seed users to be created at startup. The seed users can then be used to
register additional users.

Test plan:
- New unit tests pass
- Ran CC locally with/without allow_registration set and verified the correct behaviour with vmc.
- BVTs pass locally
- BVTs pass on my deployment

Change-Id: Ib1c96304f7a7364b913a8a09f7178f85857cd46d
2011-11-17 17:14:12 -08:00
Albert Choi 1b1591ffe4 Feature/php recipes
We have been using these chef recipes internally at AppFog to deploy our PHP
environment and wanted to share.

Other points of interest:
* Gems built by staging's Rakefile are gitignored
* Removed an errant PHP staging spec from the cloud_controller tree
* Cloud Controller's welcome message and database adapter are configurable
* Some DEA configuration values are now configurable by chef (defaults are
* preserved)

(Note: this is a squashed commit of pull request 118 with
some edits by CF.com (e.g. add the ccdb adapter attribute))

Change-Id: I619d83e2898994714e1c4972ff9ae360d03b4d79
2011-11-16 15:53:38 -08:00
Tang Rui 772343da76 Chef recipes: add max_clients to config
Change-Id: Id0c73113ecdcd5ed88008809a9b3a1cf93b0655e
2011-10-26 22:59:00 -07:00
Tang Rui 9b99e1f022 Chef recipes: add command_rename_prefix to config
Change-Id: I59ac03fdd193534abb322814bd75559f94856ae5
2011-10-24 19:46:31 -07:00
rtang 214ca636f3 Chef recipes: add redis_log_dif to config
Change-Id: I95fa9bea943f1195c3e99a3124e61cdb1c33fdef
2011-10-24 19:44:58 -07:00
Mahesh c429c6291d Run cloud foundry components installed by chef scripts
If the ENV variable CLOUD_FOUNDRY_CONFIG_PATH is defined, config files are
picked up from that location. This allows components installed by the chef scripts to be
run by hand. i.e. without using the wrapper vcap/dev_setup/bin/vcap_dev <start/stop>

Change-Id: Ib6c971c6642bcb3b24186169e1c768ee70ba8d7b
2011-10-19 16:09:23 -07:00
Alex Suraci dd4e26fbb9 rename 'wait' debug mode to 'suspend' for clarity's sake
Change-Id: I8ddf1845b1c62009f8db879a372d110a45f8fa4a
2011-10-14 15:16:28 -07:00
Alex Suraci f2859f5ecb Update chef cookbook to include debugging configs, enabled by default
Change-Id: I88b64ffb3e1c3d19625cae5111cf245c4c8fd25f
2011-10-14 11:21:44 -07:00
AB Srinivasan 2d6e6944c5 Include java_web manifest / ref in dev_setup.
Change-Id: I321080dcf9b97e4ffb345fde7e9a5e96de39e55d
2011-10-11 20:36:08 -07:00
Patrick Bozeman 4f268b3e37 fix -d without -n vcap_dev bug
This commit fixes a but that happens if you run vcap_dev
with a -d option but not a -n option.  (The old
code would leave options["name"] uninitialized)

Change-Id: I820a7fd5ce10f11af96b15f970d3a0b358fec49c
2011-10-03 15:25:28 -07:00
Nicholas Kushmerick 15d9413a78 Chef recipes: add mongod_log_dir to config
Change-Id: I540770bb6a50ca08117d932312b01721ae6d9b59
2011-09-29 19:41:30 -07:00
Mahesh 6e94cd89f3 Add neo4j support + Misc changes
Change-Id: Ib81996a84b0283fd6afc7bb0109d12c620bbcce8

- Add neo4j support
- Save the last deployment in a deployment target file under $HOME
- Change service name i.e. make mysql => mysql_node etc
- Point out the profile file at the end of a deployment, has paths to run vmc
- Audit admin list
- Remove some packages from essentials list
- Increase timeout in bin/vcap that checks if a component is started

patch 3 - Fixed olegs comments.

Testing Done:
   Ran Neo4j feature bvt test
   Ran single host deployment
   Ran multi host mongodb deployment

Change-Id: Id96757bfe109af2f89b9a25e35a669a41c2d259c
2011-09-21 16:21:33 -07:00
Woon Jung 99ba8536b2 Merge "Change the cookbook to match the service config file changes." 2011-09-09 19:06:52 +00:00
Mahesh 7f1305d2bd Make dea runtimes configurable
patch 2 - install only the selected components
patch 3 - resolve merge conflict

Change-Id: I5eb5f31ea457542290ac4f87e4e11c371be007f6
2011-09-09 11:58:31 -07:00
Mahesh 46ef1a1608 Merge "Add a high level README explaining how to use the chef scripts" 2011-09-09 18:50:33 +00:00
Woon Jung ef6bdf3ca4 Change the cookbook to match the service config file changes.
Recent change the dev_setup cookbook this change fixex the error.

e.g:
in mysql_node
vcap_logging-0.1.0/lib/vcap/logging.rb:82:in `setup_from_config': undefined method `[]' for nil:NilClass (NoMethodError)

Change-Id: I7706fc01e1a1743bb27de60cf8f89d182f4c18bf
2011-09-09 11:17:31 -07:00
Mahesh 85306c24e1 Add some description to cloud foundry configy files.
These are my stabs at describing these fields, dont be too surprised if some of
the descriptions are somewhat off from the real use.

In addition to these I looked at the service node and gateway files but they dont seem
to have many interesting fields that need specific descriptions.

patch 3 - know -> known (Thansk Oleg)
patch 4 - added the same comments to files under vcap/{cloud_controller,health_manager,router,dea}
patch 5 - Fixed review comments.

Change-Id: I65185ddc6c08eecf4516944b960367dcb9b1011d
2011-09-08 22:41:54 -07:00
Mahesh 0403871406 Add a high level README explaining how to use the chef scripts
Also updated the deployment readme to document the currently supported multihost
setup.

patch 3 - fix review comments
patch 4 - Fix the readme with the right paths for custom deployments
patch 5 - Fix Vadims comments
patch 6 - Replace 'o' -> '-' :)

Change-Id: Ie2f330248d0c23b900925b0ee54b6e366843713d
2011-09-08 22:38:19 -07:00
Patrick Bozeman ed7aed484e Merge changes Ia7b7fd5f,I3f73e4e2
* changes:
  Add optional profile.sh file to ease deployment
  Fixed rvm problem with root installation, and removed the "Fixing init scripts" block because it's already fixed in rvm.
2011-09-07 18:45:56 +00:00
Mahesh bf9dca4415 Fix couple of bugs
o vcap stop used to fail trying to load config file for components that were
never running on this host
o Start cloud controller before the health manager.

Change-Id: I103685396e332faf0a7eeb9173e2ca6721fdd744
2011-09-06 13:25:27 -07:00
Patrick Armstrong f285541475 Add optional profile.sh file to ease deployment
Change-Id: Ia7b7fd5fe995b66d81fa3bde20c7e283b2c9b49e
2011-09-02 12:39:30 -07:00
Mahesh dff7ffa463 Setup cf logs under deployment home directory.
In addtion this change also includes the following changes.
o Remove all backup service related scripts/templates.
o Simple fix to change the deployment name for mulithost mongodb deployment.

Testing Done: verified single host deployment, checked presence of log files in
the new location.

Change-Id: I2b96246da62fe44a3e7de5ca86ca0bf49a20b9c3
2011-08-24 13:57:49 -07:00
Mahesh d4521d1c5a Split services into each service.
Also bumped up the verision of rubygems and bundler.

Testing Done: tested single host setup. Will test multihost setup before
submitting the change.

Change-Id: Ib7ab913f5bf27e90962b5bade2a9b9a7b51cecfd
2011-08-23 18:48:32 -07:00
Mahesh f773c3ed2b Bug fix. add not_if to package resource.
Change-Id: I79db7886eb71ed1c574ca01ca86de67c51803003
2011-08-23 17:37:06 -07:00
Patrick Bozeman 73764cf570 Merge "Add libpg-dev package to the ruby recipe so pg gem can be installed." 2011-08-23 00:38:27 +00:00
Mahesh afc2589405 Merge "Add external_uri support" 2011-08-22 23:44:23 +00:00
Mahesh bfec8bfaa7 Add external_uri support
Tested my changes with cc and services configured to go against my dev23 setup
i.e.  "appcloud23.dev.mozycloud.com"

Ran BVTs.

Change-Id: I4e3c97a06c4348c31d610957af6e74cf953ad5c5
2011-08-22 16:32:27 -07:00
Mahesh 826f31619c Merge "Trivial - do not install java if it already exists" 2011-08-22 23:31:52 +00:00
Mahesh 146e6cb179 Merge "Cleanup deployment config file handling + some sample multihost deployment config files" 2011-08-22 23:14:38 +00:00
Patrick Armstrong 71b25effbf Add libpg-dev package to the ruby recipe so pg gem can be installed.
Fixes problem where gem complains that the pg_config isn't available.

Change-Id: I1463e2139c4c79fdab8dcc4037bc1ae9386f204e
2011-08-22 15:20:50 -07:00
Mahesh 2def5489b3 Trivial - do not install java if it already exists
Fix for issue cf-135. Usually the pakcage command does the right thing but that
would only work if the same version of java is installed, if openjdk or some
other flavour is installed the package command fails misreably in this case
because it cant find the right repo.

Change-Id: I1aef325e557d338141e68dbd91a070b438f62563
2011-08-22 09:10:11 -07:00
Mahesh 4dda4c0554 Misc simple bug fixes
bin/vcap - fix a bug where the specified config file was not being used to
lookup properties.

bin/vcap_dev_setup - check for git clone failures

job_manager.rb - remove postgresql as a services

patch 2 - fix $configdir => $config_dir

Change-Id: Ie0214ce340f62f585f6233a7c7de1e78cc6e1ad8
2011-08-18 19:21:11 -07:00
Mahesh addd8f66c5 Cleanup deployment config file handling + some sample multihost deployment config files
The deployment config file doesnt need to be an .erb file anymore. Removed some
old code that was using it as an erb file. Also remove the old config samples in
deployments/multihost.

patch 3
Added: sample config files for multihost redis

patch 4
Remove more old/outdated sample files

patch 5
Hit myself on the head.(Added white space remover to vi)

Change-Id: I402e5de08eb9a1fa26c6489ca138d5da7229cf14
2011-08-18 19:17:04 -07:00
Mahesh 59983692da Multi host part 2 + changes to allow deployment like bash < <(curl vcap_dev_setup_url)
Change
  This review has changes related to the following 3 things.
  1. Move all the default config (that was embeded in
      vcap_dev/vcap_dev_setup/job_manager) into chef cookbooks.
  2. Add postgres CCDB.
  3. Multi host setup for services and dea. This meant separating service
  gateway from service nodes. To this effect we added a service gateway role.

Overall a lot of files have changed, most of those changes are related to
moving all the default config values from the various wrapper scripts to the
cookbooks, especially the new cookbook called deployment which is the holding
place for all the deployment related config options.

* dev_setup/bin/vcap:
  Added vcap to dev_setup/bin instead of just changing bin/vcap. The reason for
  this is that opensource CF code will not be in sync with the
  private repo and internal testing of CF dev_setup scrips would not work if it
  relied on the version of vcap in the opensource repo i.e. bin/vcap. So now we
  just package vcap with dev_setup.

* vcap_dev
  * Since all defaults are now maintained in chef scripts. The chef "deployment"
  * role/recipe creates a deployment info file that is consumed by this vcap_dev
  * script.
  * The vcap_dev_setup file now saves the list of components that were installed
    for a deployment. This script only starts the components included in that
    list.
  * Uses the vcap binary from dev_setup/bin

* vcap_dev_setup
  Moved a bunch of directory creating code to the deployment cookbook

* Added a CCDB role/recipe.
  * Creates and Configures the CC postgres database.

* Added deployment cookbook
  * Moves all the comon directory creation code here. Note, we should go back
    and see if we really do need all these various directories and probably come
    up with a well designed directory layout.

Testing:
* Ran BVTS. Lift BVT failure needs investigating (I will fix/get to the bottom
  of it before i submit this change)
* Tested the following multi host setup.
  1. Ran mysql database with mysql node on 2 VMs. On a 3rd VM ran everything
  else. Verified that BVTs passed.
  2. Ran dea on 2 different VMs. Ran everything else on a 3rd VM. Verified
  that BVTs passed.

    Note: I have only tested the multihost setup with mysql. I will test mongodb
    and redis before submitting this change, I expect those to run without any
    glitches.

Change-Id: I6a084be09a81bf920eebc62be8d7aa6625cc17e9
2011-08-16 22:54:44 -07:00
Mahesh 74518d71de Simple change to fix deployments that should not download vcap repo
Setting a default value for REVISION was incorrect. nil is the right default for
this property.

Change-Id: Iaf2d636cb508c4e3469f479663f9ade8ecf9f895
2011-08-09 11:40:57 -07:00
Mahesh ff4c25516b Multi host setup scripts
All deployments (multi host and single host) are driven through a templated
config file. Look at dev_setup/deployments/sample* for an example of what this
config file looks like. There is sufficient documentation inside the configs.
But at a high level the user specifes "jobs" to "install" and jobs that are
"installed". The "installed" jobs have properties associated with them which are
used by jobs that are in the "install" list. e.g. nats could be an installed job
and its properties like host/port will be used by the jobs in the install list.
  The deployment code now goes through this config file, does sanity checking to
verify valid job names, valid properties etc. It leverages "rake" to manage
dependencies between jobs, look at dev_setup/lib/job_*. So we enforce that all
dependent jobs for a given job are either in the "installed" list or in the
"install" list.  Once all job specs are verified, we generate the chef runlist
on the fly and the deployment proceeds to install the required components using
chef.

NOTE:
1. For now, multi host service deployment is limited to only selecting a service
say "redis" and the scripts will install the service node, gateway and the redis
software itself on the same host. We can add more flexibility to this later.
2. For now, we use roles to enforce chef recipe dependencies. It seems to be
working well for what we have right now and I like the fact that there is one
location that maintains the chef dependencies for a given component.
3. For now, not all configurations of multi host are tested. In fact, I have
only
verified NATS. The config file template changes for all the other components
will be added in later changes. e.g. with this change you cannot run ccdb on a
separate host and expect cloud controller to work. But the changes to make it
work are more about adding the right templated fields and testing those changes.

Testing Done: I have verified that I can install "nats" on one box and the rest
of the components on a different box and things work fine.

Change-Id: I165b01fd65e4283748cf2cf9b2438369ae6332ce
2011-08-03 13:54:48 -07:00
Mahesh ff543c0f03 Templates for CF config files. Also change deployment config from json to yml.
Added template files for all cf components including services.
Add comments to the deployment yaml config file. Cleanup some of the scripts.

Change-Id: I9209749ab9ca50a2bd894189c571e1b4c33bc77b
2011-07-29 11:46:37 -07:00
Mahesh b088a41bcf More license fixes
Change-Id: I74502d897bce163486755662a39fc3ce733030f5
2011-07-22 14:50:57 -07:00
Mahesh 2e24f60ad2 Fix license headers
Change-Id: I0d0ff721fc180bc0650c65964557a435638f8c89
2011-07-22 14:28:18 -07:00
Mahesh 2e1a5b8cfd Rewrite chef recipes from scratch.
Remove the stock recipes downloaded from opscode website. These were all
written from scratch.

Testing Done: BVT tests

Change-Id: Ibf2cc130e1c80941173ceba3dd4d5574b20d7c14
2011-07-21 16:13:41 -07:00
Mahesh e0b834702f Chef scripts to deploy cloud foundry
This is part 1 of what I think will be a 3 part change. This change adds the
basic chef recipes to deploy cloudfoundry on a single host. The major change is
to install ruby1.8 and ruby1.9 into a configurable directory. As a result I
added a wrapper script to invoke vcap start that sets up the ruby paths
appropriately before starting indivdual components. Note, these changes do not
download the vcap repo (I will add that in a later change).

Most of the chef recipes were downloaded from the opscode website. Some of them
have been modified to meet our requirements.

Usage:
1.  run dev_setup/bin/vcap_dev_setup to install all the components required
by cloud foundry
2.  run dev_setup/bin/vcap_dev {start, stop, restart} to start cloud foundry
components.

Testing: Installed a base Ubuntu image, ran bvts on cloud foundry installed
using these new scripts.

Change-Id: I22cf25131ae8f8ab725408521a44401578eceedd
2011-07-20 13:46:59 -07:00