README.md in open-dock-0.0.12 vs README.md in open-dock-0.0.13

- old
+ new

@@ -21,86 +21,102 @@ Or install it yourself as: $ gem install open-dock -## Usage: Provision with OPS command -OPS command is focused to cover first Provision configurations for a the Operations of your infrastructure. -You can create an infrastructure project (like me [/ops](https://github.com/jlebrijo/ops)) +## Initialize project -``` -mkdir ops && cd ops -rbenv local 2.1.2 -git init -``` +TODO: `ops init` to create folder structure and example files -Create a Gemfile: - -``` -source 'https://rubygems.org' - -gem 'open-dock' - -# OPTIONAL: Add next gems if you want to integrate with Chef as Configuration management tecnology -gem 'knife-solo' -gem 'librarian-chef' -gem 'foodcritic' -``` - -And: `bundle install` - -To avoid `bundle exec` repfix: `bundle install --binstubs .bundle/bin` - -Or integrate it within your Chef infrastructure project. Just add the gem to your Gemfile. - -### Folder Structure - -TODO: `ops init` to create this structure - Structure: ``` providers - digitalocean.yml + digital_ocean.yml + google_cloud.yml hosts example.com.yml containers example.com.yml ``` -#### Provider file syntax +## Configure PROVIDER +`ops list` command will list all providers suported by this gem. + TODO: Create more providers (aws, linode, gcloud, ...) +### Digital Ocean + For a Digital Ocean provider create a file (ops/providers/digitalocean.yml) with your account API key: ```yml token: a206ae60dda6bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcf0cbf41 ``` Token can be activated in your DigitaOcean console > Apps & API > Generate new token. Be sure to give write premissions. -#### Host file syntax +### Google Cloud +To configure Google Cloud provider create a file (ops/providers/digitalocean.yml) with these params: + +```yml +google_client_email: "850xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxtauvbl@developer.gserviceaccount.com" +google_project: "project_name" +google_key_location: "path_to_your_p12_file" +``` + +You can see how to create ‘google_key_location’ and ‘google_client_email’ at https://developers.google.com/accounts/docs/OAuth2ServiceAccount#creatinganaccount + +## Configure HOST + +With these files you can configure your instances/servers/droplets/ships on every provider you have configured in the last point. + +### Digital Ocean Host + For a Digital Ocean host we can make the following file (ops/hosts/example.com.yml): ```yml +provider: digital_ocean user: core # User to connect the host # Values to configure DigitalOcean machine size: 1gb region: ams3 image: coreos-stable ssh_keys: - e7:51:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:88:57 ``` -And create the host: `ops create host example.com` +Helpful commands: -### Containers file syntax +* `ops list digital_ocean` list all possible parameter values to use in the yml file +* `ops create example.com` will create your host +### Google Cloud Host + +For a Google Cloud host we can make the following file (ops/hosts/example.com.yml): + +```yml +provider: google_cloud +user: core # User to connect the host +# Values to configure GoogleCloud machine +machine_type: g1-small +zone_name: europe-west1-b +public_key_path: ~/.ssh/id_rsa.pub +source_image: coreos-stable-444-5-0-v20141016 +disk_size_gb: 10 +``` + +Helpful commands: + +* `ops list google_cloud` list all possible parameter values to use in the yml file +* `ops create example.com` will create your host + +##Configure hosted CONTAINERS (Docker) + In this file we can configure all containers to run in the host provided in the name: ```yml www: image: jlebrijo/prun @@ -123,32 +139,64 @@ # here you can create other containers # db: # image: ubuntu/postgresql ``` -Create containers at host: `ops ship host example.com` +`ops ship example.com` will create all containers configured on 'containers/example.com.yml' file -### TODO: Configuration with Chef +## TODO: Configure Containers (are nodes, with Chef) Configuration with chef commands * `ops configure CONTAINER_NAME HOST_NAME`: configure with chef a container in host. Here you need to install knife-solo gem. * knife solo cook [container_user]@[HOST_NAME] -p [container_ssh_port] -### Commands +## Commands Create/delete domain names, create/delete hosts and ship/unship hosts: +* TODO: `ops init` initialize needed folders and example files * `ops create HOST_NAME` create the host defined by the name of the file in the 'ops/hosts' folder. * `ops delete HOST_NAME` * TODO: `ops recreate HOST_NAME` delete/create the host. +* `ops exec HOST_NAME "COMMAND"` execute any command on a host remotely (i.e. ops exec example.com 'docker ps -a') * `ops ship HOST_NAME` run the containers in the host. * `ops unship HOST_NAME` * TODO: `ops reship HOST_NAME` unship/ship all containers from host. * TODO: `ops configure CONTAINER_NAME HOST_NAME` configure container with chef. +## Create your infrastructure project (/ops) +OPS command is focused to cover first Provision configurations for a the Operations of your infrastructure. + +You can create an infrastructure project (like me [/ops](https://github.com/jlebrijo/ops)) + +``` +mkdir ops && cd ops +rbenv local 2.1.2 +git init +``` + +Create a Gemfile: + +``` +source 'https://rubygems.org' + +gem 'open-dock' + +# OPTIONAL: Add next gems if you want to integrate with Chef as Configuration management tecnology +gem 'knife-solo' +gem 'librarian-chef' +gem 'foodcritic' +``` + +And: `bundle install` + +To avoid `bundle exec` repfix: `bundle install --binstubs .bundle/bin` + +Or integrate it within your Chef infrastructure project. Just add the gem to your Gemfile. + ## Contributing 1. Fork it ( https://github.com/[my-github-username]/open-dock/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) @@ -167,6 +215,12 @@ ### v0.0.11 * Remove create/delete domain commands * Remove "host" word from all commands -* Remove /ops folder from providers, hosts and containers subfolders +* Remove /ops folder from providers, hosts and containers subfolders + +### v0.0.13 + +* Added Google Cloud as provider +* Now providers files are called underscored: digital_ocean, google_cloud .... +* In hosts YAML files we should include which provider will be built (i.e. provider: digital_ocean) \ No newline at end of file