README.md in ciinabox-ecs-0.2.1 vs README.md in ciinabox-ecs-0.2.2

- old
+ new

@@ -8,10 +8,11 @@ * [jenkins](https://jenkins.io/) * [drone](http://docs.drone.io) * [bitbucket](https://www.atlassian.com/software/bitbucket) * [hawtio](http://hawt.io/) * [nexus](http://www.sonatype.org/nexus/) + * [artifactory](https://jfrog.com/open-source/) * plus custom tasks and stacks ## Setup requires ruby 2.3+ @@ -54,97 +55,49 @@ #### User-defined parameters: ciinaboxes/ciinabox_name/config/params.yml e.g: -```ruby +```yaml log_level: ':debug' timezone: 'Australia/Melbourne' ``` #### User-defined services: If you wish to add additional containers to your ciinabox environment, you can specify them like so: ciinaboxes/ciinabox_name/config/services.yml e.g: + ```yaml ---- -services: - - jenkins: - - bitbucket: - LoadBalancerPort: 22 - InstancePort: 7999 - Protocol: TCP - - hawtio: - - nexus: + services: + - jenkins: + - bitbucket: + LoadBalancerPort: 22 + InstancePort: 7999 + Protocol: TCP + - hawtio: + - nexus: + - artifactory: + - drone: ``` - + Please note that if you wish to do this, that you also need to create a CFNDSL template for the service under templates/services, with the name of the service as the filename (e.g. bitbucket.rb) -Note the drone service requires a minimum yaml configuration of below -```yml -services: - - drone: - params: - - - VPC: - Ref: VPC - - - SubnetPublicA: - Ref: SubnetPublicA - - - SubnetPublicB: - Ref: SubnetPublicB - - - ECSSubnetPrivateA: - Ref: ECSSubnetPrivateA - - - ECSSubnetPrivateB: - Ref: ECSSubnetPrivateB - - - SecurityGroupBackplane: - Ref: SecurityGroupBackplane - - - SecurityGroupOps: - Ref: SecurityGroupOps - - - SecurityGroupDev: - Ref: SecurityGroupDev - - - SecurityGroupNatGateway: - Ref: SecurityGroupNatGateway - - - SecurityGroupWebHooks: - Ref: SecurityGroupWebHooks - - - ECSENIPrivateIpAddress: - Ref: ECSENIPrivateIpAddress - tasks: - drone-server: - env: - DRONE_OPEN: true -``` -to further configure drone ci refer to the drone ci's environment variable in the documentation http://docs.drone.io/installation/, you can add/override drone's environment variable to their corresponding yaml section (`drone-server` and `drone-agent`), example -```yml - tasks: - drone-server: - env: - DRONE_OPEN: true - DRONE_SECRET: base2services # if this value is not specified, a secure random hex will be used - drone-agent: - env: - DRONE_SECRET: base2services # if this value is not specified, a secure random hex will be used -``` - ## Getting Started To get started install `ciinabox-ecs` ruby gem ```bash $ gem install ciinabox-ecs ``` +During the setup process, you'll need to provide domain for the tools (e.g. `*.tools.example.com`) that has +matching Route53 zone in same AWS account where you are creating ciinabox. Optionally you can use local hosts file +hack in order to get routing working, but in this case usage of ACM certificates is not an option, and you'll need +to use selfsigned IAM server certificates. + ### Quick setup You can be guided through full installation of ciinabox by running `full_install` action. Interactive command line prompt will offer you defaults for most of required options. @@ -453,6 +406,88 @@ configuration key to ARN of the freshly issued ACM certificate. You can do that using `update_cert_to_acm` action ```yaml $ ciinabox-ecs update_cert_to_acm [ciinabox_name] Set arn:aws:acm:ap-southeast-2:123456789012:certificate/2f2f3f9f-aaaa-bbbb-cccc-11dac04e7fb9 as default_cert_arn +``` + +## Enabling specific services + +### Artifactory + +Just add artifactory in your `ciinabox_name/config/services.yml` +Artifactory service is routed through nginx reverse proxy, so it's not +added to ELB by default (InstancePort=0) + +```yaml +services: + - artifactory: +``` + +Defaults for artifactory are stated below, so if need be they can be overridden + +```yaml +services: + - artifactory: + ContainerImage: base2/ciinabox-artifactory:5.9.3 + ContainerMemory: 768 + ContainerCPU: 0 + InstancePort: 0 +``` + +### Drone + + +Note the drone service requires a minimum yaml configuration of below +```yml +services: + - drone: + params: + - + VPC: + Ref: VPC + - + SubnetPublicA: + Ref: SubnetPublicA + - + SubnetPublicB: + Ref: SubnetPublicB + - + ECSSubnetPrivateA: + Ref: ECSSubnetPrivateA + - + ECSSubnetPrivateB: + Ref: ECSSubnetPrivateB + - + SecurityGroupBackplane: + Ref: SecurityGroupBackplane + - + SecurityGroupOps: + Ref: SecurityGroupOps + - + SecurityGroupDev: + Ref: SecurityGroupDev + - + SecurityGroupNatGateway: + Ref: SecurityGroupNatGateway + - + SecurityGroupWebHooks: + Ref: SecurityGroupWebHooks + - + ECSENIPrivateIpAddress: + Ref: ECSENIPrivateIpAddress + tasks: + drone-server: + env: + DRONE_OPEN: true +``` +to further configure drone ci refer to the drone ci's environment variable in the documentation http://docs.drone.io/installation/, you can add/override drone's environment variable to their corresponding yaml section (`drone-server` and `drone-agent`), example +```yml + tasks: + drone-server: + env: + DRONE_OPEN: true + DRONE_SECRET: base2services # if this value is not specified, a secure random hex will be used + drone-agent: + env: + DRONE_SECRET: base2services # if this value is not specified, a secure random hex will be used ```