github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/main.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  
     6  	log "github.com/Sirupsen/logrus"
     7  	"github.com/codegangsta/cli"
     8  	"github.com/shipyard/shipyard/controller/commands"
     9  	"github.com/shipyard/shipyard/version"
    10  )
    11  
    12  const (
    13  	STORE_KEY = "shipyard"
    14  )
    15  
    16  func main() {
    17  	app := cli.NewApp()
    18  	app.Name = "shipyard"
    19  	app.Usage = "composable docker management"
    20  	app.Version = version.Version + " (" + version.GitCommit + ")"
    21  	app.Author = ""
    22  	app.Email = ""
    23  	app.Before = func(c *cli.Context) error {
    24  		if c.GlobalBool("debug") {
    25  			log.SetLevel(log.DebugLevel)
    26  		}
    27  		return nil
    28  	}
    29  	app.Commands = []cli.Command{
    30  		{
    31  			Name:   "server",
    32  			Usage:  "run shipyard controller",
    33  			Action: commands.CmdServer,
    34  			Flags: []cli.Flag{
    35  				cli.StringFlag{
    36  					Name:  "listen, l",
    37  					Usage: "listen address",
    38  					Value: ":8080",
    39  				},
    40  				cli.StringFlag{
    41  					Name:  "rethinkdb-addr",
    42  					Usage: "RethinkDB address",
    43  					Value: "rethinkdb:28015",
    44  				},
    45  				cli.StringFlag{
    46  					Name:  "rethinkdb-auth-key",
    47  					Usage: "RethinkDB auth key",
    48  					Value: "",
    49  				},
    50  				cli.StringFlag{
    51  					Name:  "rethinkdb-database",
    52  					Usage: "RethinkDB database name",
    53  					Value: "shipyard",
    54  				},
    55  				cli.BoolFlag{
    56  					Name:  "disable-usage-info",
    57  					Usage: "disable anonymous usage reporting",
    58  				},
    59  				cli.StringFlag{
    60  					Name:   "docker, d",
    61  					Value:  "tcp://127.0.0.1:2375",
    62  					Usage:  "docker swarm addr",
    63  					EnvVar: "DOCKER_HOST",
    64  				},
    65  				cli.StringFlag{
    66  					Name:  "tls-ca-cert",
    67  					Value: "",
    68  					Usage: "tls ca certificate",
    69  				},
    70  				cli.StringFlag{
    71  					Name:  "tls-cert",
    72  					Value: "",
    73  					Usage: "tls certificate",
    74  				},
    75  				cli.StringFlag{
    76  					Name:  "tls-key",
    77  					Value: "",
    78  					Usage: "tls key",
    79  				},
    80  				cli.StringFlag{
    81  					Name:  "shipyard-tls-ca-cert",
    82  					Usage: "Shipyard TLS CA Cert",
    83  					Value: "",
    84  				},
    85  				cli.StringFlag{
    86  					Name:  "shipyard-tls-cert",
    87  					Usage: "Shipyard TLS Cert",
    88  					Value: "",
    89  				},
    90  				cli.StringFlag{
    91  					Name:  "shipyard-tls-key",
    92  					Usage: "Shipyard TLS Key",
    93  					Value: "",
    94  				},
    95  				cli.BoolFlag{
    96  					Name:  "allow-insecure",
    97  					Usage: "enable insecure tls communication",
    98  				},
    99  				cli.BoolFlag{
   100  					Name:  "enable-cors",
   101  					Usage: "enable cors with swarm",
   102  				},
   103  				cli.StringFlag{
   104  					Name:  "ldap-server",
   105  					Usage: "LDAP server address",
   106  				},
   107  				cli.IntFlag{
   108  					Name:  "ldap-port",
   109  					Usage: "LDAP server port",
   110  					Value: 389,
   111  				},
   112  				cli.StringFlag{
   113  					Name:  "ldap-base-dn",
   114  					Usage: "LDAP server base DN",
   115  				},
   116  				cli.BoolFlag{
   117  					Name:  "ldap-autocreate-users",
   118  					Usage: "Automatically create a corresponding Shipyard account if missing upon authenticating",
   119  				},
   120  				cli.StringFlag{
   121  					Name:  "ldap-default-access-level",
   122  					Usage: "Default access level for auto-created accounts (default: container read-only)",
   123  					Value: "containers:ro",
   124  				},
   125  				cli.StringSliceFlag{
   126  					Name:  "auth-whitelist-cidr",
   127  					Usage: "whitelist CIDR to bypass auth",
   128  					Value: &cli.StringSlice{},
   129  				},
   130  			},
   131  		},
   132  	}
   133  	app.Flags = []cli.Flag{
   134  		cli.BoolFlag{
   135  			Name:  "debug, D",
   136  			Usage: "enable debug",
   137  		},
   138  	}
   139  
   140  	if err := app.Run(os.Args); err != nil {
   141  		log.Fatal(err)
   142  	}
   143  }