[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#36404] [PATCH v4 4/4] doc: Add section for 'guix deploy'.
From: |
Jakob L. Kreuze |
Subject: |
[bug#36404] [PATCH v4 4/4] doc: Add section for 'guix deploy'. |
Date: |
Tue, 02 Jul 2019 13:58:38 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) |
* doc/guix.texi: Add section "Invoking guix deploy".
---
doc/guix.texi | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 107 insertions(+)
diff --git a/doc/guix.texi b/doc/guix.texi
index 9dc1d2a9c..0827a2bde 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -81,6 +81,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 +270,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.
@@ -10302,6 +10304,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
@@ -25335,6 +25338,110 @@ 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''.
+
+@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 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
--
2.22.0
signature.asc
Description: PGP signature
- [bug#36404] [PATCH 2/4] gnu: Add machine type for deployment specifications., (continued)
- [bug#36404] [PATCH 2/4] gnu: Add machine type for deployment specifications., Jakob L. Kreuze, 2019/07/01
- [bug#36404] [PATCH 3/4] Add 'guix deploy'., Jakob L. Kreuze, 2019/07/01
- [bug#36404] [PATCH 4/4] doc: Add section for 'guix deploy'., Jakob L. Kreuze, 2019/07/01
- [bug#36404] [PATCH 4/4] doc: Add section for 'guix deploy'., Kyle Meyer, 2019/07/02
- [bug#36404] [PATCH 4/4] doc: Add section for 'guix deploy'., Jakob L. Kreuze, 2019/07/02
- [bug#36404] [PATCH 4/4] doc: Add section for 'guix deploy'., Kyle Meyer, 2019/07/02
- [bug#36404] [PATCH v4 0/4] Add 'guix deploy'., Jakob L. Kreuze, 2019/07/02
- [bug#36404] [PATCH v4 1/4] ssh: Add 'identity' keyword to 'open-ssh-session'., Jakob L. Kreuze, 2019/07/02
- [bug#36404] [PATCH v4 2/4] gnu: Add machine type for deployment specifications., Jakob L. Kreuze, 2019/07/02
- [bug#36404] [PATCH v4 3/4] Add 'guix deploy'., Jakob L. Kreuze, 2019/07/02
- [bug#36404] [PATCH v4 4/4] doc: Add section for 'guix deploy'.,
Jakob L. Kreuze <=
- [bug#36404] [PATCH v4 4/4] doc: Add section for 'guix deploy'., Christopher Lemmer Webber, 2019/07/03
- [bug#36404] [PATCH v4 4/4] doc: Add section for 'guix deploy'., Ludovic Courtès, 2019/07/04
- [bug#36404] [PATCH v4 4/4] doc: Add section for 'guix deploy'., Thompson, David, 2019/07/04
- [bug#36404] [PATCH v4 4/4] doc: Add section for 'guix deploy'., Ludovic Courtès, 2019/07/05
- [bug#36404] [PATCH v4 3/4] Add 'guix deploy'., Thompson, David, 2019/07/04
- [bug#36404] [PATCH v4 3/4] Add 'guix deploy'., Ludovic Courtès, 2019/07/05
- [bug#36404] [PATCH v4 2/4] gnu: Add machine type for deployment specifications., Ludovic Courtès, 2019/07/04
- [bug#36404] [PATCH v4 2/4] gnu: Add machine type for deployment specifications., Jakob L. Kreuze, 2019/07/04
- [bug#36404] [PATCH v4 2/4] gnu: Add machine type for deployment specifications., Thompson, David, 2019/07/04
- [bug#36404] [PATCH v4 2/4] gnu: Add machine type for deployment specifications., Ludovic Courtès, 2019/07/05