Ansible Role for installing Passenger and NGINX for Ruby apps
This role expects Ruby to be already installed on the target machine, the path for the ruby binary can be configured using the passenger_ruby
variable
passenger_app_root: /mnt/app/public
The path of the public folder of your Rails app
passenger_app_env: production
The RAILS_ENV on which Passenger will run your Rails app
passenger_root: /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
The path for your passenger config root file, this file is not managed by this role, therefore you should only change this in case you have manually configured a passenger setup elsewhere
passenger_ruby: /usr/local/bin/ruby
The path for you Ruby binary
passenger_extra_config: ''
On this variable you can add/customize the passenger behavior for your apps(used on mod-http-passenger.conf.j2), more info about passenger parameters for NGINX can be found here.
nginx_server_name: www.example.com
The server name that NGINX will use to listen for HTTP requests
nginx_user: "www-data"
The user that NGINX will use to run the server
nginx_extra_config: ''
Additional config params that you might want to add to the nginx.conf template on the root level.
nginx_events_extra_config: ''
Additional config params that you might want to add to the nginx.conf template under the events section.
nginx_http_extra_config: ''
Additional config params that you might want to add to the nginx.conf template under the http section.
nginx_vhost_config: |
server {
listen 80 default_server;
server_name {{ nginx_server_name }};
passenger_enabled on;
passenger_app_env {{ passenger_app_env }};
root {{ passenger_app_root }};
}
NGINX configuration for the passenger app, the default configuration works for all apps, if you want to add/customize behavior you can edit this variable. You can use variables here as you were using a Jinja template.
nginx_worker_processes: "auto"
nginx_worker_connections: "768"
nginx_keepalive_timeout: "65"
Those values are used to configure their respective values in the nginx.conf template.
- hosts: servers
roles:
- role: jobscore.ruby
- role: jobscore.passenger_nginx
- hosts: servers
pre_tasks:
- apt:
name: ruby-full
state: present
roles:
- role: jobscore.passenger_nginx
nginx_server_name: www.example.com
passenger_extra_config: |
passenger_max_pool_size 6;
passenger_min_instances 6;
passenger_pre_start {{ nginx_server_name }};
This role was created by Eric Magalhães and Glauber Batista while working for JobScore Inc.