Skip to content

Instantly share code, notes, and snippets.

@diegopacheco
Last active November 9, 2018 21:26
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save diegopacheco/0b23e46b996431944d82e0d1992cd931 to your computer and use it in GitHub Desktop.
Save diegopacheco/0b23e46b996431944d82e0d1992cd931 to your computer and use it in GitHub Desktop.
How to Install Spinnaker on Ubuntu 14.04 AWS?

AWS Setup

1. Create AWS role called Spinnaker with proper access.
2. run aws configure and set your keys/secret.

Install Git and NVM

sudo apt-get -y install git
git clone https://github.com/spinnaker/spinnaker.git

Install Spinnaker

spinnaker/dev/install_development.sh 
spinnaker/dev/bootstrap_dev.sh 
mkdir -p $HOME/.spinnaker 
mkdir -p $HOME/.spinnaker/config
cp spinnaker/config/default-spinnaker-local.yml $HOME/.spinnaker/spinnaker-local.yml
chmod 600 $HOME/.spinnaker/spinnaker-local.yml 

Use this yaml

global:
  spinnaker:
    timezone: 'America/Los_Angeles'

providers:
  aws:
    enabled: true
    defaultRegion: us-west-2
    defaultIAMRole: spinnaker
    primaryCredentials:
      name: default
    defaultKeyPairTemplate: "{{name}}-keypair"

  azure:
    enabled: ${SPINNAKER_AZURE_ENABLED:false}
    defaultRegion: ${SPINNAKER_AZURE_DEFAULT_REGION:westus}
    primaryCredentials:
      name: my-azure-account
      clientId:
      appKey:
      tenantId:
      subscriptionId:
      packerResourceGroup:
      packerStorageAccount:
      defaultResourceGroup:
      defaultKeyVault:

  google:
    enabled: ${SPINNAKER_GOOGLE_ENABLED:false}
    defaultRegion: ${SPINNAKER_GOOGLE_DEFAULT_REGION:us-central1}
    defaultZone: ${SPINNAKER_GOOGLE_DEFAULT_ZONE:us-central1-f}
    primaryCredentials:
      name: my-google-account
      project: ${SPINNAKER_GOOGLE_PROJECT_ID:}
      jsonPath: ${SPINNAKER_GOOGLE_PROJECT_CREDENTIALS_PATH:}
      consul:
        enabled: ${SPINNAKER_GOOGLE_CONSUL_ENABLED:false}

  cf:
    enabled: false
    defaultOrg: spinnaker-cf-org
    defaultSpace: spinnaker-cf-space
    primaryCredentials:
      name: my-cf-account
      api: my-cf-api-uri
      console: my-cf-console-base-url

  kubernetes:
    enabled: ${SPINNAKER_KUBERNETES_ENABLED:false}
    primaryCredentials:
      name: my-kubernetes-account
      dockerRegistryAccount: ${providers.dockerRegistry.primaryCredentials.name}

  dockerRegistry:
    enabled: ${SPINNAKER_KUBERNETES_ENABLED:false}

    primaryCredentials:
      name: my-docker-registry
      address: ${SPINNAKER_DOCKER_REGISTRY:https://index.docker.io/}
      repository: ${SPINNAKER_DOCKER_REPOSITORY:}
      username: ${SPINNAKER_DOCKER_USERNAME:}
      # A path to a plain text file containing the user's password
      passwordFile: ${SPINNAKER_DOCKER_PASSWORD_FILE:}

  openstack:
    enabled: ${SPINNAKER_OPENSTACK_ENABLED:false}
    primaryCredentials:
      name: my-openstack-account
      authUrl: ${OS_AUTH_URL}
      username: ${OS_USERNAME}
      password: ${OS_PASSWORD}
      projectName: ${OS_PROJECT_NAME}
      regions: ${OS_REGION_NAME:RegionOne}

services:
  default:
    protocol: http    # Assume all spinnaker subsystems are using http
    host: 0.0.0.0     # Assume all spinnaker subsystems are on localhost

  redis:
    host: localhost

  cassandra:
    host: localhost

  docker:
    targetRepository: # Optional, but expected in spinnaker-local.yml if specified.

  jenkins:
    enabled: ${services.igor.enabled:false}
    defaultMaster:
      name: Jenkins # The display name for this server
      baseUrl:
      username:
      password:

  travis:
    enabled: false
    defaultMaster:
      name: ci # The display name for this server. Gets prefixed with "travis-"
      baseUrl: https://travis-ci.com
      address: https://api.travis-ci.org
      githubToken: # GitHub scopes currently required by Travis is required.


  spectator:
    webEndpoint:
      enabled: false

  stackdriver:
    enabled: false

  clouddriver:
    aws:
      udf:
        enabled: true

  igor:
    enabled: false

  deck:
    # override these values. Remember to run `reconfigure_spinnaker.sh` after.
    baseUrl: http://ec2-54-245-22-252.us-west-2.compute.amazonaws.com
    gateUrl: ${services.deck.baseUrl}:8084
    #bakeryUrl: ${services.deck.baseUrl}/rosco
    auth:
      enabled: false

  rosco:
    configDir: /opt/rosco/config/packer

  fiat:
    enabled: false

  front50:
    cassandra:
      enabled: true
    redis:
      enabled: false

    storage_bucket: ${SPINNAKER_DEFAULT_STORAGE_BUCKET:}
    gcs:
      enabled: false
    s3:
      enabled: false

  echo:
    cassandra:
      enabled: false
    inMemory:
      enabled: true

    cron:
      enabled: true

    notifications:
      mail:
        enabled: false
        host: # the smtp host
        fromAddress: #the address for which emails are sent from
      hipchat:
        enabled: false
        url: # the hipchat server to connect to
        token: #the hipchat auth token
        botName: # the username of the bot
      sms:
        enabled: false
        account: # twilio account id
        token: # twilio auth token
        from: # phone number by which sms messages are sent
      slack:
        enabled: false
        token: # the API token for the bot
        botName: # the username of the bot

cqlsh and cassandra configs

cd build
sudo apt install python-pip
pip install cqlsh==4.1.1
cqlsh -e "create KEYSPACE front50 WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1};" 
cqlsh -e "create KEYSPACE echo WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1};"

Configure env vars

sudo vim ~/.bashrc 
export GRADLE_OPTS="-Xmx1g -Xms1g" 
export DECK_HOST="0.0.0.0"
export AUTH_ENABLED=false
export AUTH=disabled
export NETFLIX_MODE=true
 export API_HOST="http://DNS:8084"

Workaround for CORS error

vim https://github.com/spinnaker/gate/blob/master/gate-web/src/main/groovy/com/netflix/spinnaker/gate/filters/CorsFilter.groovy

// Remove IF
origin = 'http://ec2-54-245-22-252.us-west-2.compute.amazonaws.com:9000'

Run Spinnaker

nvm install v7.0.0
nvm use v7.0.0
cd build/deck/
git checkout -- settings.js
npm install moment 
npm install
npm start
exec /bin/bash 
cd build/
 ../spinnaker/dev/run_dev.sh
 ../spinnaker/dev/stop_dev.sh