diff --git a/README.md b/README.md index 081348c..57d89e0 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,17 @@ Multiple aliases may be supported on a single host. action [:setup, :start] end + # setup and start a connection pool with database fallback (all databases) + pgbouncer_connection "database_example_com_fallback" do + db_host "database.example.com" + db_port "6432" + use_db_fallback true + userlist "readwrite_user" => "md500000000000000000000000000000000", "readonly_user" => "md500000000000000000000000000000000" + max_client_conn 100 + default_pool_size 20 + action [:setup, :start] + end + # stop a connection pool pgbouncer_connection "database_example_com_ro" do action :stop diff --git a/resources/connection.rb b/resources/connection.rb index c7ab305..601b518 100644 --- a/resources/connection.rb +++ b/resources/connection.rb @@ -23,7 +23,9 @@ attribute :db_alias, :kind_of => String, :name_attribute => true attribute :db_host, :kind_of => String, :required => true attribute :db_port, :kind_of => String, :required => true -attribute :db_name, :kind_of => String, :required => true +attribute :db_name, :kind_of => String + +attribute :use_db_fallback, :kind_of => [TrueClass, FalseClass], :default => false attribute :userlist, :kind_of => Hash, :required => true diff --git a/templates/default/etc/pgbouncer/pgbouncer.ini.erb b/templates/default/etc/pgbouncer/pgbouncer.ini.erb index 38bae98..76b78f6 100644 --- a/templates/default/etc/pgbouncer/pgbouncer.ini.erb +++ b/templates/default/etc/pgbouncer/pgbouncer.ini.erb @@ -5,7 +5,11 @@ ;; client_encoding= datestyle= timezone= ;; pool_size= connect_query= [databases] +<% if @use_db_fallback %> +* = host=<%= @db_host %> port=<%= @db_port %> +<% else %> <%= @db_alias %> = host=<%= @db_host %> port=<%= @db_port %> dbname=<%= @db_name %> <%= "connect_query='#{@connect_query}'" unless @connect_query.nil? || @connect_query.empty? %> +<% end %> ;; Configuration section [pgbouncer]