forked from coop-cloud/abra
319 lines
7.2 KiB
Go
319 lines
7.2 KiB
Go
package internal
|
|
|
|
import (
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
// Secrets stores the variable from SecretsFlag
|
|
var Secrets bool
|
|
|
|
// SecretsFlag turns on/off automatically generating secrets
|
|
var SecretsFlag = &cli.BoolFlag{
|
|
Name: "secrets",
|
|
Aliases: []string{"S"},
|
|
Value: false,
|
|
Usage: "Automatically generate secrets",
|
|
Destination: &Secrets,
|
|
}
|
|
|
|
// Pass stores the variable from PassFlag
|
|
var Pass bool
|
|
|
|
// PassFlag turns on/off storing generated secrets in pass
|
|
var PassFlag = &cli.BoolFlag{
|
|
Name: "pass",
|
|
Aliases: []string{"P"},
|
|
Value: false,
|
|
Usage: "Store the generated secrets in a local pass store",
|
|
Destination: &Pass,
|
|
}
|
|
|
|
// Context is temp
|
|
var Context string
|
|
|
|
// ContextFlag is temp
|
|
var ContextFlag = &cli.StringFlag{
|
|
Name: "context",
|
|
Value: "",
|
|
Aliases: []string{"c"},
|
|
Destination: &Context,
|
|
}
|
|
|
|
// Force force functionality without asking.
|
|
var Force bool
|
|
|
|
// ForceFlag turns on/off force functionality.
|
|
var ForceFlag = &cli.BoolFlag{
|
|
Name: "force",
|
|
Value: false,
|
|
Aliases: []string{"f"},
|
|
Destination: &Force,
|
|
}
|
|
|
|
// Chaos engages chaos mode.
|
|
var Chaos bool
|
|
|
|
// ChaosFlag turns on/off chaos functionality.
|
|
var ChaosFlag = &cli.BoolFlag{
|
|
Name: "chaos",
|
|
Value: false,
|
|
Aliases: []string{"ch"},
|
|
Usage: "Deploy uncommitted recipes changes. Use with care!",
|
|
Destination: &Chaos,
|
|
}
|
|
|
|
// DNSProvider specifies a DNS provider.
|
|
var DNSProvider string
|
|
|
|
// DNSProviderFlag selects a DNS provider.
|
|
var DNSProviderFlag = &cli.StringFlag{
|
|
Name: "provider",
|
|
Value: "",
|
|
Aliases: []string{"p"},
|
|
Usage: "DNS provider",
|
|
Destination: &DNSProvider,
|
|
}
|
|
|
|
var NoInput bool
|
|
var NoInputFlag = &cli.BoolFlag{
|
|
Name: "no-input",
|
|
Value: false,
|
|
Aliases: []string{"n"},
|
|
Usage: "Toggle non-interactive mode",
|
|
Destination: &NoInput,
|
|
}
|
|
|
|
var DNSType string
|
|
|
|
var DNSTypeFlag = &cli.StringFlag{
|
|
Name: "type",
|
|
Value: "",
|
|
Aliases: []string{"t"},
|
|
Usage: "Domain name record type (e.g. A)",
|
|
Destination: &DNSType,
|
|
}
|
|
|
|
var DNSName string
|
|
|
|
var DNSNameFlag = &cli.StringFlag{
|
|
Name: "name",
|
|
Value: "",
|
|
Aliases: []string{"n"},
|
|
Usage: "Domain name record name (e.g. mysubdomain)",
|
|
Destination: &DNSName,
|
|
}
|
|
|
|
var DNSValue string
|
|
|
|
var DNSValueFlag = &cli.StringFlag{
|
|
Name: "value",
|
|
Value: "",
|
|
Aliases: []string{"v"},
|
|
Usage: "Domain name record value (e.g. 192.168.1.1)",
|
|
Destination: &DNSValue,
|
|
}
|
|
|
|
var DNSTTL int
|
|
|
|
var DNSTTLFlag = &cli.IntFlag{
|
|
Name: "ttl",
|
|
Value: 86400,
|
|
Aliases: []string{"T"},
|
|
Usage: "Domain name TTL value)",
|
|
Destination: &DNSTTL,
|
|
}
|
|
|
|
var DNSPriority int
|
|
|
|
var DNSPriorityFlag = &cli.IntFlag{
|
|
Name: "priority",
|
|
Value: 10,
|
|
Aliases: []string{"P"},
|
|
Usage: "Domain name priority value",
|
|
Destination: &DNSPriority,
|
|
}
|
|
|
|
var ServerProvider string
|
|
|
|
var ServerProviderFlag = &cli.StringFlag{
|
|
Name: "provider",
|
|
Aliases: []string{"p"},
|
|
Usage: "3rd party server provider",
|
|
Destination: &ServerProvider,
|
|
}
|
|
|
|
var CapsulInstanceURL string
|
|
|
|
var CapsulInstanceURLFlag = &cli.StringFlag{
|
|
Name: "capsul-url",
|
|
Value: "yolo.servers.coop",
|
|
Aliases: []string{"cu"},
|
|
Usage: "capsul instance URL",
|
|
Destination: &CapsulInstanceURL,
|
|
}
|
|
|
|
var CapsulName string
|
|
|
|
var CapsulNameFlag = &cli.StringFlag{
|
|
Name: "capsul-name",
|
|
Value: "",
|
|
Aliases: []string{"cn"},
|
|
Usage: "capsul name",
|
|
Destination: &CapsulName,
|
|
}
|
|
|
|
var CapsulType string
|
|
|
|
var CapsulTypeFlag = &cli.StringFlag{
|
|
Name: "capsul-type",
|
|
Value: "f1-xs",
|
|
Aliases: []string{"ct"},
|
|
Usage: "capsul type",
|
|
Destination: &CapsulType,
|
|
}
|
|
|
|
var CapsulImage string
|
|
|
|
var CapsulImageFlag = &cli.StringFlag{
|
|
Name: "capsul-image",
|
|
Value: "debian10",
|
|
Aliases: []string{"ci"},
|
|
Usage: "capsul image",
|
|
Destination: &CapsulImage,
|
|
}
|
|
|
|
var CapsulSSHKeys cli.StringSlice
|
|
|
|
var CapsulSSHKeysFlag = &cli.StringSliceFlag{
|
|
Name: "capsul-ssh-keys",
|
|
Aliases: []string{"cs"},
|
|
Usage: "capsul SSH key",
|
|
Destination: &CapsulSSHKeys,
|
|
}
|
|
|
|
var CapsulAPIToken string
|
|
|
|
var CapsulAPITokenFlag = &cli.StringFlag{
|
|
Name: "capsul-token",
|
|
Aliases: []string{"ca"},
|
|
Usage: "capsul API token",
|
|
EnvVars: []string{"CAPSUL_TOKEN"},
|
|
Destination: &CapsulAPIToken,
|
|
}
|
|
|
|
var HetznerCloudName string
|
|
|
|
var HetznerCloudNameFlag = &cli.StringFlag{
|
|
Name: "hetzner-name",
|
|
Value: "",
|
|
Aliases: []string{"hn"},
|
|
Usage: "hetzner cloud name",
|
|
Destination: &HetznerCloudName,
|
|
}
|
|
|
|
var HetznerCloudType string
|
|
|
|
var HetznerCloudTypeFlag = &cli.StringFlag{
|
|
Name: "hetzner-type",
|
|
Aliases: []string{"ht"},
|
|
Usage: "hetzner cloud type",
|
|
Destination: &HetznerCloudType,
|
|
Value: "cx11",
|
|
}
|
|
|
|
var HetznerCloudImage string
|
|
|
|
var HetznerCloudImageFlag = &cli.StringFlag{
|
|
Name: "hetzner-image",
|
|
Aliases: []string{"hi"},
|
|
Usage: "hetzner cloud image",
|
|
Value: "debian-10",
|
|
Destination: &HetznerCloudImage,
|
|
}
|
|
|
|
var HetznerCloudSSHKeys cli.StringSlice
|
|
|
|
var HetznerCloudSSHKeysFlag = &cli.StringSliceFlag{
|
|
Name: "hetzner-ssh-keys",
|
|
Aliases: []string{"hs"},
|
|
Usage: "hetzner cloud SSH keys (e.g. me@foo.com)",
|
|
Destination: &HetznerCloudSSHKeys,
|
|
}
|
|
|
|
var HetznerCloudLocation string
|
|
|
|
var HetznerCloudLocationFlag = &cli.StringFlag{
|
|
Name: "hetzner-location",
|
|
Aliases: []string{"hl"},
|
|
Usage: "hetzner cloud server location",
|
|
Value: "hel1",
|
|
Destination: &HetznerCloudLocation,
|
|
}
|
|
|
|
var HetznerCloudAPIToken string
|
|
|
|
var HetznerCloudAPITokenFlag = &cli.StringFlag{
|
|
Name: "hetzner-token",
|
|
Aliases: []string{"ha"},
|
|
Usage: "hetzner cloud API token",
|
|
EnvVars: []string{"HCLOUD_TOKEN"},
|
|
Destination: &HetznerCloudAPIToken,
|
|
}
|
|
|
|
// Debug stores the variable from DebugFlag.
|
|
var Debug bool
|
|
|
|
// DebugFlag turns on/off verbose logging down to the DEBUG level.
|
|
var DebugFlag = &cli.BoolFlag{
|
|
Name: "debug",
|
|
Aliases: []string{"d"},
|
|
Value: false,
|
|
Destination: &Debug,
|
|
Usage: "Show DEBUG messages",
|
|
}
|
|
|
|
// SSHFailMsg is a hopefully helpful SSH failure message
|
|
var SSHFailMsg = `
|
|
Woops, Abra is unable to connect to connect to %s.
|
|
|
|
Here are a few tips for debugging your local SSH config. Abra uses plain 'ol
|
|
SSH to make connections to servers, so if your SSH config is working, Abra is
|
|
working.
|
|
|
|
In the first place, Abra will always try to read your Docker context connection
|
|
string for SSH connection details. You can view your server context configs
|
|
with the following command. Are they correct?
|
|
|
|
abra server ls
|
|
|
|
Is your ssh-agent running? You can start it by running the following command:
|
|
|
|
eval "$(ssh-agent)"
|
|
|
|
If your SSH private key loaded? You can check by running the following command:
|
|
|
|
ssh-add -L
|
|
|
|
If you are using a non-default public/private key, you can configure this in
|
|
your ~/.ssh/config file which Abra will read in order to figure out connection
|
|
details:
|
|
|
|
Host foo.coopcloud.tech
|
|
Hostname foo.coopcloud.tech
|
|
User bar
|
|
Port 12345
|
|
IdentityFile ~/.ssh/bar@foo.coopcloud.tech
|
|
|
|
If you're only using password authentication, you can use the following config:
|
|
|
|
Host foo.coopcloud.tech
|
|
Hostname foo.coopcloud.tech
|
|
User bar
|
|
Port 12345
|
|
PreferredAuthentications=password
|
|
PubkeyAuthentication=no
|
|
|
|
Good luck!
|
|
|
|
`
|