|
14 | 14 | [Symbol, String, Array], |
15 | 15 | default: [:enable, :start] |
16 | 16 |
|
| 17 | +property :restart_policy, |
| 18 | + String, |
| 19 | + default: '', |
| 20 | + regex: /^(no|always|on-success|on-failure|on-abnormal|on-abort|on-watchdog)?$/, |
| 21 | + description: 'Systemd restart policy. Valid values: no, always, on-success, on-failure, on-abnormal, on-abort, on-watchdog. Defaults to empty string (no restart).' |
| 22 | + |
| 23 | +property :restart_sec, |
| 24 | + [Integer, String], |
| 25 | + description: 'Configures the time to sleep before restarting a service (seconds). Takes an integer or time span value (e.g., "5min 20s").' |
| 26 | + |
17 | 27 | action :configure do |
18 | 28 | es_user = find_es_resource(Chef.run_context, :elasticsearch_user, new_resource) |
19 | 29 | es_conf = find_es_resource(Chef.run_context, :elasticsearch_configure, new_resource) |
|
30 | 40 |
|
31 | 41 | default_conf_dir = platform_family?('rhel', 'amazon') ? '/etc/sysconfig' : '/etc/default' |
32 | 42 |
|
| 43 | + service_config = { |
| 44 | + Type: 'notify', |
| 45 | + RuntimeDirectory: 'elasticsearch', |
| 46 | + PrivateTmp: 'true', |
| 47 | + Environment: [ |
| 48 | + "ES_HOME=#{es_conf.path_home}", |
| 49 | + 'ES_PATH_CONF=/etc/elasticsearch', |
| 50 | + "PID_DIR=#{es_conf.path_pid}", |
| 51 | + 'ES_SD_NOTIFY=true', |
| 52 | + ], |
| 53 | + EnvironmentFile: "-#{default_conf_dir}/#{new_resource.service_name}", |
| 54 | + WorkingDirectory: es_conf.path_home.to_s, |
| 55 | + User: es_user.username, |
| 56 | + Group: es_user.groupname, |
| 57 | + ExecStart: "#{es_conf.path_home}/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet", |
| 58 | + StandardOutput: 'journal', |
| 59 | + StandardError: 'inherit', |
| 60 | + LimitNOFILE: '65535', |
| 61 | + LimitNPROC: '4096', |
| 62 | + LimitAS: 'infinity', |
| 63 | + LimitFSIZE: 'infinity', |
| 64 | + TimeoutStopSec: '0', |
| 65 | + KillSignal: 'SIGTERM', |
| 66 | + KillMode: 'process', |
| 67 | + SendSIGKILL: 'no', |
| 68 | + SuccessExitStatus: '143', |
| 69 | + TimeoutStartSec: '900', |
| 70 | + } |
| 71 | + |
| 72 | + service_config[:Restart] = new_resource.restart_policy if new_resource.restart_policy && !new_resource.restart_policy.empty? |
| 73 | + service_config[:RestartSec] = new_resource.restart_sec if new_resource.restart_sec |
| 74 | + |
33 | 75 | systemd_unit new_resource.service_name do |
34 | 76 | content( |
35 | 77 | Unit: { |
|
38 | 80 | Wants: 'network-online.target', |
39 | 81 | After: 'network-online.target', |
40 | 82 | }, |
41 | | - Service: { |
42 | | - Type: 'notify', |
43 | | - RuntimeDirectory: 'elasticsearch', |
44 | | - PrivateTmp: 'true', |
45 | | - Environment: [ |
46 | | - "ES_HOME=#{es_conf.path_home}", |
47 | | - 'ES_PATH_CONF=/etc/elasticsearch', |
48 | | - "PID_DIR=#{es_conf.path_pid}", |
49 | | - 'ES_SD_NOTIFY=true', |
50 | | - ], |
51 | | - EnvironmentFile: "-#{default_conf_dir}/#{new_resource.service_name}", |
52 | | - WorkingDirectory: es_conf.path_home.to_s, |
53 | | - User: es_user.username, |
54 | | - Group: es_user.groupname, |
55 | | - ExecStart: "#{es_conf.path_home}/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet", |
56 | | - StandardOutput: 'journal', |
57 | | - StandardError: 'inherit', |
58 | | - LimitNOFILE: '65535', |
59 | | - LimitNPROC: '4096', |
60 | | - LimitAS: 'infinity', |
61 | | - LimitFSIZE: 'infinity', |
62 | | - TimeoutStopSec: '0', |
63 | | - KillSignal: 'SIGTERM', |
64 | | - KillMode: 'process', |
65 | | - SendSIGKILL: 'no', |
66 | | - SuccessExitStatus: '143', |
67 | | - TimeoutStartSec: '900', |
68 | | - }, |
| 83 | + Service: service_config, |
69 | 84 | Install: { |
70 | 85 | WantedBy: 'multi-user.target', |
71 | 86 | } |
|
0 commit comments