cookbook 'osrm', '= 5.3.0'
osrm
(17) Versions
5.3.0
-
Follow2
Installs/Configures osrm
cookbook 'osrm', '= 5.3.0', :supermarket
knife supermarket install osrm
knife supermarket download osrm
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
- (Uses the map data from Geofabrik)
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!
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write you change
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- 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 todownload_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
5.3.0 failed this 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