README.md in dev-lxc-2.0.2 vs README.md in dev-lxc-2.0.3

- old
+ new

@@ -1,7 +1,18 @@ -# dev-lxc +# dev-lxc 2.0 is Available +Here are some of the new features which provide a significantly simplified and streamlined usage. + +* mixlib-install library is used to automatically manage a cache of product packages +* Genuine container snapshot management (make as many snapshots as you want) +* New "nodes" server type which auto configures nodes for a Chef Server in the same cluster + * Removed all xc-... bash functions because the new "nodes" server type replaces this functionality +* Able to build Chef Server HA 2.0 cluster using chef-backend +* Updated and simplified READMEs + +# dev-lxc Description + A tool for building Chef Server clusters and Chef Analytics clusters using LXC containers. Using [ruby-lxc](https://github.com/lxc/ruby-lxc) it builds servers and optionally installs and configures many Chef products including a standalone Chef Server or tier Chef Server cluster composed of a backend and multiple frontends with round-robin DNS resolution. @@ -21,10 +32,11 @@ 5. ruby-lxc - Ruby bindings for liblxc 6. YAML - Simple, customizable definition of clusters; No more setting ENV variables 7. Build process closely follows online installation documentation 8. Snapshots - Snapshots are created during the cluster's build process which makes rebuilding a cluster very fast. +9. mixlib-install library is used to automatically manage a cache of product packages Its containers, standard init, networking and build process are designed to be similar to what you would build if you follow the online installation documentation so the end result is a cluster that is relatively similar to a more traditionally built cluster. @@ -187,25 +199,32 @@ node-1.lxc: products: chef: ``` +The dev-lxc.yml config file is very customizable. You can add or remove mounts, products or servers, +change ip addresses, server names, the base_container and more. + As you can see there are four server types represented by five servers. 1. chef-server - chef.lxc 2. analytics - analytics.lxc 3. supermarket - supermarket.lxc 4. nodes - node-1.lxc +#### Global Settings + The global settings used by each of the server types are the `base_container`, a list of `mounts` and a list of `ssh-keys`. These settings are described in the config comments. Be sure to set `base_container` in the `dev-lxc.yml` to an existing container's name. This container will be cloned to create each container in the cluster. If you don't already have a container to use as a `base_container` then you can follow the instructions in the [Create a dev-lxc Base Container section](https://github.com/jeremiahsnapp/dev-lxc#create-a-dev-lxc-base-container) to create one. +#### Server Specific Settings + It is possible to define different values for `base_container`, `mounts` or `ssh-keys` for a particular server type as you can see in the following snippet. ``` nodes: @@ -215,10 +234,12 @@ ``` IP addresses from the range 10.0.3.150 - 254 can be assigned to the servers. If an IP address is not specified then a dynamic IP address is assigned when the server starts. +#### mixlib-install Library Automatically Manages a Cache of Product Packages + dev-lxc uses the [mixlib-install](https://github.com/chef/mixlib-install) library to download Chef products to a cache in `/var/dev-lxc` in the host VM. This cache is automatically mounted into each server when it starts. A list of Chef products to be installed can be defined for each server using [product names that mixlib-install understands](https://github.com/chef/mixlib-install/blob/master/PRODUCT_MATRIX.md). @@ -249,10 +270,12 @@ products: chefdk: package_source: /root/chefdk_0.16.1-1_amd64.deb ``` +#### Automatic Integration Between Servers + dev-lxc knows how to automatically configure Chef Server standalone, Chef Server tier topology, Chef Server HA 2.0 as well as Chef Client, Analytics, Compliance and Supermarket. If an Analytics server or Supermarket server is defined in the same config file as a Chef Server then each server will automatically be integrated with that Chef Server. @@ -272,15 +295,12 @@ validation_key: /hosted-chef/chef-repo/.chef/demo-validator.pem products: chef: ``` -The dev-lxc.yml config file is very customizable. You can add or remove mounts, products or servers, -change ip addresses, server names, the base_container and more. +### Cluster status -#### Cluster status - Run the following command to see the status of the cluster. ``` dev-lxc status ``` @@ -295,11 +315,11 @@ supermarket.lxc NOT_CREATED node-1.lxc NOT_CREATED ``` -#### cluster-view, tks, tls commands +### cluster-view, tks, tls commands The dev-lxc-platform comes with some commands that create and manage helpful tmux/byobu sessions to more easily see the state of a cluster. Running the `cluster-view` command in the same directory as a `dev-lxc.yml` file @@ -329,11 +349,11 @@ I recommend switching to a different running tmux/byobu session before killing the current tmux/byobu session. Otherwise you will need to reattach to the remaining tmux/byobu session. Use the keyboard shortcuts Alt-Up/Down to easily switch between tmux/byobu sessions. -#### Start cluster +### Start cluster Starting the cluster the first time takes awhile since it has a lot to download and build. ``` dev-lxc up @@ -344,11 +364,11 @@ The `knife-opc` plugin is installed in the embedded ruby environment of the Private Chef and Enterprise Chef server to facilitate the creation of the test org and user. -#### Create chef-repo +### Create chef-repo Create a local chef-repo with appropriate knife.rb and pem files. Use the `-p` option to also get pivotal.pem and pivotal.rb files. @@ -363,75 +383,75 @@ ``` cd chef-repo knife client list ``` -#### Stop and start the cluster +### Stop and start the cluster ``` dev-lxc halt dev-lxc up ``` -#### Run arbitrary commands in each server +### Run arbitrary commands in each server ``` dev-lxc run-command chef 'uptime' ``` -#### Attach the terminal to a server +### Attach the terminal to a server Attach the terminal to a server in the cluster that matches the REGEX pattern given. ``` dev-lxc attach chef ``` -#### Create a snapshot of the servers +### Create a snapshot of the servers Save the changes in the servers to snapshots with a comment. ``` dev-lxc halt dev-lxc snapshot -c 'this is a snapshot comment' ``` -#### List snapshots +### List snapshots ``` dev-lxc snapshot -l ``` -#### Restore snapshots +### Restore snapshots Restore snapshots by name. Leave out the snapshot name or specify `LAST` to restore the most recent snapshot. ``` dev-lxc snapshot -r dev-lxc up ``` -#### Destroy snapshots +### Destroy snapshots Destroy snapshots by name or destroy all snapshots by specifying `ALL`. Leave out the snapshot name or specify `LAST` to destroy the most recent snapshots. ``` dev-lxc snapshot -d ``` -#### Destroy cluster +### Destroy cluster Use the following command to destroy the cluster's servers. ``` dev-lxc destroy ``` -#### Use commands against specific servers +### Use commands against specific servers You can also run most of these commands against a set of servers by specifying a regular expression that matches a set of server names. ``` dev-lxc <subcommand> [SERVER_NAME_REGEX]