mirror of
https://github.com/tailscale/tailscale.git
synced 2025-12-02 01:51:59 +00:00
gokrazy,tstest/integration/nat: add Gokrazy appliance just for natlab
... rather than abusing the generic tsapp. Per discussion in https://github.com/gokrazy/gokrazy/pull/275 It also means we can remove stuff we don't need, like ntp or randomd. Updates #13038 Change-Id: Iccf579c354bd3b5025d05fa1128e32f1d5bde4e4 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
b358f489b9
commit
02581b1603
@@ -22,10 +22,12 @@ import (
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
app = flag.String("app", "tsapp", "appliance name; one of the subdirectories of gokrazy/")
|
||||
bucket = flag.String("bucket", "tskrazy-import", "S3 bucket to upload disk image to while making AMI")
|
||||
build = flag.Bool("build", false, "if true, just build locally and stop, without uploading")
|
||||
)
|
||||
@@ -53,6 +55,10 @@ func findMkfsExt4() (string, error) {
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
if *app == "" || strings.Contains(*app, "/") {
|
||||
log.Fatalf("--app must be non-empty name such as 'tsapp' or 'natlabapp'")
|
||||
}
|
||||
|
||||
if err := buildImage(); err != nil {
|
||||
log.Fatalf("build image: %v", err)
|
||||
}
|
||||
@@ -75,7 +81,7 @@ func main() {
|
||||
}
|
||||
log.Printf("snap ID: %v", snapID)
|
||||
|
||||
ami, err := makeAMI(fmt.Sprintf("tsapp-%d", time.Now().Unix()), snapID)
|
||||
ami, err := makeAMI(fmt.Sprintf(*app+"-%d", time.Now().Unix()), snapID)
|
||||
if err != nil {
|
||||
log.Fatalf("makeAMI: %v", err)
|
||||
}
|
||||
@@ -92,8 +98,8 @@ func buildImage() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if fi, err := os.Stat(filepath.Join(dir, "tsapp")); err != nil || !fi.IsDir() {
|
||||
return fmt.Errorf("in wrong directorg %v; no tsapp subdirectory found", dir)
|
||||
if fi, err := os.Stat(filepath.Join(dir, *app)); err != nil || !fi.IsDir() {
|
||||
return fmt.Errorf("in wrong directorg %v; no %q subdirectory found", dir, *app)
|
||||
}
|
||||
// Build the tsapp.img
|
||||
var buf bytes.Buffer
|
||||
@@ -101,9 +107,9 @@ func buildImage() error {
|
||||
"-exec=env GOOS=linux GOARCH=amd64 ",
|
||||
"github.com/gokrazy/tools/cmd/gok",
|
||||
"--parent_dir="+dir,
|
||||
"--instance=tsapp",
|
||||
"--instance="+*app,
|
||||
"overwrite",
|
||||
"--full", "tsapp.img",
|
||||
"--full", *app+".img",
|
||||
"--target_storage_bytes=1258299392")
|
||||
cmd.Stdout = io.MultiWriter(os.Stdout, &buf)
|
||||
cmd.Stderr = os.Stderr
|
||||
@@ -135,14 +141,14 @@ func buildImage() error {
|
||||
}
|
||||
|
||||
func copyToS3() error {
|
||||
cmd := exec.Command("aws", "s3", "cp", "tsapp.img", "s3://"+*bucket+"/")
|
||||
cmd := exec.Command("aws", "s3", "cp", *app+".img", "s3://"+*bucket+"/")
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
func startImportSnapshot() (importTaskID string, err error) {
|
||||
out, err := exec.Command("aws", "ec2", "import-snapshot", "--disk-container", "Url=s3://"+*bucket+"/tsappp.img").CombinedOutput()
|
||||
out, err := exec.Command("aws", "ec2", "import-snapshot", "--disk-container", "Url=s3://"+*bucket+"/"+*app+".img").CombinedOutput()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("import snapshot: %v: %s", err, out)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user