From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:45295) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hjTLP-0005E4-IE for guix-patches@gnu.org; Fri, 05 Jul 2019 14:54:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hjTLO-0003px-7s for guix-patches@gnu.org; Fri, 05 Jul 2019 14:54:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:44907) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hjTLO-0003pE-4l for guix-patches@gnu.org; Fri, 05 Jul 2019 14:54:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hjTLN-0003Wq-Ve for guix-patches@gnu.org; Fri, 05 Jul 2019 14:54:02 -0400 Subject: [bug#36404] [PATCH v5 0/4] Add 'guix deploy'. Resent-Message-ID: From: zerodaysfordays@sdf.lonestar.org (Jakob L. Kreuze) References: <87o92ianbj.fsf@sdf.lonestar.org> <87o92glap5.fsf@dustycloud.org> <878sthoqzi.fsf@gnu.org> <87imsl9tsx.fsf_-_@sdf.lonestar.org> <87ef399tpu.fsf_-_@sdf.lonestar.org> <87a7dx9tog.fsf_-_@sdf.lonestar.org> <875zol9tn2.fsf_-_@sdf.lonestar.org> <871rz99tl9.fsf_-_@sdf.lonestar.org> <875zoldqah.fsf@kyleam.com> <87muhwtmfp.fsf@sdf.lonestar.org> <871rz874l2.fsf@kyleam.com> <877e90tj7l.fsf_-_@sdf.lonestar.org> <8736jotj5v.fsf_-_@sdf.lonestar.org> <87y31gs4k5.fsf_-_@sdf.lonestar.org> <87y31cnb2t.fsf@gnu.org> Date: Fri, 05 Jul 2019 14:53:27 -0400 In-Reply-To: <87y31cnb2t.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Fri, 05 Jul 2019 10:24:10 +0200") Message-ID: <87ftnkgvo8.fsf_-_@sdf.lonestar.org> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 36404@debbugs.gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable "Thompson, David" writes: > Replace "path" with "file name". Lots of people use them > interchangeably, but GNU makes a clear distinction between the two > terms. Ah, good to know. Updated. Ludovic Court=C3=A8s writes: > Please add this file to po/guix/POTFILES.in so it can be subject to > localization. > >> +(define %default-options >> + '((system . ,(%current-system)) >> + (substitutes? . #t) >> + (build-hook? . #t) >> + (graft? . #t) >> + (debug . 0) >> + (verbosity . 2))) > > =E2=80=98verbosity=E2=80=99 should probably be 1 (only =E2=80=98guix buil= d=E2=80=99 and =E2=80=98guix system > build=E2=80=99 default to 2.) > >> + (for-each (lambda (machine) >> + (format #t "building ~a... " (machine-display-name ma= chine)) >> + (run-with-store store (build-machine machine)) >> + (display "done\n")) >> + machines) >> + (for-each (lambda (machine) >> + (format #t "deploying to ~a... " (machine-display-nam= e machine)) >> + (run-with-store store (deploy-machine machine)) >> + (display "done\n")) >> + machines)))) > > For i18n purposes and also to get consistent output, please avoid > =E2=80=98format #t=E2=80=99 and instead write: > > (info (G_ "deploying ~a=E2=80=A6~%") (machine-display-name machine)) > > I think you can omit the =E2=80=9Cdone=E2=80=9D message. > > As a matter of style, it=E2=80=99s clearer IMO to have only one =E2=80=98= run-with-store=E2=80=99 > call in the whole program. As in, create a monadic expression with 'mapm' to evaluate the multiple calls to '(deploy-machine machine)' in sequence, and then pass that to 'run-with-store'? > In the SSH case, =E2=80=98deploy-machine=E2=80=99 should roughly translat= e to: >=20 > (remote-eval #~(switch-to-system #$os) machine) >=20 > Thus, =E2=80=98build-machine=E2=80=99 is unnecessary: the actual build of= OS is > automatically triggered by =E2=80=98remote-eval=E2=80=99, either locally = or remotely, > depending on #:build-locally?. >=20 > So I believe you can remove =E2=80=98build-machine=E2=80=99 altogether. Thanks for pointing that out; I meant to ask about that since it's kinda vestigial at this point, but wasn't sure if it would be better to have it f= or the UI. But I went ahead and removed it, since we already have code for showing what derivations are going to be built, etc. > It=E2=80=99s a bit verbose, but I=E2=80=99d suggest using SRFI-34/35 inst= ead, like so: >=20 > (raise (condition > (&message (message "unsupported machine configuration type")))) >=20 > That way, if you also add the file to po/guix/POTFILES.in, i18n will do > its magic. :-) In the end, I generalized the various configuration-related error messages into a 'maybe-raise-unsupported-configuration-error' that uses SRFI-35. Hopefully that's alright -- I believe the manual specifies the behavior enough that one more detailed message is better than two. > Yay! > > You can add a copyright line for you at the top of guix.texi. > >> +@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 hos= ts at >> +once as a logical ``deployment''. > > Perhaps add something like: > > @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 > > That way, if we make a Guix release before this is all stabilized, > we make sure people have appropriate expectations. :-) I like it! >> +complex deployment may involve, for example, starting virtual machines = through >> +a VPS provider. In such a case, a different @var{environment} type wou= ld be > ^^^ > I would write =E2=80=9CVirtual Private Server (VPS)=E2=80=9D. > > I hope the nitpicking level is acceptable, let me know. I=E2=80=99m real= ly > excited to see this land in master! Oh, I appreciate this level of attention to detail. The hardest part of technical writing for me is having my writing fit in with the writing around it when contributing to an existing document, so these kinds of comments fr= om someone more familiar with the manual are great. Jakob L. Kreuze (4): ssh: Add 'identity' keyword to 'open-ssh-session'. gnu: Add machine type for deployment specifications. Add 'guix deploy'. doc: Add section for 'guix deploy'. Makefile.am | 4 +- doc/guix.texi | 114 +++++++++++++ gnu/local.mk | 5 +- gnu/machine.scm | 107 ++++++++++++ gnu/machine/ssh.scm | 369 ++++++++++++++++++++++++++++++++++++++++ guix/scripts/deploy.scm | 84 +++++++++ guix/ssh.scm | 10 +- po/guix/POTFILES.in | 2 + 8 files changed, 689 insertions(+), 6 deletions(-) create mode 100644 gnu/machine.scm create mode 100644 gnu/machine/ssh.scm create mode 100644 guix/scripts/deploy.scm =2D-=20 2.22.0 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEa1VJLOiXAjQ2BGSm9Qb9Fp2P2VoFAl0fnKoACgkQ9Qb9Fp2P 2Vp83Q//UHJcBe4p8/NmtJu3ziBkP6eO9JoNSVeXXy/jUR9eWAU9G5/4hHCo/ISi kaYG5f9hlR2qL7hDEVOVqdP+xjmVevq/GsLFBOkeEuB9YRthOom2L9Ulh79UL5ql y4GqS+8T8k14EblWB/B4eSMGSYcKtK/hdOAeuQ1AH+sVZ7EuwfmpU5zR1efXccJo aGQBSeksxgh+/lqjadIbJyN0nT8Ll9voOC3xYDAWvpz2L8ovr0xLkaZXqQKMfp5h kdBeu+4AwI4m5mN3L5VxQsC/YWdfuqjga7DzvJYUrr5rgn+wuggyQeI2LyEjGQn8 y04JkqXfXsyCO8o4Desp8vNtNW0JoMN1SD75l4s/MldJX8qdpd9uW40s3U7ntJkq zGSGtAvh8kWHzbot0cD0o3PGMhnfeck3dxweg1SFJyITEeipMTteIEAP269S1h99 j5JSSIFvOv3xWoTCzOifOeQ3C5wom5QPpQWhhrJ930xQhuafEOLfj8IDlWfeg7Q5 MSr0yQUFHQOtIVObrLE/cdRAr5RfegkZY5CE0tWwGkFDnkWLTc3mFQ5v7tIYMXnH PL+OgiRk6joSrvMaTRTUV8p/cl0a+avx7ayJI1H5tPy4KiBwRUqco3AzoP+IkIjt xiU0Vv8t5qvO5SjbtfK9xgcCirIYVhyvVTTQZbnpacQ/YMVM6SI= =sbDX -----END PGP SIGNATURE----- --=-=-=--