This replaces the deprecated redis cookbook. Compiles the latest version of Redis, currently 7.0.11 Refs #488
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
module SELinux
 | 
						|
  module Cookbook
 | 
						|
    module StateHelpers
 | 
						|
      def selinux_disabled?
 | 
						|
        selinux_state.eql?(:disabled)
 | 
						|
      end
 | 
						|
 | 
						|
      def selinux_enforcing?
 | 
						|
        selinux_state.eql?(:enforcing)
 | 
						|
      end
 | 
						|
 | 
						|
      def selinux_permissive?
 | 
						|
        selinux_state.eql?(:permissive)
 | 
						|
      end
 | 
						|
 | 
						|
      def state_change_reboot_required?
 | 
						|
        (selinux_disabled? && %i(enforcing permissive).include?(action)) ||
 | 
						|
          ((selinux_enforcing? || selinux_permissive?) && action == :disabled) ||
 | 
						|
          (selinux_activate_required? && %i(enforcing permissive).include?(action))
 | 
						|
      end
 | 
						|
 | 
						|
      def selinux_state
 | 
						|
        state = shell_out!('getenforce').stdout.strip.downcase.to_sym
 | 
						|
        raise "Got unknown SELinux state #{state}" unless %i(disabled enforcing permissive).include?(state)
 | 
						|
 | 
						|
        state
 | 
						|
      end
 | 
						|
 | 
						|
      def selinux_activate_required?
 | 
						|
        return false unless platform_family?('debian')
 | 
						|
        sestatus = shell_out!('sestatus -v').stdout.strip
 | 
						|
 | 
						|
        # Ensure we're booted up to a system which has selinux activated and filesystem is properly labeled
 | 
						|
        if File.read('/proc/cmdline').match?('security=selinux') && sestatus.match?(%r{/usr/sbin/sshd.*sshd_exec_t})
 | 
						|
          false
 | 
						|
        else
 | 
						|
          true
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      def selinux_activate_cmd
 | 
						|
        # selinux-activate is semi-broken on Ubuntu 18.04 however this method does work
 | 
						|
        if platform?('ubuntu') && node['platform_version'] == '18.04'
 | 
						|
          'touch /.autorelabel'
 | 
						|
        else
 | 
						|
          '/usr/sbin/selinux-activate'
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      def default_policy_platform
 | 
						|
        case node['platform_family']
 | 
						|
        when 'rhel', 'fedora', 'amazon'
 | 
						|
          'targeted'
 | 
						|
        when 'debian'
 | 
						|
          'default'
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |