]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/php/resources/fpm.rb
Run phpfpm exporter in group www-data to allow socket access
[chef.git] / cookbooks / php / resources / fpm.rb
index 0376af4a47783da180458076badc79dcc56c324e..b63a0c814a2de01e85891fb33bd1019d6670d7a9 100644 (file)
 # 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 0o644
-    variables new_resource.variables
+    mode "644"
+    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}"
+    end
+  else
+    prometheus_exporter "phpfpm" do
+      action :delete
+      service service_name
+    end
   end
 end
 
@@ -40,6 +71,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 +86,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