(define %cloud-cfg
(string-append %cloud-dir "/cloud.cfg"))
+(define %cloud-run
+ (mixed-text-file "run.sh"
+ "#!"
+ (file-append bash "/bin/bash")
+ "\n\nset -euo pipefail\n\n"
+ (file-append python-cloud-init "/bin/cloud-init")
+ " init --local\n"
+ (file-append python-cloud-init "/bin/cloud-init")
+ " init\n"
+ (file-append python-cloud-init "/bin/cloud-init")
+ " modules --mode config\n"
+ (file-append python-cloud-init "/bin/cloud-init")
+ " modules --mode final\n"))
+
(define %cloud-cfg-d
(string-append %cloud-dir "/cloud.cfg.d"))
(mkdir-p #$%cloud-cfg-d)
+ (copy-file #$%cloud-run
+ (string-append #$%cloud-dir "/run.sh"))
+ (chmod (string-append #$%cloud-dir "/run.sh") #o755)
+
(unless (null? '(#$@extra))
(for-each (lambda (file)
(symlink (cadr file)
(define cloud-init
(cloud-init-configuration-cloud-init config))
- (define cloud-init-command
- #~(list (string-append #$(cloud-init-configuration-cloud-init config)
- "/bin/cloud-init") "--all-stages"))
-
(list (shepherd-service (documentation "cloud-init service")
(provision '(cloud-init))
(requirement '(networking))
(one-shot? #t)
- (start #~(fork+exec-command #$cloud-init-command
+ (start #~(fork+exec-command (list (string-append #$%cloud-dir
+ "/run.sh"))
#:log-file (string-append
"/var/log/cloud-init.log")
#:environment-variables '