# limitations under the License.
#
+unified_mode true
+
default_action :create
property :pool, :kind_of => String, :name_property => true
-property :cookbook, :kind_of => String
-property :template, :kind_of => String, :required => true
-property :variables, :kind_of => Hash, :default => {}
+property :port, :kind_of => Integer
+property :user, :kind_of => String, :default => "www-data"
+property :group, :kind_of => String, :default => "www-data"
+property :pm, :kind_of => String, :default => "dynamic"
+property :pm_max_children, :kind_of => Integer, :default => 10
+property :pm_start_servers, :kind_of => Integer, :default => 4
+property :pm_min_spare_servers, :kind_of => Integer, :default => 2
+property :pm_max_spare_servers, :kind_of => Integer, :default => 6
+property :pm_max_requests, :kind_of => Integer, :default => 1000
+property :request_terminate_timeout, :kind_of => Integer, :default => 1800
+property :environment, :kind_of => Hash, :default => {}
+property :php_values, :kind_of => Hash, :default => {}
+property :php_admin_values, :kind_of => Hash, :default => {}
+property :php_flags, :kind_of => Hash, :default => {}
+property :php_admin_flags, :kind_of => Hash, :default => {}
property :reload_fpm, :kind_of => [TrueClass, FalseClass], :default => true
+property :prometheus_port, :kind_of => Integer
action :create do
- declare_resource :template, conf_file do
- cookbook new_resource.cookbook
- source new_resource.template
+ template conf_file do
+ cookbook "php"
+ source "pool.conf.erb"
owner "root"
group "root"
mode "644"
- variables new_resource.variables
+ variables new_resource.to_hash.merge(:pool => new_resource.pool)
+ end
+
+ if new_resource.prometheus_port
+ prometheus_exporter "phpfpm" do
+ port new_resource.prometheus_port
+ restrict_address_families "AF_UNIX"
+ service service_name
+ group "www-data"
+ command "server"
+ options "--phpfpm.scrape-uri=#{scrape_uri} --phpfpm.fix-process-count"
+ labels "pool" => new_resource.pool
+ end
+ else
+ prometheus_exporter "phpfpm" do
+ action :delete
+ service service_name
+ end
end
end
file conf_file do
action :delete
end
+
+ prometheus_exporter "phpfpm" do
+ action :delete
+ service service_name
+ end
end
action_class do
def conf_file
"/etc/php/#{php_version}/fpm/pool.d/#{new_resource.pool}.conf"
end
+
+ def service_name
+ "phpfpm-#{new_resource.pool}"
+ end
+
+ def scrape_uri
+ if new_resource.port
+ "tcp://127.0.0.1:#{new_resource.port}/status"
+ else
+ "unix:///run/php/php-#{new_resource.pool}-fpm.sock;/status"
+ end
+ end
end
def after_created