Configuration

Deployfile Searching Strategy

Here is the algorithm which Fapistrano find deployfile:

  • Read system environment variable FAP_APP and then find deployfile by reading another system environment varialble %(FAP_APP)s_DEPLOYFILE, EXAMPLE_DEPLOYFILE in the assuming case:

    $ export FAP_APP=EXAMPLE
    $ export EXAMPLE_DEPLOYFILE=/path/to/example/deploy.yml
    $ fap release -s production
    
  • If FAP_APP does not exist, Fapistrano will try to load deployfile by –deployfile / -d option:

    $ fap --deployfile /path/to/example/deploy.yml release -s production
    
  • If both two variables listed above are missing, Fapistrano will try to load default deployfile deploy.yml in current workong dir:

    $ ls
    deploy.yml
    $ fap release -s production
    

Configuration Loading Strategy

Here is the algorithm which Fapistrano load configuration items:

  • Read command line options, with key turning - into _. NOTICE: key must exists in fabric env, Fapistrano default env or deploy.yml:

    $ fap release -s production --current-release=/var/www/example
    
  • Read Configs defined in stage_role_configs. In below case, Fapistrano will use path defined in stage_role_configs/stage/app/current_release:

    $ tail -n5 deploy.yml
    stage_role_configs:
      stage:
        app:
          current_release: /var/www/example-staging
    current_release: /var/www/example-production
    $ fap release -s stage
    
  • Read Configs defined in deploy.yml not not in stage_role_configs.:

    $ tail -n5 deploy.yml
    stage_role_configs:
      stage:
        app:
          current_release: /var/www/example-staging
      production:
        app:
    current_release: /var/www/example-production
    $ fap release -s production
    

Value Formatting

All configuration item values can be defined in Python string template format with a keyword inside.

For instance, you have an app_name variable and a path variable defined like this:

app_name: example
path: /var/www/%(app_name)s

Variable path will be formatted to /var/www/example before running task.

NOTICE: Currently only string value are supported.

Configuration Items

The following variables are used for fabric:

  • user
  • hosts

The following variables are used for Fapistrano:

  • project_name
  • app_name
  • path
  • current_path
  • releases_path
  • shared_path
  • new_release
  • release_path,
  • linked_files, list, default [].
  • linked_dirs, list, default [].
  • stage_role_configs, dict.
  • keep_releases, integer, default 5.

Additional configurations are defined by Fapistrano plugins.