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  }