X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/aeaa46f3071de018b5c5e0f5678cb5b4082e3ddc..802c8345a5d7084d60e6ba1cc3ab1e6d3ca9e8ea:/cookbooks/php/resources/fpm.rb diff --git a/cookbooks/php/resources/fpm.rb b/cookbooks/php/resources/fpm.rb index 870ca4ff5..13c973580 100644 --- a/cookbooks/php/resources/fpm.rb +++ b/cookbooks/php/resources/fpm.rb @@ -17,22 +17,54 @@ # 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 @@ -40,6 +72,11 @@ action :delete do file conf_file do action :delete end + + prometheus_exporter "phpfpm" do + action :delete + service service_name + end end action_class do @@ -50,6 +87,18 @@ 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