github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/commands/server.go (about) 1 package commands 2 3 import ( 4 log "github.com/Sirupsen/logrus" 5 "github.com/codegangsta/cli" 6 "github.com/shipyard/shipyard/auth/builtin" 7 "github.com/shipyard/shipyard/auth/ldap" 8 "github.com/shipyard/shipyard/controller/api" 9 "github.com/shipyard/shipyard/controller/manager" 10 "github.com/shipyard/shipyard/utils" 11 "github.com/shipyard/shipyard/version" 12 ) 13 14 var ( 15 controllerManager *manager.Manager 16 ) 17 18 func CmdServer(c *cli.Context) { 19 rethinkdbAddr := c.String("rethinkdb-addr") 20 rethinkdbDatabase := c.String("rethinkdb-database") 21 rethinkdbAuthKey := c.String("rethinkdb-auth-key") 22 disableUsageInfo := c.Bool("disable-usage-info") 23 listenAddr := c.String("listen") 24 authWhitelist := c.StringSlice("auth-whitelist-cidr") 25 enableCors := c.Bool("enable-cors") 26 ldapServer := c.String("ldap-server") 27 ldapPort := c.Int("ldap-port") 28 ldapBaseDn := c.String("ldap-base-dn") 29 ldapAutocreateUsers := c.Bool("ldap-autocreate-users") 30 ldapDefaultAccessLevel := c.String("ldap-default-access-level") 31 32 log.Infof("shipyard version %s", version.Version) 33 34 if len(authWhitelist) > 0 { 35 log.Infof("whitelisting the following subnets: %v", authWhitelist) 36 } 37 38 dockerUrl := c.String("docker") 39 tlsCaCert := c.String("tls-ca-cert") 40 tlsCert := c.String("tls-cert") 41 tlsKey := c.String("tls-key") 42 allowInsecure := c.Bool("allow-insecure") 43 44 client, err := utils.GetClient(dockerUrl, tlsCaCert, tlsCert, tlsKey, allowInsecure) 45 if err != nil { 46 log.Fatal(err) 47 } 48 49 // default to builtin auth 50 authenticator := builtin.NewAuthenticator("defaultshipyard") 51 52 // use ldap auth if specified 53 if ldapServer != "" { 54 authenticator = ldap.NewAuthenticator(ldapServer, ldapPort, ldapBaseDn, ldapAutocreateUsers, ldapDefaultAccessLevel) 55 } 56 57 controllerManager, err := manager.NewManager(rethinkdbAddr, rethinkdbDatabase, rethinkdbAuthKey, client, disableUsageInfo, authenticator) 58 if err != nil { 59 log.Fatal(err) 60 } 61 62 log.Debugf("connected to docker: url=%s", dockerUrl) 63 64 shipyardTlsCert := c.String("shipyard-tls-cert") 65 shipyardTlsKey := c.String("shipyard-tls-key") 66 shipyardTlsCACert := c.String("shipyard-tls-ca-cert") 67 68 apiConfig := api.ApiConfig{ 69 ListenAddr: listenAddr, 70 Manager: controllerManager, 71 AuthWhiteListCIDRs: authWhitelist, 72 EnableCORS: enableCors, 73 AllowInsecure: allowInsecure, 74 TLSCACertPath: shipyardTlsCACert, 75 TLSCertPath: shipyardTlsCert, 76 TLSKeyPath: shipyardTlsKey, 77 } 78 79 shipyardApi, err := api.NewApi(apiConfig) 80 if err != nil { 81 log.Fatal(err) 82 } 83 84 if err := shipyardApi.Run(); err != nil { 85 log.Fatal(err) 86 } 87 }