// runWithAgentCmds returns the list of commands that should be passed when the // provisioner will run a unit using tsuru_unit_agent to start. // // This will only be called for legacy containers that have not been re- // deployed since the introduction of independent units per 'process' in // 0.12.0. func runWithAgentCmds(app provision.App) ([]string, error) { runCmd, err := config.GetString("docker:run-cmd:bin") if err != nil { return nil, err } host, _ := config.GetString("host") token := app.Envs()["TSURU_APP_TOKEN"].Value return []string{"tsuru_unit_agent", host, token, app.GetName(), runCmd}, nil }
func extraRegisterCmds(app provision.App) string { host, _ := config.GetString("host") if !strings.HasPrefix(host, "http") { host = "http://" + host } if !strings.HasSuffix(host, "/") { host += "/" } token := app.Envs()["TSURU_APP_TOKEN"].Value return fmt.Sprintf(`curl -fsSL -m15 -XPOST -d"hostname=$(hostname)" -o/dev/null -H"Content-Type:application/x-www-form-urlencoded" -H"Authorization:bearer %s" %sapps/%s/units/register`, token, host, app.GetName()) }
func deployCmds(app provision.App, params ...string) ([]string, error) { deployCmd, err := config.GetString("docker:deploy-cmd") if err != nil { return nil, err } cmds := append([]string{deployCmd}, params...) host, _ := config.GetString("host") token := app.Envs()["TSURU_APP_TOKEN"].Value unitAgentCmds := []string{"tsuru_unit_agent", host, token, app.GetName(), `"` + strings.Join(cmds, " ") + `"`, "deploy"} finalCmd := strings.Join(unitAgentCmds, " ") return []string{"/bin/bash", "-lc", finalCmd}, nil }
func deployCmds(app provision.App, params ...string) ([]string, error) { deployCmd, err := config.GetString("docker:deploy-cmd") if err != nil { return nil, err } var envs string for _, env := range app.Envs() { envs += fmt.Sprintf(`%s=%s `, env.Name, strings.Replace(env.Value, " ", "", -1)) } cmds := append([]string{deployCmd}, params...) return append(cmds, envs), nil }
// deployCmds returns the commands that is used when provisioner // deploy an unit. func deployCmds(app provision.App, version string) ([]string, error) { deployCmd, err := config.GetString("docker:deploy-cmd") if err != nil { return nil, err } appRepo := repository.ReadOnlyURL(app.GetName()) var envs string for _, env := range app.Envs() { envs += fmt.Sprintf(`%s=%s `, env.Name, strings.Replace(env.Value, " ", "", -1)) } cmds := []string{deployCmd, appRepo, version, envs} return cmds, nil }
// runWithAgentCmds returns the list of commands that should be passed when the // provisioner will run a unit using tsuru_unit_agent to start. func runWithAgentCmds(app provision.App, publicKey []byte) ([]string, error) { runCmd, err := config.GetString("docker:run-cmd:bin") if err != nil { return nil, err } ssh, err := sshCmds(publicKey) if err != nil { return nil, err } host := app.Envs()["TSURU_HOST"].Value token := app.Envs()["TSURU_APP_TOKEN"].Value unitAgentCmds := []string{"tsuru_unit_agent", host, token, app.GetName(), runCmd} unitAgentCmd := strings.Join(unitAgentCmds, " ") sshCmd := strings.Join(ssh, " && ") cmd := fmt.Sprintf("%s && %s", unitAgentCmd, sshCmd) cmds := []string{"/bin/bash", "-c", cmd} return cmds, nil }
func (c *Container) addEnvsToConfig(app provision.App, cfg *docker.Config) { sharedMount, _ := config.GetString("docker:sharedfs:mountpoint") sharedBasedir, _ := config.GetString("docker:sharedfs:hostdir") host, _ := config.GetString("host") for _, envData := range app.Envs() { cfg.Env = append(cfg.Env, fmt.Sprintf("%s=%s", envData.Name, envData.Value)) } cfg.Env = append(cfg.Env, []string{ fmt.Sprintf("%s=%s", "TSURU_HOST", host), fmt.Sprintf("%s=%s", "TSURU_PROCESSNAME", c.ProcessName), }...) if sharedMount != "" && sharedBasedir != "" { cfg.Volumes = map[string]struct{}{ sharedMount: {}, } cfg.Env = append(cfg.Env, fmt.Sprintf("TSURU_SHAREDFS_MOUNTPOINT=%s", sharedMount)) } }