Configures Windows Server instances to run the Bicycle Touring Companion application and infrastructure
- windows
- netsh_firewall (>= 0.3.2)
- nssm (~> 1.2.0)
node['admin_users']- Array of admin users as {:username, :password} hashes. Defaults to[ ... ].node['server']['name']- Defaults tobtc-app-server.
- btc_infrastructure::couchdb
- btc_infrastructure::couchdb_bootstrap
- btc_infrastructure::default
- btc_infrastructure::git
- btc_infrastructure::nodejs
- btc_infrastructure::nodejs_configure
- btc_infrastructure::nodejs_deploy
This project is a Chef cookbook. It is used to provision our EC2 instances to support the Bicyle Touring Companion app. To learn move about chef, be sure to visit the Chef website.
This repository is written primarily in Ruby. Therefore, you will need to install Ruby. You will also need to install Bundler.
$ gem install bundler
After you clone this repository, make sure to install all the required gems.
$ bundle install
This cookbook is set up with Test Kitchen integration
tests. While you develop, it will be useful to test the Chef code on a virtual
instance of Windows Server 2012 R2. To do this, install both VirtualBox (a 4.x
release) and vagrant. Then, add the mwrock/Windows2012R2 box.
$ vagrant box add mwrock/Windows2012R2
Before you do anything else: Run this, to generate the .kitchen.yml:
$ bundle exec rake merge
Then, you can issue these Test Kitchen commands:
$ kitchen createwill create VirtualBox vm's for each test suite$ kitchen convergewill run our chef recipes on the vm's$ kitchen verifywill run our integration tests on the instances$ kitchen testwill perform the above the above three steps in one go, but it will run very slow.$ kitchen destroywill remove the vm's from your machine
You can be more specific with the above commands:
$ kitchen create couchdbwill only create a vm for the CouchDB suite. Do this if you are only working on CouchDB related improvements.
Test kitchen is set to run on Travis. However, EC2 instances are used. In order
for this to work, a number of environment variables must be set in
.travis.yml. In addition, these environment variables must be encrypted,
since Travis builds are made public for open source projects. Only perform
these next steps when you want to change the AWS keys backing the integration.
$ travis encrypt AWS_ACCESS_KEY_ID="${YOUR_KEY_ID_HERE}" --add$ travis encrypt AWS_SECRET_ACCESS_KEY="${YOUR_SECRET_KEY_HERE}" --add
In order for Test Kitchen to retrieve the Administrator password for the generated EC2 instances, you must also supply an EC2 keypair.
$ travis encrypt AWS_KEY_PAIR_NAME="${YOUR_KEYPAIR_NAME_HERE}" --add$ travis encrypt-file "${YOUR_KEYPAIR_PEM}" --add
kitchen-ec2 has a default bootstrap script to ensure EC2 instances are
ready to run chef remotely. Unfortunately, we are encountering an issue with
Powershell execution policy. So, we've written our own bootstrap script to
enable Powershell execution. That file is .kitchen.cloud.bootstrap.
Spot instances are used to run the integration tests. This cuts EC2 price in half. We store the desired spot price in an encrypted travis environment variable.
Before submitting PRs to this project, make sure you run any applicable style checks, unit tests, and integration tests.
$ bundle exec rake styleto run Chef's foodcritic and eventually rubocop.$ bundle exec rake docto generate thisREADME.md
Maintainer:: Adventure Cycling Association (sk.kroh@gmail.com) Source:: https://github.com/bikelomatic-complexity/btc-infrastructure Issues:: https://github.com/bikelomatic-complexity/btc-infrastructure/issues
License:: AGPL v3