/engineyard

Deploy to Engine Yard Cloud from the command line

Primary LanguageRubyMIT LicenseMIT

Install

Install engineyard like any other ruby gem:

gem install engineyard

Note: Don’t add engineyard to your application’s Gemfile. The engineyard gem is not made to be a part of your application and may cause version conflicts with other parts of rails.

Login

The first command you run will notice that you are not logged in and will ask you for your AppCloud email and password.

Configuration

The ey.yml file allows options to be saved for each environment to which an application is deployed. Here’s an example ey.yml file in RAILS_ROOT/config/ey.yml:

$ cat config/ey.yml
---
environments:
  env_production:
    migrate: false
    migration_command: rake fancy:migrate
    branch: deploy
    default: true   # make this environment default

This ey.yml file will turn off default migrations, set the default command to “rake fancy:migrate” and set the default deploy branch to “deploy”.

Commands

Command:

ey deploy

Options:
  -r, --branch, --tag, [--ref=REF]          # Git ref to deploy. May be a branch, a tag, or a SHA.
      [--ignore-bad-master]                 # Force a deploy even if the master is in a bad state
  -v, [--verbose]                           # Be verbose
  -a, [--app=APP]                           # Name of the application to deploy
  -m, [--migrate=MIGRATE]                   # Run migrations via [MIGRATE], defaults to 'rake db:migrate'; use --no-migrate to avoid running migrations
      [--ignore-default-branch]             # Force a deploy of the specified branch even if a default is set
  -e, [--environment=ENVIRONMENT]           # Environment in which to deploy this application
  -c, [--account=ACCOUNT]                   # Name of the account in which the environment can be found
      [--extra-deploy-hook-options key:val] # Additional options to be made available in deploy hooks (in the 'config' hash)

Description:
  This command must be run with the current directory containing the app to be
  deployed. If ey.yml specifies a default branch then the ref parameter can be
  omitted. Furthermore, if a default branch is specified but a different
  command is supplied the deploy will fail unless --ignore-default-branch
  is used.

  Migrations are run by default with 'rake db:migrate'. A different command
  can be specified via --migrate "ruby do_migrations.rb". Migrations can also
  be skipped entirely by using --no-migrate.

Command:

ey environments

Options:
  -s, [--simple]
  -a, [--all]

Description:
  By default, environments for this app are displayed. The --all option will display all environments, including those for this app.

Command:

ey logs

Options:
  -e, [--environment=ENVIRONMENT]  # Environment with the interesting logs
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  Displays Engine Yard configuration logs for all servers in the environment. If recipes were uploaded to the environment & run, their logs will also be displayed beneath the
  main configuration logs.

Command:

ey rebuild

Options:
  -e, [--environment=ENVIRONMENT]  # Environment to rebuild
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  Engine Yard's main configuration run occurs on all servers. Mainly used to fix failed configuration of new or existing servers, or to update servers to latest Engine Yard stack
  (e.g. to apply an Engine Yard supplied security patch).

  Note that uploaded recipes are also run after the main configuration run has successfully completed.

Command:

ey rollback

Options:
  -v, [--verbose]                  # Be verbose
  -a, [--app=APP]                  # Name of the application to roll back
  -e, [--environment=ENVIRONMENT]  # Environment in which to roll back the application
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  Uses code from previous deploy in the "/data/APP_NAME/releases" directory on remote server(s) to restart application servers.

Command:

ey recipes apply

Options:
  -e, [--environment=ENVIRONMENT]  # Environment in which to apply recipes
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  This is similar to 'ey rebuild' except Engine Yard's main configuration step is skipped.

Command:

ey recipes upload

Options:
  -e, [--environment=ENVIRONMENT]  # Environment that will receive the recipes
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  The current directory should contain a subdirectory named "cookbooks" to be uploaded.

Command:

ey recipes download

Options:
  -e, [--environment=ENVIRONMENT]  # Environment for which to download the recipes
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  The recipes will be unpacked into a directory called "cookbooks" in the current directory.

  If the cookbooks directory already exists, an error will be raised.

Command:

ey web enable

Options:
  -v, [--verbose]                  # Be verbose
  -a, [--app=APP]                  # Name of the application whose maintenance page will be removed
  -e, [--environment=ENVIRONMENT]  # Environment on which to take down the maintenance page
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Remove the maintenance page for this application in the given environment.

Command:

ey web disable

Options:
  -v, [--verbose]                  # Be verbose
  -a, [--app=APP]                  # Name of the application whose maintenance page will be put up
  -e, [--environment=ENVIRONMENT]  # Environment on which to put up the maintenance page
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  The maintenance page is taken from the app currently being deployed. This means that you can customize maintenance pages to tell users the reason for downtime on every
  particular deploy.

  Maintenance pages searched for in order of decreasing priority: * public/maintenance.html.custom * public/maintenance.html.tmp * public/maintenance.html *
  public/system/maintenance.html.default

Command:

ey ssh

Options:
      [--utilities=one two three]  # Run command on the utility servers with the given names. If no names are given, run on all utility servers.
      [--app-servers]              # Run command on all application servers
      [--db-servers]               # Run command on the database servers
      [--db-master]                # Run command on the master database server
  -a, [--all]                      # Run command on all servers
      [--db-slaves]                # Run command on the slave database servers
  -e, [--environment=ENVIRONMENT]  # Environment to ssh into
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  If a command is supplied, it will be run, otherwise a session will be opened. The application master is used for environments with clusters. Option --all requires a command to
  be supplied and runs it on all servers.

  Note: this command is a bit picky about its ordering. To run a command with arguments on all servers, like "rm -f /some/file", you need to order it like so:

  $ ey ssh "rm -f /some/file" -e my-environment --all

Command:

ey launch

Options:
  -e, [--environment=ENVIRONMENT]  # Environment to ssh into
  -c, [--account=ACCOUNT]          # Name of the account in which the environment can be found

Description:
  Open the application in a browser.

Command:

ey whoami

Description:
  Who am I logged in as?

Command:

ey login

Description:
  Log in and verify access to EY Cloud. Use logout first if you need to switch user accounts.

Command:

ey logout

Description:
  Remove the current API key from ~/.eyrc or env variable $EYRC