Skip to content

tilezen/chef-tapalcatl

Repository files navigation

Tapalcatl Cookbook

This cookbook sets up Tapalcatl, the "metatile" server.

Requirements

recipes

  • apt
  • runit
  • user

Attributes

tapalcatl::default

Key Type Description Default
['tapalcatl']['package'] String Package to install github.com/tilezen/tapalcatl/tapalcatl_server
['tapalcatl']['cfg_file'] String Config file name tapalcatl.conf
['tapalcatl']['cfg_path'] String Config file location /etc/tapalcatl
['tapalcatl']['pattern'] JSON object

A map of Gorilla Mux patterns to objects describing the metatile storage and upstream server fallback. Each pattern maps a distinct URL path on the Tapalcatl server to a storage source, layer, upstream proxy URL and metatile size. The storage source can be either 'File' for local file storage (which takes a 'BaseDir' subkey) or 'S3' to use S3 (which takes 'Bucket', 'KeyPattern' and 'Prefix' subkeys).

The S3 KeyPattern and upstream ProxyURL are both interpolated with the variables matches against the input pattern, plus the Layer parameter. The S3 KeyPattern additionally can contain {hash} which is a partial md5 of the pattern '{layer}/{z}/{x}/{y}.{fmt}' useful for distributing the filenames.

It's complicated. See the default attributes file for examples.
['tapalcatl']['listen'] String The `interface:port` to listen on. :80
['tapalcatl']['healthcheck'] String Optional. If present, then the path to respond to healthchecks on. nil
['tapalcatl']['mime'] JSON object A map of request extensions to MIME types. This is used to lookup a MIME type for the response headers. See the default attributes file for an example.
['tapalcatl']['poolsize'] Integer Tapalcatl has a buffer pool to reduce GC pressure when copying large amounts of data from the upstream server. The poolsize is the number of buffers to retain, and should be sized to the number of concurrent requests expected. 10
['tapalcatl']['poolwidth'] Integer The pool width is the size in bytes to initially assign. Buffers can grow, so it is not necessary to make this particularly large. A good value is the average expected size of the zip files. 102400
['tapalcatl']['runit']['timeout'] Integer The time in seconds runit should wait to see if a service starts up successfully. 60
['tapalcatl']['user']['create_group'] Boolean Whether to create a group for the user. true
['tapalcatl']['user']['enabled'] Boolean Whether to create a user for tapalcatl. true
['tapalcatl']['user']['home'] String The user's home directory location. /home/tapalcatl
['tapalcatl']['user']['user'] String The user's name. tapalcatl
['tapalcatl']['limits']['open_files'] Integer The maximum number of open file descriptors allowed. The value in /proc/sys/fs/file-max

Contributing

We welcome contributions to tapalcatl's Chef recipe. To contribute, please use the standard Github workflow:

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

License and Authors

Copyright Mapzen 2016. Available under the MIT license. See LICENSE for more information.