cloud: validate that there are not positional arguments

flag.Parse() parses arguments after boolean flags as positional argument.
This produces unexpected behaviour like this:
```
> -a "true" -b "true"
a: false

> -a -b "true"
b: true
```

Change-Id: I0f8555fc45acf305a5efd365a6eae03eb8930942
Reviewed-on: https://review.monogon.dev/c/monogon/+/1798
Reviewed-by: Serge Bazanski <serge@monogon.tech>
Tested-by: Jenkins CI
diff --git a/cloud/bmaas/server/cmd/BUILD.bazel b/cloud/bmaas/server/cmd/BUILD.bazel
index 3988426..50184b9 100644
--- a/cloud/bmaas/server/cmd/BUILD.bazel
+++ b/cloud/bmaas/server/cmd/BUILD.bazel
@@ -10,6 +10,7 @@
     deps = [
         "//cloud/bmaas/server",
         "//metropolis/cli/pkg/context",
+        "@io_k8s_klog_v2//:klog",
     ],
 )
 
diff --git a/cloud/bmaas/server/cmd/main.go b/cloud/bmaas/server/cmd/main.go
index 2d04841..dd99205 100644
--- a/cloud/bmaas/server/cmd/main.go
+++ b/cloud/bmaas/server/cmd/main.go
@@ -4,6 +4,8 @@
 	"context"
 	"flag"
 
+	"k8s.io/klog/v2"
+
 	"source.monogon.dev/cloud/bmaas/server"
 	clicontext "source.monogon.dev/metropolis/cli/pkg/context"
 )
@@ -12,6 +14,9 @@
 	s := &server.Server{}
 	s.Config.RegisterFlags()
 	flag.Parse()
+	if flag.NArg() > 0 {
+		klog.Exitf("unexpected positional arguments: %v", flag.Args())
+	}
 
 	ctx := clicontext.WithInterrupt(context.Background())
 	s.Start(ctx)