mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
machine: ssh: Add 'safety-checks?' field.
Fixes <https://issues.guix.gnu.org/52766>. Reported by Michael Rohleder <mike@rohleder.de>. * gnu/machine/ssh.scm (<machine-ssh-configuration>)[safety-checks?]: New field. (machine-check-file-system-availability): Return the empty list when 'safety-checks?' is false. (machine-check-initrd-modules): Likewise. * doc/guix.texi (Invoking guix deploy): Document it.
This commit is contained in:
parent
86e782e2b6
commit
084b76a70a
2 changed files with 31 additions and 13 deletions
|
@ -35682,6 +35682,16 @@ returned by @command{guix describe}) to determine whether commits
|
|||
currently in use are descendants of those deployed. When this is not
|
||||
the case and @code{allow-downgrades?} is false, it raises an error.
|
||||
This ensures you do not accidentally downgrade remote machines.
|
||||
|
||||
@item @code{safety-checks?} (default: @code{#t})
|
||||
Whether to perform ``safety checks'' before deployment. This includes
|
||||
verifying that devices and file systems referred to in the operating
|
||||
system configuration actually exist on the target machine, and making
|
||||
sure that Linux modules required to access storage devices at boot time
|
||||
are listed in the @code{initrd-modules} field of the operating system.
|
||||
|
||||
These safety checks ensure that you do not inadvertently deploy a system
|
||||
that would fail to boot. Be careful before turning them off!
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
|
|
|
@ -93,6 +93,8 @@ (define-record-type* <machine-ssh-configuration> machine-ssh-configuration
|
|||
(default #t))
|
||||
(allow-downgrades? machine-ssh-configuration-allow-downgrades? ; boolean
|
||||
(default #f))
|
||||
(safety-checks? machine-ssh-configuration-safety-checks? ;boolean
|
||||
(default #t))
|
||||
(port machine-ssh-configuration-port ; integer
|
||||
(default 22))
|
||||
(user machine-ssh-configuration-user ; string
|
||||
|
@ -240,18 +242,21 @@ (define remote-exp
|
|||
(raise (formatted-message (G_ "no file system with UUID '~a'")
|
||||
(uuid->string (file-system-device fs)))))))
|
||||
|
||||
(append (map check-literal-file-system
|
||||
(filter (lambda (fs)
|
||||
(string? (file-system-device fs)))
|
||||
file-systems))
|
||||
(map check-labeled-file-system
|
||||
(filter (lambda (fs)
|
||||
(file-system-label? (file-system-device fs)))
|
||||
file-systems))
|
||||
(map check-uuid-file-system
|
||||
(filter (lambda (fs)
|
||||
(uuid? (file-system-device fs)))
|
||||
file-systems))))
|
||||
(if (machine-ssh-configuration-safety-checks?
|
||||
(machine-configuration machine))
|
||||
(append (map check-literal-file-system
|
||||
(filter (lambda (fs)
|
||||
(string? (file-system-device fs)))
|
||||
file-systems))
|
||||
(map check-labeled-file-system
|
||||
(filter (lambda (fs)
|
||||
(file-system-label? (file-system-device fs)))
|
||||
file-systems))
|
||||
(map check-uuid-file-system
|
||||
(filter (lambda (fs)
|
||||
(uuid? (file-system-device fs)))
|
||||
file-systems)))
|
||||
'()))
|
||||
|
||||
(define (machine-check-initrd-modules machine)
|
||||
"Return a list of <remote-assertion> that raise a '&message' error condition
|
||||
|
@ -291,7 +296,10 @@ (define dev
|
|||
(file-system-device fs)
|
||||
missing)))))
|
||||
|
||||
(map missing-modules file-systems))
|
||||
(if (machine-ssh-configuration-safety-checks?
|
||||
(machine-configuration machine))
|
||||
(map missing-modules file-systems)
|
||||
'()))
|
||||
|
||||
(define* (machine-check-forward-update machine)
|
||||
"Check whether we are making a forward update for MACHINE. Depending on its
|
||||
|
|
Loading…
Reference in a new issue