@ -72,6 +72,12 @@ options:
description :
description :
- Choose which firmware should be used to boot the virtual machine .
- Choose which firmware should be used to boot the virtual machine .
choices : [ " bios " , " efi " ]
choices : [ " bios " , " efi " ]
secure_boot_enabled :
description :
- Choose if EFI secure boot should be enabled . EFI secure boot can only be enabled with boot_firmware = efi
type : ' bool '
default : False
version_added : ' 2.8 '
extends_documentation_fragment : vmware . documentation
extends_documentation_fragment : vmware . documentation
'''
'''
@ -87,6 +93,7 @@ EXAMPLES = r'''
boot_retry_enabled : True
boot_retry_enabled : True
boot_retry_delay : 22300
boot_retry_delay : 22300
boot_firmware : bios
boot_firmware : bios
secure_boot_enabled : False
boot_order :
boot_order :
- floppy
- floppy
- cdrom
- cdrom
@ -113,11 +120,13 @@ vm_boot_status:
" current_boot_retry_enabled " : true ,
" current_boot_retry_enabled " : true ,
" current_enter_bios_setup " : true ,
" current_enter_bios_setup " : true ,
" current_boot_firmware " : " bios " ,
" current_boot_firmware " : " bios " ,
" current_secure_boot_enabled " : false ,
" previous_boot_delay " : 10 ,
" previous_boot_delay " : 10 ,
" previous_boot_retry_delay " : 10000 ,
" previous_boot_retry_delay " : 10000 ,
" previous_boot_retry_enabled " : true ,
" previous_boot_retry_enabled " : true ,
" previous_enter_bios_setup " : false ,
" previous_enter_bios_setup " : false ,
" previous_boot_firmware " : " bios " ,
" previous_boot_firmware " : " efi " ,
" previous_secure_boot_enabled " : true ,
" previous_boot_order " : [
" previous_boot_order " : [
" ethernet " ,
" ethernet " ,
" cdrom " ,
" cdrom " ,
@ -245,6 +254,20 @@ class VmBootManager(PyVmomi):
change_needed = True
change_needed = True
boot_firmware_required = True
boot_firmware_required = True
if self . vm . config . bootOptions . efiSecureBootEnabled != self . params . get ( ' secure_boot_enabled ' ) :
if self . params . get ( ' secure_boot_enabled ' ) and self . params . get ( ' boot_firmware ' ) == " bios " :
self . module . fail_json ( msg = " EFI secure boot cannot be enabled when boot_firmware = bios, but both are specified " )
# If the user is not specifying boot_firmware, make sure they aren't trying to enable it on a
# system with boot_firmware already set to 'bios'
if self . params . get ( ' secure_boot_enabled ' ) and \
self . params . get ( ' boot_firmware ' ) is None and \
self . vm . config . firmware == ' bios ' :
self . module . fail_json ( msg = " EFI secure boot cannot be enabled when boot_firmware = bios. VM ' s boot_firmware currently set to bios " )
kwargs . update ( { ' efiSecureBootEnabled ' : self . params . get ( ' secure_boot_enabled ' ) } )
change_needed = True
changed = False
changed = False
results = dict (
results = dict (
previous_boot_order = self . humanize_boot_order ( self . vm . config . bootOptions . bootOrder ) ,
previous_boot_order = self . humanize_boot_order ( self . vm . config . bootOptions . bootOrder ) ,
@ -253,6 +276,7 @@ class VmBootManager(PyVmomi):
previous_boot_retry_enabled = self . vm . config . bootOptions . bootRetryEnabled ,
previous_boot_retry_enabled = self . vm . config . bootOptions . bootRetryEnabled ,
previous_boot_retry_delay = self . vm . config . bootOptions . bootRetryDelay ,
previous_boot_retry_delay = self . vm . config . bootOptions . bootRetryDelay ,
previous_boot_firmware = self . vm . config . firmware ,
previous_boot_firmware = self . vm . config . firmware ,
previous_secure_boot_enabled = self . vm . config . bootOptions . efiSecureBootEnabled ,
current_boot_order = [ ] ,
current_boot_order = [ ] ,
)
)
@ -278,6 +302,7 @@ class VmBootManager(PyVmomi):
' current_boot_retry_enabled ' : self . vm . config . bootOptions . bootRetryEnabled ,
' current_boot_retry_enabled ' : self . vm . config . bootOptions . bootRetryEnabled ,
' current_boot_retry_delay ' : self . vm . config . bootOptions . bootRetryDelay ,
' current_boot_retry_delay ' : self . vm . config . bootOptions . bootRetryDelay ,
' current_boot_firmware ' : self . vm . config . firmware ,
' current_boot_firmware ' : self . vm . config . firmware ,
' current_secure_boot_enabled ' : self . vm . config . bootOptions . efiSecureBootEnabled ,
}
}
)
)
@ -313,6 +338,10 @@ def main():
type = ' int ' ,
type = ' int ' ,
default = 0 ,
default = 0 ,
) ,
) ,
secure_boot_enabled = dict (
type = ' bool ' ,
default = False ,
) ,
boot_firmware = dict (
boot_firmware = dict (
type = ' str ' ,
type = ' str ' ,
choices = [ ' efi ' , ' bios ' ] ,
choices = [ ' efi ' , ' bios ' ] ,