43 lines
1.6 KiB
Scheme
43 lines
1.6 KiB
Scheme
(use-modules
|
|
(ice-9 filesystem)
|
|
(logging logger)
|
|
(srfi srfi-26)
|
|
(ordo)
|
|
(ordo connection)
|
|
(ordo logger))
|
|
|
|
(define* (install-aws-cli conn #:key (url "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip") update? install-dir bin-dir)
|
|
(let ((tmp-dir (run conn "mktemp" "-d" #:return car #:check? #t)))
|
|
(dynamic-wind
|
|
(const #t)
|
|
(lambda ()
|
|
(let ((zipfile (file-name-join* tmp-dir (file-basename url))))
|
|
(run conn "wget" "-O" zipfile url #:check? #t)
|
|
(run conn "unzip" zipfile "-d" tmp-dir #:check? #t)
|
|
(run conn (file-name-join* tmp-dir "aws" "install")
|
|
(when install-dir `("-i" ,install-dir))
|
|
(when bin-dir `("-b" ,bin-dir))
|
|
(when update? "-u")
|
|
#:check? #t)))
|
|
(lambda ()
|
|
(for-each (cut log-msg 'INFO <>)
|
|
(run conn "echo" "rm" "-rf" tmp-dir #:check? #t))))))
|
|
|
|
(define test-playbook
|
|
(playbook
|
|
#:name "Test Playbook"
|
|
#:plays (list
|
|
(play
|
|
#:name "Test play"
|
|
#:connection (local-connection)
|
|
#:vars '((base-dir . "/home/ray/ordo-test"))
|
|
#:acts (list
|
|
(act #:name "Act I"
|
|
#:tasks (list
|
|
(task #:name "Create base directory"
|
|
#:action (lambda (c) (must c "mkdir" "-p" ($ 'base-dir))))
|
|
(task #:name "Create test file"
|
|
#:action (lambda (c) (must c "touch" (file-name-join* ($ 'base-dir) "test-file")))))))))))
|
|
|
|
(setup-logging)
|
|
(perform test-playbook '())
|