mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 15:36:20 -05:00
doc: Add section for 'guix deploy'.
* doc/guix.texi: Add section "Invoking guix deploy".
This commit is contained in:
parent
5cbb832fb1
commit
02a962c8e0
1 changed files with 114 additions and 0 deletions
114
doc/guix.texi
114
doc/guix.texi
|
@ -65,6 +65,7 @@ Copyright @copyright{} 2018 Alex Vong@*
|
|||
Copyright @copyright{} 2019 Josh Holland@*
|
||||
Copyright @copyright{} 2019 Diego Nicola Barbato@*
|
||||
Copyright @copyright{} 2019 Ivan Petkov@*
|
||||
Copyright @copyright{} 2019 Jakob L. Kreuze@*
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
|
@ -81,6 +82,7 @@ Documentation License''.
|
|||
* guix gc: (guix)Invoking guix gc. Reclaiming unused disk space.
|
||||
* guix pull: (guix)Invoking guix pull. Update the list of available packages.
|
||||
* guix system: (guix)Invoking guix system. Manage the operating system configuration.
|
||||
* guix deploy: (guix)Invoking guix deploy. Manage operating system configurations for remote hosts.
|
||||
@end direntry
|
||||
|
||||
@dircategory Software development
|
||||
|
@ -269,6 +271,7 @@ System Configuration
|
|||
* Initial RAM Disk:: Linux-Libre bootstrapping.
|
||||
* Bootloader Configuration:: Configuring the boot loader.
|
||||
* Invoking guix system:: Instantiating a system configuration.
|
||||
* Invoking guix deploy:: Deploying a system configuration to a remote host.
|
||||
* Running Guix in a VM:: How to run Guix System in a virtual machine.
|
||||
* Defining Services:: Adding new service definitions.
|
||||
|
||||
|
@ -10296,6 +10299,7 @@ instance to support new system services.
|
|||
* Initial RAM Disk:: Linux-Libre bootstrapping.
|
||||
* Bootloader Configuration:: Configuring the boot loader.
|
||||
* Invoking guix system:: Instantiating a system configuration.
|
||||
* Invoking guix deploy:: Deploying a system configuration to a remote host.
|
||||
* Running Guix in a VM:: How to run Guix System in a virtual machine.
|
||||
* Defining Services:: Adding new service definitions.
|
||||
@end menu
|
||||
|
@ -25392,6 +25396,116 @@ example graph.
|
|||
|
||||
@end table
|
||||
|
||||
@node Invoking guix deploy
|
||||
@section Invoking @code{guix deploy}
|
||||
|
||||
We've already seen @code{operating-system} declarations used to manage a
|
||||
machine's configuration locally. Suppose you need to configure multiple
|
||||
machines, though---perhaps you're managing a service on the web that's
|
||||
comprised of several servers. @command{guix deploy} enables you to use those
|
||||
same @code{operating-system} declarations to manage multiple remote hosts at
|
||||
once as a logical ``deployment''.
|
||||
|
||||
@quotation Note
|
||||
The functionality described in this section is still under development
|
||||
and is subject to change. Get in touch with us on
|
||||
@email{guix-devel@@gnu.org}!
|
||||
@end quotation
|
||||
|
||||
@example
|
||||
guix deploy @var{file}
|
||||
@end example
|
||||
|
||||
Such an invocation will deploy the machines that the code within @var{file}
|
||||
evaluates to. As an example, @var{file} might contain a definition like this:
|
||||
|
||||
@example
|
||||
;; This is a Guix deployment of a "bare bones" setup, with
|
||||
;; no X11 display server, to a machine with an SSH daemon
|
||||
;; listening on localhost:2222. A configuration such as this
|
||||
;; may be appropriate for virtual machine with ports
|
||||
;; forwarded to the host's loopback interface.
|
||||
|
||||
(use-service-modules networking ssh)
|
||||
(use-package-modules bootloaders)
|
||||
|
||||
(define %system
|
||||
(operating-system
|
||||
(host-name "gnu-deployed")
|
||||
(timezone "Etc/UTC")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader grub-bootloader)
|
||||
(target "/dev/vda")
|
||||
(terminal-outputs '(console))))
|
||||
(file-systems (cons (file-system
|
||||
(mount-point "/")
|
||||
(device "/dev/vda1")
|
||||
(type "ext4"))
|
||||
%base-file-systems))
|
||||
(services
|
||||
(append (list (service dhcp-client-service-type)
|
||||
(service openssh-service-type
|
||||
(openssh-configuration
|
||||
(permit-root-login #t)
|
||||
(allow-empty-passwords? #t))))
|
||||
%base-services))))
|
||||
|
||||
(list (machine
|
||||
(system %system)
|
||||
(environment managed-host-environment-type)
|
||||
(configuration (machine-ssh-configuration
|
||||
(host-name "localhost")
|
||||
(identity "./id_rsa")
|
||||
(port 2222)))))
|
||||
@end example
|
||||
|
||||
The file should evaluate to a list of @var{machine} objects. This example,
|
||||
upon being deployed, will create a new generation on the remote system
|
||||
realizing the @code{operating-system} declaration @var{%system}.
|
||||
@var{environment} and @var{configuration} specify how the machine should be
|
||||
provisioned---that is, how the computing resources should be created and
|
||||
managed. The above example does not create any resources, as a
|
||||
@code{'managed-host} is a machine that is already running the Guix system and
|
||||
available over the network. This is a particularly simple case; a more
|
||||
complex deployment may involve, for example, starting virtual machines through
|
||||
a Virtual Private Server (VPS) provider. In such a case, a different
|
||||
@var{environment} type would be used.
|
||||
|
||||
@deftp {Data Type} machine
|
||||
This is the data type representing a single machine in a heterogeneous Guix
|
||||
deployment.
|
||||
|
||||
@table @asis
|
||||
@item @code{system}
|
||||
The object of the operating system configuration to deploy.
|
||||
|
||||
@item @code{environment}
|
||||
An @code{environment-type} describing how the machine should be provisioned.
|
||||
At the moment, the only supported value is
|
||||
@code{managed-host-environment-type}.
|
||||
|
||||
@item @code{configuration} (default: @code{#f})
|
||||
An object describing the configuration for the machine's @code{environment}.
|
||||
If the @code{environment} has a default configuration, @code{#f} maybe used.
|
||||
If @code{#f} is used for an environment with no default configuration,
|
||||
however, an error will be thrown.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@deftp {Data Type} machine-ssh-configuration
|
||||
This is the data type representing the SSH client parameters for a machine
|
||||
with an @code{environment} of @code{managed-host-environment-type}.
|
||||
|
||||
@table @asis
|
||||
@item @code{host-name}
|
||||
@item @code{port} (default: @code{22})
|
||||
@item @code{user} (default: @code{"root"})
|
||||
@item @code{identity} (default: @code{#f})
|
||||
If specified, the path to the SSH private key to use to authenticate with the
|
||||
remote host.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@node Running Guix in a VM
|
||||
@section Running Guix in a Virtual Machine
|
||||
|
||||
|
|
Loading…
Reference in a new issue