diff options
Diffstat (limited to '')
-rw-r--r-- | failsafe.cf | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/failsafe.cf b/failsafe.cf index daba0fc..a7cacc1 100644 --- a/failsafe.cf +++ b/failsafe.cf @@ -2,13 +2,15 @@ # - Always ensured to run the update bundle. Do not modify. Ever. # Failsafe imports and promises -body agent control { +body agent control +{ any:: abortclasses => { "no_ppkeys_ABORT_kept" }; # Bootstrapping can't continue without keys ifelapsed => "0"; # Make sure that running failsafe many times in a row does not change functionality } -bundle agent main { +bundle agent main +{ methods: any:: "Check Keys" @@ -37,8 +39,11 @@ bundle agent failsafe_checkkeys bundle agent failsafe_copy_binaries { + classes: + any:: + "alpinelinux" expression => fileexists("/etc/alpine-release"); vars: - freebsd:: + alpinelinux|freebsd:: "binaries" slist => { "cf-agent", "cf-execd", @@ -50,6 +55,11 @@ bundle agent failsafe_copy_binaries "cf-upgrade", }; files: + alpinelinux:: + "$(sys.bindir)/$(binaries)" + copy_from => failsafe_cp("/usr/sbin/$(binaries)"), + action => failsafe_u_immediate, + classes => failsafe_results("namespace", "copy_binaries"); freebsd:: "$(sys.bindir)/$(binaries)" copy_from => failsafe_cp("/usr/local/sbin/$(binaries)"), @@ -73,6 +83,11 @@ bundle agent failsafe_update { # produced binaries vs packages from the debian repository). "masterfiles_dir_remote" string => ifelse( "policy_server", $(sys.masterdir), "masterfiles" ); classes: + any:: + "alpinelinux" expression => fileexists("/etc/alpine-release"); + alpinelinux:: + "cf_execd_not_running" expression => returnszero("/usr/bin/pgrep cf-execd", "noshell"); + "cf_serverd_not_running" expression => returnszero("/usr/bin/pgrep cf-serverd", "noshell"); systemd:: "cfengine3_service_running" expression => returnszero("/bin/systemctl status cfengine3", "noshell"); files: @@ -100,9 +115,9 @@ bundle agent failsafe_update { file_select => failsafe_exclude_vcs_files, classes => failsafe_results("namespace", "modulesdir_update"); processes: - !(windows|systemd):: + !(alpinelinux|systemd|windows):: "cf-serverd" restart_class => "cf_serverd_not_running"; - !systemd.inputdir_update_repaired:: + !(alpinelinux|systemd|windows).inputdir_update_repaired:: "cf-execd" restart_class => "cf_execd_not_running"; commands: cf_execd_not_running:: |