9 "git.curoverse.com/arvados.git/lib/agent"
10 "git.curoverse.com/arvados.git/sdk/go/config"
11 vaultAPI "github.com/hashicorp/vault/api"
14 func Command() *Setup {
15 hostname, err := os.Hostname()
17 log.Fatalf("hostname: %s", err)
21 Agent: agent.Command(),
23 PreloadDir: "/var/cache/arvados",
35 vaultCfg *vaultAPI.Config
38 func (s *Setup) ParseFlags(args []string) error {
39 fs := flag.NewFlagSet("setup", flag.ContinueOnError)
40 fs.StringVar(&s.ClusterID, "cluster-id", s.ClusterID, "five-character cluster ID")
41 fs.BoolVar(&s.InitVault, "init-vault", s.InitVault, "initialize the vault if needed")
42 fs.BoolVar(&s.Unseal, "unseal", s.Unseal, "unseal the vault automatically")
46 func (s *Setup) Run() error {
47 err := config.LoadFile(s, s.DefaultConfigFile())
48 if err != nil && !os.IsNotExist(err) {
51 for _, f := range []func() error{
53 (&osPackage{Debian: "ca-certificates"}).install,
54 (&osPackage{Debian: "nginx"}).install,
67 func (s *Setup) makeDirs() error {
68 for _, path := range []string{s.DataDir, s.UsrDir, s.UsrDir + "/bin"} {
69 if fi, err := os.Stat(path); err != nil {
70 err = os.MkdirAll(path, 0755)
74 } else if !fi.IsDir() {
75 return fmt.Errorf("%s: is not a directory", path)