Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status

RSS

osrm (17) Versions 5.3.0

Installs/Configures osrm

Policyfile
Berkshelf
Knife
cookbook 'osrm', '= 5.3.0', :supermarket
cookbook 'osrm', '= 5.3.0'
knife supermarket install osrm
knife supermarket download osrm
README
Dependencies
Changelog
Quality 0%

OSRM cookbook

This cookbook can do the following things for you

  • Install and configure the OSRM route daemon
  • Download, extract, contract map data and keep them up to date

To use the following recipes and providers, add the following to your metadata.rb

depends 'osrm'

Recipes

default

Runs install_git

install_git

Clone and install the latest HEAD from Project-OSRM to node['osrm']['target'] (default /opt/osrm).

Providers

osrm_map

osrm_map is a shortcut that calls the other map providers in the following order

  • osrm_map_download
  • osrm_map_extract
  • osrm_contract

This example downloads, extracts and contracts the osrm map for Germany:

osrm_map 'germany'

The following additional attributes are allowed:

osrm_map 'europe'
  map_dir         '/srv/my_map_data'     # Where to put the maps (defaults to '/opt/osrm-data')

  # Path to the map (osm.pbf or osm.bz2) to use.
  # This is filled in automatically if the file is downloaded.
  # Only use it in case you are using a custom map.
  map             '/path/to/map.osm.bpf'

  profile         'car'                  # Profile to use (defaults to 'car')
  profile_dir     '/srv/my_profiles'     # Where to look for profiles (.lua files)
  extract_command 'osrm-extract'         # Path to osrm-extract binary
  contract_command 'osrm-contract'         # Path to osrm-contract binary
  user            'my_osrm_user'         # User to run commands as
  cwd             '/srv/my_osrm'         # Set working directory for osrm-extract
  threads         5                      # How many threads to use (defaults to number of cpu cores)
  cleanup         false                  # Do not cleanup .osrm and .osrm.restrictions after preparing
  timeout         3600                   # Timeout in seconds for osrm-extract/osrm-contract. Defaults to 24h
  stxxl_size      150000                 # Size (in MB) of stxxl temporary file. Dynamically allocated by default
  stxxl_file      '/tmp/stxxl'           # Location of stxxl temporary file. Defaults to '/var/tmp/stxxl'

  # The files checksum can also be checked (defaults to true)
  # When set to true, it will use the default checksum set in the attributes (if existent)
  # When set to false, it doesn't check the checksum
  # When set to an ftp:// or http:// URL, retrieve the file and use the checksum in its content
  # When set to a string, use it as the checksum
  checksum        'http://url.to/checksum.md5'
end

osrm_map_download

Downloads map data for the specified region.

osrm_map_download 'planet'
osrm_map_download 'europe'
osrm_map_download 'north-america'
osrm_map_download 'germany'
osrm_map_download 'us-west'

For a full list of supported regions, take a look at attributes/regions.rb. If necessary, it can be easily extended to support even more, feel free to file a pull request!

By default, the provider automatically re-downloads the file if it was changed on the server. You can prevent this behaviour when using the :download_if_missing action:

osrm_map_download 'europe' do
  action :download_is_missing
end

Furthermore, you can specify the following attributes:

osrm_map_download 'us-west' do
  user     'my_osrm_user'
  map_dir  '/srv/my_map_data' # Where to put the downloaded files (defaults to '/opt/osrm-data')

  # Manually specify url to download map from.
  # Defaults to the URL in the attributes (available for most regions)
  url      'http://my.geoserver.com/map.osm.bpf'

  # The files checksum can also be checked (defaults to false)
  # When set to true, it will use the default checksum set in the attributes
  # When set to false, it doesn't check the checksum
  # When set to an ftp:// or http:// URL, use its contents as a checksum
  # When set to a string, use it as the checksum
  checksum 'http://url.to/checksum.md5'
end

osrm_map_extract

Extracts downloaded map data, using osrm-extract.

Example:

osrm_map_extract 'europe'

The following attributes are supported:

osrm_map_extract 'europe' do
  map_dir     '/srv/my_map_data'  # Use the same directory you used in osrm_map_download

  # Path to the map (osm.pbf or osm.bz2) to use.
  # This is set automatically (via attributes),
  # if you use a map downloaded by osrm_map_download.
  # Only use it in case you are using a custom map.
  map        '/path/to/map.osm.bpf'

  profile     'car'               # Profile to use (defaults to 'car')
  profile_dir '/srv/my_profiles'  # Where to look for profiles (.lua files)
  command     'osrm-extract'      # Binary to use
  user        'my_osrm_user'
  cwd         '/srv/my_osrm'      # Set working directory for osrm-extract
  threads     5                   # How many threads to use (defaults to number of cpu cores)
  timeout     3600                # Timeout in seconds for osrm-extract. Defaults to 24h
  stxxl_size  150000              # Size (in MB) of stxxl temporary file. Dynamically allocated by default
  stxxl_file  '/tmp/stxxl'        # Location of stxxl temporary file. Defaults to '/var/tmp/stxxl'
end

osrm_map_contract

contracts extracted map data, using osrm-contract.

Example:

osrm_map_contract 'europe'

The following attribtues are supported:

osrm_map_contract 'europe' do
  map_dir     '/srv/my_map_data'  # Use the same directory you used in osrm_map_download

  # Path to the map (osm.pbf or osm.bz2) to use.
  # This is set automatically (via attributes),
  # if you use a map downloaded by osrm_map_download.
  # Only use it in case you are using a custom map.
  map        '/path/to/map.osm.bpf'

  profile     'car'               # Profile to use (defaults to 'car')
  command     'osrm-contract'      # Binary to use
  user        'my_osrm_user'
  cwd         '/srv/my_osrm'      # Set working directory for osrm-contract
  threads     5                   # How many threads to use (defaults to number of cpu cores)
  cleanup     false               # Do not cleanup .osrm and .osrm.restrictions after preparing
  timeout     3600                # Timeout in seconds for osrm-extract. Defaults to 24h
end

osrm_node

Sets up and starts the node-osrm service.

osrm_node 'europe' do
  profile  'car'               # Profile for which to start the daemon
  user     'osrm-node'         # User to run the daemon as
  port     5000                # TCP port to bind to
  listen   '127.0.0.1'         # TCP address to listen on
  map_base '/path/to/map_base' # Base path of the (contracted) map
                               # e.g. '/opt/osrm-data/europe/car/europe-lastest'
                               # (skip the file extention, like .edges or .osm.bpf)
  shared_memory false          # Use a shared-memory segment (created by osrm-datastore, see next provider)
end

osrm_routed

Sets up and starts osrm-routed (using upstart) for the specified region.
NOTE: osrm_routed is not recommended for production usage. Use the osrm_node provider instead to deploy node-osrm.

Example:

osrm_routed 'europe'

The following attributes are supported:

osrm_routed 'europe' do
  service_name 'osrm-routed-%s'    # %s will be replaced with the selected region and profile
  profile      'car'               # Profile for which to start the daemon
  user         'osrm-routed'       # User to run the daemon as

  daemon       '/path/to/osrm-routed'

  map_dir      '/srv/my_map_data'  # Use the same directory you used in osrm_map_download)
  map_base     '/path/to/map_base' # Base path of the (contracted) map
                                   # e.g. '/opt/osrm-data/europe/car/europe-lastest'
                                   # (skip the file extention, like .edges or .osm.bpf)

  threads      16                  # How many threads to use (defaults to number of cpu cores)

  port         5000                # TCP port to bind to
  listen       '127.0.0.1'         # TCP address to listen on

  shared_memory false              # Use a shared-memory segment (created by osrm-datastore, see next provider)
end

osrm_datastore

Loads a specified map into memory

Example:

osrm_datastore 'europe'

The following attributes are supported:

osrm_datastore 'europe' do
  profile      'car'               # Profile for which to start the daemon
  shmmax       5_000_000_000       # Memory limit in bytes. Defaults to a value that should be enough for world
  user         'osrm-routed'       # User to run the daemon as (will be created if not existent)

  command      '/path/to/osrm-datastore'

  map_dir      '/srv/my_map_data'  # Use the same directory you used in osrm_map_download)
  map_base     '/path/to/map_base' # Base path of the (contractd) map
                                   # e.g. '/opt/osrm-data/europe/car/europe-lastest'
                                   # (skip the file extention, like .edges or .osm.bpf)
end

Attributes

You can set the following attributes if you need settings that differ form the defaults

default

node['osrm']['repository'] = 'https://github.com/Project-OSRM/osrm-backend'
node['osrm']['branch'] = 'master' # use e.g. 'v0.3.5' for a stable version

node['osrm']['target'] = '/opt/osrm'
node['osrm']['map_dir'] = '/opt/osrm-data'

node['osrm']['threads'] = node['cpu']['total']

routed

node['osrm']['routed']['user'] = 'osrm-routed'
node['osrm']['routed']['service_name'] = 'osrm-routed-%s'

regions

You can add custom regions like this

node['osrm']['map_data']['your-region']['profiles'] = %w(car)
node['osrm']['map_data']['your-region']['url'] = "http://download.geofabrik.de/your-region-latest.osm.pbf"
node['osrm']['map_data']['your-region']['checksum'] = "#{node['osrm']['map_data']['your-region']['url']}.md5"

Updating

To update to a new version, set the node['osrm']['version'] and node['osrm']['node']['version'] attributes accordingly, remove the directories and rerun the recipe. If the service is running, it should not be interrupted by the process.

On major updates, the map needs to be re-extracted and re-contracted though.
Also an issue is that osrm-datastore might have to be rerun

Contributing

Pull requests are very welcome!

  1. Fork the repository on Github
  2. Create a named feature branch (like add_component_x)
  3. Write you change
  4. Write tests for your change (if applicable)
  5. Run the tests, ensuring they all pass
  6. Submit a Pull Request using Github

Dependent cookbooks

sysctl >= 0.0.0
apt >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

osrm CHANGELOG

This file is used to list changes made in each version of the osrm cookbook.

5.3.0

  • Bump default osrm-backend and node-osrm version to 5.3.0
  • Automatically restart systemd service on failure

5.2.1

  • Make sure apt-transport-https is installed
  • Add support for systemd service (used by Ubuntu 15.04 and above)

5.2.0

  • Introduce new provider osrm_node to deploy node-osrm
  • Bump default osrm-backend and node-osrm version to 5.2.2
  • Action :extract now works like :extract_if_missing, and :extract_if_missing was removed
  • Action :contract now works like :contract_if_missing, and :contract_if_missing was removed
  • Action :create now works like :create_if_missing, and :create_if_missing was removed
  • Action :download_if_missing was migrated to download_if_missing attribute

5.1.0

  • Bump default osrm-backend version to 5.1.0

5.0.2

  • Bump default osrm-backend version to 5.0.2

5.0.1

  • Bump default osrm-backend version to 5.0.1

5.0.0

  • Update to new osrm-routed api (v5)
  • Do not automatically create user in routed provider
  • Remove some unused attributes in providers

0.3.3

  • Fix download paths for U.S. states

0.3.2

  • Fix issue with map download

0.3.1

  • Pinned version to 0.4.1
  • Install osrm-datastore
  • Add workaround for port option ("Port" statement in configuration seems to be ignored in latest version)

0.3.0

  • Removed Memory option for osrm_extract. This option was removed from osrm-extract some time ago

0.2.2

  • Fix a bug in map_prepare, now uses map_dir + profile + map basename as output path

0.2.1

  • Fix a bug in map_extract, now creates the correct directory before extracting

0.2.0

  • Use status option of routed service, prevents trying to restart a already running routed
  • Add path and map_path attributes to providers, this allows local files instead of urls
  • Do not check map checksum by default (will break with default settings on custom maps otherwise)
  • Renamed map_path attribute to map_dir
  • Add map_base attribute for map_routed provider

0.1.2

  • Attribute default for cleanup set to false [map_prepare]
  • Add configuration settings for stxxl
  • Attributes overriden in wrapper cookbooks are now evaluated correctly
  • Use execute "rm -f" instead of file() { action :delete } for performance reasons
  • Increase execute timeout to 1 day and add timeout option to the following providers

    • map
    • map_extract
    • map_prepare

This is necessary for extract/prepare tasks that take longer than 1h.

  • Added chefspecs
  • Several small bugfixes

0.1.1

  • Small bugfixes

0.1.0

  • [Chris Aumann] - Initial release of osrm

Collaborator Number Metric
            

5.3.0 failed this metric

Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.

Foodcritic Metric
            

5.3.0 failed this metric

FC002: Avoid string interpolation where not required: /tmp/05b6c539b309a12acbbcc367/osrm/providers/routed.rb:52
FC002: Avoid string interpolation where not required: /tmp/05b6c539b309a12acbbcc367/osrm/providers/routed.rb:73
FC021: Resource condition in provider may not behave as expected: /tmp/05b6c539b309a12acbbcc367/osrm/providers/map.rb:24