central-cli 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.dockerignore +3 -0
- data/.gitignore +15 -0
- data/.rspec +6 -0
- data/.rubocop.yml +5 -0
- data/Dockerfile +15 -0
- data/Gemfile +10 -0
- data/LICENSE +191 -0
- data/README.md +39 -0
- data/Rakefile +9 -0
- data/VERSION +1 -0
- data/bin/cm +85 -0
- data/central-cli.gemspec +35 -0
- data/central-docker.sh +6 -0
- data/lib/central/cli/app_command.rb +29 -0
- data/lib/central/cli/apps/build_command.rb +24 -0
- data/lib/central/cli/apps/central_yml_generator.rb +88 -0
- data/lib/central/cli/apps/common.rb +166 -0
- data/lib/central/cli/apps/deploy_command.rb +191 -0
- data/lib/central/cli/apps/docker_compose_generator.rb +48 -0
- data/lib/central/cli/apps/docker_helper.rb +85 -0
- data/lib/central/cli/apps/dockerfile_generator.rb +15 -0
- data/lib/central/cli/apps/init_command.rb +91 -0
- data/lib/central/cli/apps/list_command.rb +68 -0
- data/lib/central/cli/apps/logs_command.rb +76 -0
- data/lib/central/cli/apps/monitor_command.rb +93 -0
- data/lib/central/cli/apps/remove_command.rb +80 -0
- data/lib/central/cli/apps/restart_command.rb +38 -0
- data/lib/central/cli/apps/scale_command.rb +31 -0
- data/lib/central/cli/apps/show_command.rb +23 -0
- data/lib/central/cli/apps/start_command.rb +39 -0
- data/lib/central/cli/apps/stop_command.rb +39 -0
- data/lib/central/cli/auth/aws/create_command.rb +34 -0
- data/lib/central/cli/auth/aws_command.rb +7 -0
- data/lib/central/cli/auth/list_command.rb +28 -0
- data/lib/central/cli/auth_command.rb +9 -0
- data/lib/central/cli/bytes_helper.rb +38 -0
- data/lib/central/cli/common.rb +148 -0
- data/lib/central/cli/container_command.rb +10 -0
- data/lib/central/cli/containers/exec_command.rb +21 -0
- data/lib/central/cli/containers/inspect_command.rb +22 -0
- data/lib/central/cli/etcd/common.rb +7 -0
- data/lib/central/cli/etcd/get_command.rb +26 -0
- data/lib/central/cli/etcd/list_command.rb +31 -0
- data/lib/central/cli/etcd/mkdir_command.rb +21 -0
- data/lib/central/cli/etcd/remove_command.rb +25 -0
- data/lib/central/cli/etcd/set_command.rb +22 -0
- data/lib/central/cli/etcd_command.rb +16 -0
- data/lib/central/cli/external_registries/add_command.rb +21 -0
- data/lib/central/cli/external_registries/delete_command.rb +15 -0
- data/lib/central/cli/external_registries/list_command.rb +27 -0
- data/lib/central/cli/external_registries/remove_command.rb +13 -0
- data/lib/central/cli/external_registry_command.rb +14 -0
- data/lib/central/cli/login_command.rb +121 -0
- data/lib/central/cli/logout_command.rb +7 -0
- data/lib/central/cli/master/aws/create_command.rb +41 -0
- data/lib/central/cli/master/aws_command.rb +7 -0
- data/lib/central/cli/master/azure/create_command.rb +39 -0
- data/lib/central/cli/master/azure_command.rb +11 -0
- data/lib/central/cli/master/digital_ocean/create_command.rb +35 -0
- data/lib/central/cli/master/digital_ocean_command.rb +11 -0
- data/lib/central/cli/master/list_command.rb +28 -0
- data/lib/central/cli/master/use_command.rb +34 -0
- data/lib/central/cli/master/users/add_role_command.rb +26 -0
- data/lib/central/cli/master/users/invite_command.rb +24 -0
- data/lib/central/cli/master/users/list_command.rb +18 -0
- data/lib/central/cli/master/users/remove_command.rb +22 -0
- data/lib/central/cli/master/users/remove_role_command.rb +25 -0
- data/lib/central/cli/master/users_command.rb +15 -0
- data/lib/central/cli/master/vagrant/create_command.rb +25 -0
- data/lib/central/cli/master/vagrant/restart_command.rb +20 -0
- data/lib/central/cli/master/vagrant/ssh_command.rb +15 -0
- data/lib/central/cli/master/vagrant/start_command.rb +20 -0
- data/lib/central/cli/master/vagrant/stop_command.rb +20 -0
- data/lib/central/cli/master/vagrant/terminate_command.rb +13 -0
- data/lib/central/cli/master/vagrant_command.rb +21 -0
- data/lib/central/cli/master_command.rb +19 -0
- data/lib/central/cli/node_command.rb +30 -0
- data/lib/central/cli/nodes/add_label_command.rb +19 -0
- data/lib/central/cli/nodes/aws/create_command.rb +40 -0
- data/lib/central/cli/nodes/aws/restart_command.rb +29 -0
- data/lib/central/cli/nodes/aws/terminate_command.rb +21 -0
- data/lib/central/cli/nodes/aws_command.rb +14 -0
- data/lib/central/cli/nodes/azure/create_command.rb +40 -0
- data/lib/central/cli/nodes/azure/restart_command.rb +31 -0
- data/lib/central/cli/nodes/azure/terminate_command.rb +21 -0
- data/lib/central/cli/nodes/azure_command.rb +14 -0
- data/lib/central/cli/nodes/digital_ocean/create_command.rb +32 -0
- data/lib/central/cli/nodes/digital_ocean/restart_command.rb +27 -0
- data/lib/central/cli/nodes/digital_ocean/terminate_command.rb +19 -0
- data/lib/central/cli/nodes/digital_ocean_command.rb +14 -0
- data/lib/central/cli/nodes/label_command.rb +12 -0
- data/lib/central/cli/nodes/labels/add_command.rb +19 -0
- data/lib/central/cli/nodes/labels/remove_command.rb +23 -0
- data/lib/central/cli/nodes/list_command.rb +62 -0
- data/lib/central/cli/nodes/remove_command.rb +16 -0
- data/lib/central/cli/nodes/remove_label_command.rb +23 -0
- data/lib/central/cli/nodes/show_command.rb +49 -0
- data/lib/central/cli/nodes/ssh_command.rb +31 -0
- data/lib/central/cli/nodes/update_command.rb +20 -0
- data/lib/central/cli/nodes/vagrant/create_command.rb +27 -0
- data/lib/central/cli/nodes/vagrant/restart_command.rb +26 -0
- data/lib/central/cli/nodes/vagrant/ssh_command.rb +21 -0
- data/lib/central/cli/nodes/vagrant/start_command.rb +26 -0
- data/lib/central/cli/nodes/vagrant/stop_command.rb +26 -0
- data/lib/central/cli/nodes/vagrant/terminate_command.rb +17 -0
- data/lib/central/cli/nodes/vagrant_command.rb +20 -0
- data/lib/central/cli/register_command.rb +21 -0
- data/lib/central/cli/registry/create_command.rb +144 -0
- data/lib/central/cli/registry/delete_command.rb +22 -0
- data/lib/central/cli/registry/remove_command.rb +19 -0
- data/lib/central/cli/registry_command.rb +11 -0
- data/lib/central/cli/service_command.rb +49 -0
- data/lib/central/cli/services/add_env_command.rb +19 -0
- data/lib/central/cli/services/add_secret_command.rb +24 -0
- data/lib/central/cli/services/container_command.rb +8 -0
- data/lib/central/cli/services/containers_command.rb +32 -0
- data/lib/central/cli/services/create_command.rb +90 -0
- data/lib/central/cli/services/delete_command.rb +19 -0
- data/lib/central/cli/services/deploy_command.rb +21 -0
- data/lib/central/cli/services/env_command.rb +11 -0
- data/lib/central/cli/services/envs/add_command.rb +19 -0
- data/lib/central/cli/services/envs/list_command.rb +20 -0
- data/lib/central/cli/services/envs/remove_command.rb +18 -0
- data/lib/central/cli/services/envs_command.rb +20 -0
- data/lib/central/cli/services/link_command.rb +26 -0
- data/lib/central/cli/services/list_command.rb +42 -0
- data/lib/central/cli/services/logs_command.rb +57 -0
- data/lib/central/cli/services/monitor_command.rb +58 -0
- data/lib/central/cli/services/remove_command.rb +17 -0
- data/lib/central/cli/services/remove_env_command.rb +18 -0
- data/lib/central/cli/services/remove_secret_command.rb +28 -0
- data/lib/central/cli/services/restart_command.rb +17 -0
- data/lib/central/cli/services/scale_command.rb +17 -0
- data/lib/central/cli/services/secret_command.rb +9 -0
- data/lib/central/cli/services/secrets/link_command.rb +24 -0
- data/lib/central/cli/services/secrets/unlink_command.rb +28 -0
- data/lib/central/cli/services/services_helper.rb +360 -0
- data/lib/central/cli/services/show_command.rb +18 -0
- data/lib/central/cli/services/start_command.rb +17 -0
- data/lib/central/cli/services/stats_command.rb +74 -0
- data/lib/central/cli/services/stop_command.rb +17 -0
- data/lib/central/cli/services/unlink_command.rb +25 -0
- data/lib/central/cli/services/update_command.rb +78 -0
- data/lib/central/cli/stack_command.rb +32 -0
- data/lib/central/cli/stack_options.rb +11 -0
- data/lib/central/cli/stacks/add_user_command.rb +18 -0
- data/lib/central/cli/stacks/audit_log_command.rb +21 -0
- data/lib/central/cli/stacks/cloud_config_command.rb +41 -0
- data/lib/central/cli/stacks/common.rb +95 -0
- data/lib/central/cli/stacks/create_command.rb +26 -0
- data/lib/central/cli/stacks/current_command.rb +25 -0
- data/lib/central/cli/stacks/env_command.rb +32 -0
- data/lib/central/cli/stacks/list_command.rb +35 -0
- data/lib/central/cli/stacks/list_users_command.rb +26 -0
- data/lib/central/cli/stacks/logs_command.rb +81 -0
- data/lib/central/cli/stacks/remove_command.rb +26 -0
- data/lib/central/cli/stacks/remove_user_command.rb +17 -0
- data/lib/central/cli/stacks/show_command.rb +19 -0
- data/lib/central/cli/stacks/trusted_subnets/add_command.rb +16 -0
- data/lib/central/cli/stacks/trusted_subnets/list_command.rb +17 -0
- data/lib/central/cli/stacks/trusted_subnets/remove_command.rb +20 -0
- data/lib/central/cli/stacks/update_command.rb +27 -0
- data/lib/central/cli/stacks/use_command.rb +21 -0
- data/lib/central/cli/stacks/user_command.rb +11 -0
- data/lib/central/cli/stacks/users/add_command.rb +18 -0
- data/lib/central/cli/stacks/users/list_command.rb +18 -0
- data/lib/central/cli/stacks/users/remove_command.rb +17 -0
- data/lib/central/cli/user/forgot_password_command.rb +16 -0
- data/lib/central/cli/user/reset_password_command.rb +21 -0
- data/lib/central/cli/user/verify_command.rb +22 -0
- data/lib/central/cli/user_command.rb +12 -0
- data/lib/central/cli/vault/list_command.rb +25 -0
- data/lib/central/cli/vault/read_command.rb +17 -0
- data/lib/central/cli/vault/remove_command.rb +14 -0
- data/lib/central/cli/vault/update_command.rb +18 -0
- data/lib/central/cli/vault/write_command.rb +22 -0
- data/lib/central/cli/vault_command.rb +16 -0
- data/lib/central/cli/version.rb +5 -0
- data/lib/central/cli/version_command.rb +22 -0
- data/lib/central/cli/vpn/config_command.rb +25 -0
- data/lib/central/cli/vpn/create_command.rb +71 -0
- data/lib/central/cli/vpn/delete_command.rb +21 -0
- data/lib/central/cli/vpn/remove_command.rb +19 -0
- data/lib/central/cli/vpn_command.rb +13 -0
- data/lib/central/cli/whoami_command.rb +20 -0
- data/lib/central/client.rb +208 -0
- data/lib/central/errors.rb +10 -0
- data/lib/central/machine/aws.rb +14 -0
- data/lib/central/machine/aws/auth_provisioner.rb +161 -0
- data/lib/central/machine/aws/cloudinit.yml +71 -0
- data/lib/central/machine/aws/cloudinit_master.yml +118 -0
- data/lib/central/machine/aws/cloudinit_oauth.yml +76 -0
- data/lib/central/machine/aws/common.rb +31 -0
- data/lib/central/machine/aws/master_provisioner.rb +171 -0
- data/lib/central/machine/aws/node_destroyer.rb +46 -0
- data/lib/central/machine/aws/node_provisioner.rb +214 -0
- data/lib/central/machine/azure.rb +13 -0
- data/lib/central/machine/azure/cloudinit.yml +64 -0
- data/lib/central/machine/azure/cloudinit_master.yml +106 -0
- data/lib/central/machine/azure/logger.rb +26 -0
- data/lib/central/machine/azure/master_provisioner.rb +125 -0
- data/lib/central/machine/azure/node_destroyer.rb +52 -0
- data/lib/central/machine/azure/node_provisioner.rb +126 -0
- data/lib/central/machine/cert_helper.rb +39 -0
- data/lib/central/machine/cloud_config/cloudinit.yml +70 -0
- data/lib/central/machine/cloud_config/node_generator.rb +27 -0
- data/lib/central/machine/common.rb +16 -0
- data/lib/central/machine/digital_ocean.rb +13 -0
- data/lib/central/machine/digital_ocean/cloudinit.yml +64 -0
- data/lib/central/machine/digital_ocean/cloudinit_master.yml +118 -0
- data/lib/central/machine/digital_ocean/master_provisioner.rb +99 -0
- data/lib/central/machine/digital_ocean/node_destroyer.rb +40 -0
- data/lib/central/machine/digital_ocean/node_provisioner.rb +81 -0
- data/lib/central/machine/random_name.rb +39 -0
- data/lib/central/machine/vagrant.rb +12 -0
- data/lib/central/machine/vagrant/Vagrantfile.master.rb.erb +116 -0
- data/lib/central/machine/vagrant/Vagrantfile.node.rb.erb +32 -0
- data/lib/central/machine/vagrant/cloudinit.yml +73 -0
- data/lib/central/machine/vagrant/master_destroyer.rb +34 -0
- data/lib/central/machine/vagrant/master_provisioner.rb +79 -0
- data/lib/central/machine/vagrant/node_destroyer.rb +38 -0
- data/lib/central/machine/vagrant/node_provisioner.rb +68 -0
- data/lib/central/scripts/completer +157 -0
- data/lib/central/scripts/init +11 -0
- data/spec/central/cli/app/common_spec.rb +150 -0
- data/spec/central/cli/app/deploy_command_spec.rb +598 -0
- data/spec/central/cli/app/docker_helper_spec.rb +102 -0
- data/spec/central/cli/app/scale_spec.rb +49 -0
- data/spec/central/cli/common_spec.rb +117 -0
- data/spec/central/cli/login_command_spec.rb +31 -0
- data/spec/central/cli/master/current_command_spec.rb +55 -0
- data/spec/central/cli/master/use_command_spec.rb +37 -0
- data/spec/central/cli/master/users/invite_command_spec.rb +34 -0
- data/spec/central/cli/master/users/remove_command_spec.rb +26 -0
- data/spec/central/cli/master/users/roles/add_command_spec.rb +34 -0
- data/spec/central/cli/master/users/roles/remove_command_spec.rb +34 -0
- data/spec/central/cli/register_command_spec.rb +56 -0
- data/spec/central/cli/services/containers_command_spec.rb +40 -0
- data/spec/central/cli/services/link_command_spec.rb +38 -0
- data/spec/central/cli/services/restart_command_spec.rb +27 -0
- data/spec/central/cli/services/secrets/link_command_spec.rb +59 -0
- data/spec/central/cli/services/secrets/unlink_command_spec.rb +48 -0
- data/spec/central/cli/services/services_helper_spec.rb +170 -0
- data/spec/central/cli/services/unlink_command_spec.rb +38 -0
- data/spec/central/cli/stacks/trusted_subnets/add_command_spec.rb +37 -0
- data/spec/central/cli/stacks/trusted_subnets/list_command_spec.rb +30 -0
- data/spec/central/cli/stacks/trusted_subnets/remove_command_spec.rb +37 -0
- data/spec/central/cli/version_command_spec.rb +16 -0
- data/spec/fixtures/central.yml +17 -0
- data/spec/fixtures/docker-compose.yml +8 -0
- data/spec/fixtures/mysql.yml +3 -0
- data/spec/fixtures/wordpress-scaled.yml +3 -0
- data/spec/fixtures/wordpress.yml +2 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/client_helpers.rb +30 -0
- data/spec/support/fixtures_helpers.rb +7 -0
- data/tasks/rspec.rake +5 -0
- metadata +463 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'securerandom'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Aws
|
|
4
|
+
class CreateCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
option '--access-key', 'ACCESS_KEY', 'AWS access key ID', environment_variable: 'AWS_ACCESS_KEY_ID', required: true
|
|
8
|
+
option '--secret-key', 'SECRET_KEY', 'AWS secret key', environment_variable: 'AWS_SECRET_ACCESS_KEY', required: true
|
|
9
|
+
option '--key-pair', 'KEY_PAIR', 'EC2 key pair name', required: true
|
|
10
|
+
option '--ssl-cert', 'SSL CERT', 'SSL certificate file (default: generate self-signed cert)'
|
|
11
|
+
option '--region', 'REGION', 'EC2 Region', default: 'us-west-2'
|
|
12
|
+
option '--zone', 'ZONE', 'EC2 Availability Zone', default: 'a'
|
|
13
|
+
option '--vpc-id', 'VPC ID', 'Virtual Private Cloud (VPC) ID (default: default vpc)'
|
|
14
|
+
option '--subnet-id', 'SUBNET ID', 'VPC option to specify subnet to launch instance into (default: first subnet from vpc/az)'
|
|
15
|
+
option '--type', 'SIZE', 'Instance type', default: 't2.small'
|
|
16
|
+
option '--storage', 'STORAGE', 'Storage size (GiB)', default: '30'
|
|
17
|
+
option '--vault-secret', 'VAULT_SECRET', 'Secret key for Vault (default: generate random secret)'
|
|
18
|
+
option '--vault-iv', 'VAULT_IV', 'Initialization vector for Vault (default: generate random iv)'
|
|
19
|
+
option '--version', 'VERSION', 'Define installed Central version', default: 'latest'
|
|
20
|
+
option '--auth-provider-url', 'AUTH_PROVIDER_URL', 'Define authentication provider url (optional)'
|
|
21
|
+
|
|
22
|
+
def execute
|
|
23
|
+
require 'central/machine/aws'
|
|
24
|
+
|
|
25
|
+
provisioner = Central::Machine::Aws::MasterProvisioner.new(access_key, secret_key, region)
|
|
26
|
+
provisioner.run!(
|
|
27
|
+
type: type,
|
|
28
|
+
vpc: vpc_id,
|
|
29
|
+
zone: zone,
|
|
30
|
+
subnet: subnet_id,
|
|
31
|
+
ssl_cert: ssl_cert,
|
|
32
|
+
storage: storage,
|
|
33
|
+
version: version,
|
|
34
|
+
key_pair: key_pair,
|
|
35
|
+
auth_server: auth_provider_url,
|
|
36
|
+
vault_secret: vault_secret || SecureRandom.hex(24),
|
|
37
|
+
vault_iv: vault_iv || SecureRandom.hex(24)
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'securerandom'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Azure
|
|
4
|
+
class CreateCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
option '--subscription-id', 'SUBSCRIPTION ID', 'Azure subscription id', required: true
|
|
8
|
+
option '--subscription-cert', 'CERTIFICATE', 'Path to Azure management certificate', attribute_name: :certificate, required: true
|
|
9
|
+
option '--size', 'SIZE', 'SIZE', default: 'Small'
|
|
10
|
+
option '--network', 'NETWORK', 'Virtual Network name'
|
|
11
|
+
option '--subnet', 'SUBNET', 'Subnet name'
|
|
12
|
+
option '--ssh-key', 'SSH KEY', 'SSH private key file', required: true
|
|
13
|
+
option '--password', 'PASSWORD', 'Password'
|
|
14
|
+
option '--location', 'LOCATION', 'Location', default: 'West Europe'
|
|
15
|
+
option '--ssl-cert', 'SSL CERT', 'SSL certificate file'
|
|
16
|
+
option '--vault-secret', 'VAULT_SECRET', 'Secret key for Vault'
|
|
17
|
+
option '--vault-iv', 'VAULT_IV', 'Initialization vector for Vault'
|
|
18
|
+
option '--auth-provider-url', 'AUTH_PROVIDER_URL', 'Define authentication provider url'
|
|
19
|
+
option '--version', 'VERSION', 'Define installed Central version', default: 'latest'
|
|
20
|
+
|
|
21
|
+
def execute
|
|
22
|
+
require 'central/machine/azure'
|
|
23
|
+
provisioner = Central::Machine::Azure::MasterProvisioner.new(subscription_id, certificate)
|
|
24
|
+
provisioner.run!(
|
|
25
|
+
password: password,
|
|
26
|
+
ssh_key: ssh_key,
|
|
27
|
+
ssl_cert: ssl_cert,
|
|
28
|
+
size: size,
|
|
29
|
+
virtual_network: network,
|
|
30
|
+
subnet: subnet,
|
|
31
|
+
location: location,
|
|
32
|
+
auth_server: auth_provider_url,
|
|
33
|
+
version: version,
|
|
34
|
+
vault_secret: vault_secret || SecureRandom.hex(24),
|
|
35
|
+
vault_iv: vault_iv || SecureRandom.hex(24)
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'securerandom'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::DigitalOcean
|
|
4
|
+
class CreateCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
option '--token', 'TOKEN', 'DigitalOcean API token', required: true
|
|
8
|
+
option '--ssh-key', 'SSH_KEY', 'Path to ssh public key', required: true
|
|
9
|
+
option '--ssl-cert', 'SSL CERT', 'SSL certificate file'
|
|
10
|
+
option '--size', 'SIZE', 'Droplet size', default: '1gb'
|
|
11
|
+
option '--region', 'REGION', 'Region', default: 'ams2'
|
|
12
|
+
option '--vault-secret', 'VAULT_SECRET', 'Secret key for Vault (optional)'
|
|
13
|
+
option '--vault-iv', 'VAULT_IV', 'Initialization vector for Vault (optional)'
|
|
14
|
+
option '--mongodb-uri', 'URI', 'External MongoDB uri (optional)'
|
|
15
|
+
option '--version', 'VERSION', 'Define installed Central version', default: 'latest'
|
|
16
|
+
option '--auth-provider-url', 'AUTH_PROVIDER_URL', 'Define authentication provider url'
|
|
17
|
+
|
|
18
|
+
def execute
|
|
19
|
+
require 'central/machine/digital_ocean'
|
|
20
|
+
|
|
21
|
+
provisioner = Central::Machine::DigitalOcean::MasterProvisioner.new(token)
|
|
22
|
+
provisioner.run!(
|
|
23
|
+
ssh_key: ssh_key,
|
|
24
|
+
ssl_cert: ssl_cert,
|
|
25
|
+
size: size,
|
|
26
|
+
region: region,
|
|
27
|
+
version: version,
|
|
28
|
+
auth_server: auth_provider_url,
|
|
29
|
+
vault_secret: vault_secret || SecureRandom.hex(24),
|
|
30
|
+
vault_iv: vault_iv || SecureRandom.hex(24),
|
|
31
|
+
mongodb_uri: mongodb_uri
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'tty'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master
|
|
4
|
+
class ListCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
def execute
|
|
8
|
+
header = %w(Name Url)
|
|
9
|
+
rows = []
|
|
10
|
+
|
|
11
|
+
current_server = settings['current_server']
|
|
12
|
+
settings['servers'].each do |server|
|
|
13
|
+
name = if server['name'] == current_server
|
|
14
|
+
"* #{server['name']}"
|
|
15
|
+
else
|
|
16
|
+
server['name']
|
|
17
|
+
end
|
|
18
|
+
rows << [name, server['url']]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
ttable = TTY::Table.new header: header, rows: Array.new(rows)
|
|
22
|
+
renderer = TTY::Table::Renderer::Unicode.new(ttable)
|
|
23
|
+
renderer.border.style = :cyan
|
|
24
|
+
renderer.padding = [0, 1, 0, 1]
|
|
25
|
+
puts renderer.render
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Central::Cli::Master
|
|
2
|
+
class UseCommand < Clamp::Command
|
|
3
|
+
include Central::Cli::Common
|
|
4
|
+
|
|
5
|
+
parameter 'NAME', 'Master name to use'
|
|
6
|
+
|
|
7
|
+
def execute
|
|
8
|
+
master = find_master_by_name(name)
|
|
9
|
+
if !master.nil?
|
|
10
|
+
self.current_master = master['name']
|
|
11
|
+
puts "Using master: #{master['name'].cyan} (#{master['url']})"
|
|
12
|
+
puts "Using stack: #{current_stack.cyan}" if current_stack
|
|
13
|
+
stacks = client(require_token).get('stacks')['stacks']
|
|
14
|
+
if stacks.size > 1
|
|
15
|
+
puts ''
|
|
16
|
+
puts "You have access to following stacks and can switch between them using 'cm stack use <name>'"
|
|
17
|
+
puts ''
|
|
18
|
+
stacks.each do |stack|
|
|
19
|
+
puts " * #{stack['name']}"
|
|
20
|
+
end
|
|
21
|
+
puts ''
|
|
22
|
+
end
|
|
23
|
+
else
|
|
24
|
+
abort "Could not resolve master by name [#{name}]. For a list of known masters please run: cm master list".colorize(:red)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def find_master_by_name(name)
|
|
29
|
+
settings['servers'].each do |server|
|
|
30
|
+
return server if server['name'] == name
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require_relative '../../common'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Users
|
|
4
|
+
class AddRoleCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
parameter 'ROLE', 'Role name'
|
|
8
|
+
parameter 'USER ...', 'List of users'
|
|
9
|
+
|
|
10
|
+
def execute
|
|
11
|
+
require_api_url
|
|
12
|
+
token = require_token
|
|
13
|
+
data = { role: role }
|
|
14
|
+
|
|
15
|
+
user_list.each do |email|
|
|
16
|
+
begin
|
|
17
|
+
response = client(token).post("users/#{email}/roles", data)
|
|
18
|
+
puts "Added role #{role} to #{email}"
|
|
19
|
+
rescue => exec
|
|
20
|
+
puts "Failed to add role #{role} to #{email}".colorize(:red)
|
|
21
|
+
puts exec.message
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative '../../common'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Users
|
|
4
|
+
class InviteCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
parameter 'EMAIL ...', 'List of emails'
|
|
8
|
+
|
|
9
|
+
def execute
|
|
10
|
+
require_api_url
|
|
11
|
+
token = require_token
|
|
12
|
+
email_list.each do |email|
|
|
13
|
+
begin
|
|
14
|
+
data = { email: email }
|
|
15
|
+
response = client(token).post('users', data)
|
|
16
|
+
puts "Invitation send to #{email}"
|
|
17
|
+
rescue
|
|
18
|
+
puts "Failed to invite #{email}".colorize(:red)
|
|
19
|
+
puts exec.message
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require_relative '../../common'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Users
|
|
4
|
+
class ListCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
def execute
|
|
8
|
+
require_api_url
|
|
9
|
+
token = require_token
|
|
10
|
+
response = client(token).get('users')
|
|
11
|
+
|
|
12
|
+
response['users'].each do |user|
|
|
13
|
+
roles = user['roles'].map { |r| r['name'] }
|
|
14
|
+
puts "#{user['email']} - #{roles.join(', ')}"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require_relative '../../common'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Users
|
|
4
|
+
class RemoveCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
parameter 'EMAIL ...', 'List of emails'
|
|
8
|
+
|
|
9
|
+
def execute
|
|
10
|
+
require_api_url
|
|
11
|
+
token = require_token
|
|
12
|
+
email_list.each do |email|
|
|
13
|
+
begin
|
|
14
|
+
client(token).delete("users/#{email}")
|
|
15
|
+
rescue => exec
|
|
16
|
+
STDERR.puts "Failed to remove user #{email}".colorize(:red)
|
|
17
|
+
STDERR.puts exec.message
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require_relative '../../common'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Users
|
|
4
|
+
class RemoveRoleCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
parameter 'ROLE', 'Role name'
|
|
8
|
+
parameter 'USER ...', 'List of users'
|
|
9
|
+
|
|
10
|
+
def execute
|
|
11
|
+
require_api_url
|
|
12
|
+
token = require_token
|
|
13
|
+
|
|
14
|
+
user_list.each do |email|
|
|
15
|
+
begin
|
|
16
|
+
response = client(token).delete("users/#{email}/roles/#{role}")
|
|
17
|
+
puts "Removed role #{role} from #{email}" if response
|
|
18
|
+
rescue => exec
|
|
19
|
+
puts "Failed to remove role #{role} from #{email}".colorize(:red)
|
|
20
|
+
puts exec.message
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Central::Cli::Master
|
|
2
|
+
require_relative 'users/invite_command'
|
|
3
|
+
require_relative 'users/remove_command'
|
|
4
|
+
require_relative 'users/list_command'
|
|
5
|
+
require_relative 'users/add_role_command'
|
|
6
|
+
require_relative 'users/remove_role_command'
|
|
7
|
+
|
|
8
|
+
class UsersCommand < Clamp::Command
|
|
9
|
+
subcommand 'invite', 'Invite user to Central Machine', Users::InviteCommand
|
|
10
|
+
subcommand %w(remove rm), 'Remove user from Central Machine', Users::RemoveCommand
|
|
11
|
+
subcommand %w(list ls), 'List users', Users::ListCommand
|
|
12
|
+
subcommand 'add-role', 'Add role to user', Users::AddRoleCommand
|
|
13
|
+
subcommand 'remove-role', 'Remove role from user', Users::RemoveRoleCommand
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'securerandom'
|
|
2
|
+
|
|
3
|
+
module Central::Cli::Master::Vagrant
|
|
4
|
+
class CreateCommand < Clamp::Command
|
|
5
|
+
include Central::Cli::Common
|
|
6
|
+
|
|
7
|
+
option '--memory', 'MEMORY', 'How much memory node has', default: '512'
|
|
8
|
+
option '--version', 'VERSION', 'Define installed Central version', default: 'latest'
|
|
9
|
+
option '--auth-provider-url', 'AUTH_PROVIDER_URL', 'Define authentication provider url'
|
|
10
|
+
option '--vault-secret', 'VAULT_SECRET', 'Secret key for Vault'
|
|
11
|
+
option '--vault-iv', 'VAULT_IV', 'Initialization vector for Vault'
|
|
12
|
+
|
|
13
|
+
def execute
|
|
14
|
+
require 'central/machine/vagrant'
|
|
15
|
+
provisioner = Central::Machine::Vagrant::MasterProvisioner.new
|
|
16
|
+
provisioner.run!(
|
|
17
|
+
memory: memory,
|
|
18
|
+
version: version,
|
|
19
|
+
auth_server: auth_provider_url,
|
|
20
|
+
vault_secret: vault_secret || SecureRandom.hex(24),
|
|
21
|
+
vault_iv: vault_iv || SecureRandom.hex(24)
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Central::Cli::Master::Vagrant
|
|
2
|
+
class RestartCommand < Clamp::Command
|
|
3
|
+
include Central::Cli::Common
|
|
4
|
+
|
|
5
|
+
def execute
|
|
6
|
+
require 'central/machine/vagrant'
|
|
7
|
+
vagrant_path = "#{Dir.home}/.central/vagrant_master"
|
|
8
|
+
abort('Cannot find Vagrant central-machine'.colorize(:red)) unless Dir.exist?(vagrant_path)
|
|
9
|
+
Dir.chdir(vagrant_path) do
|
|
10
|
+
ShellSpinner 'Restarting Vagrant central-machine ' do
|
|
11
|
+
Open3.popen2('vagrant reload') do |_stdin, output, _wait|
|
|
12
|
+
while o = output.gets
|
|
13
|
+
print o if ENV['DEBUG']
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Central::Cli::Master::Vagrant
|
|
2
|
+
class SshCommand < Clamp::Command
|
|
3
|
+
include Central::Cli::Common
|
|
4
|
+
|
|
5
|
+
def execute
|
|
6
|
+
require 'central/machine/vagrant'
|
|
7
|
+
vagrant_path = "#{Dir.home}/.central/vagrant_master"
|
|
8
|
+
abort('Cannot find Vagrant central-machine'.colorize(:red)) unless Dir.exist?(vagrant_path)
|
|
9
|
+
|
|
10
|
+
Dir.chdir(vagrant_path) do
|
|
11
|
+
system('vagrant ssh')
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Central::Cli::Master::Vagrant
|
|
2
|
+
class StartCommand < Clamp::Command
|
|
3
|
+
include Central::Cli::Common
|
|
4
|
+
|
|
5
|
+
def execute
|
|
6
|
+
require 'central/machine/vagrant'
|
|
7
|
+
vagrant_path = "#{Dir.home}/.central/vagrant_master"
|
|
8
|
+
abort('Cannot find Vagrant node central-machine'.colorize(:red)) unless Dir.exist?(vagrant_path)
|
|
9
|
+
Dir.chdir(vagrant_path) do
|
|
10
|
+
ShellSpinner 'Starting Vagrant machine central-machine ' do
|
|
11
|
+
Open3.popen2('vagrant up') do |_stdin, output, _wait|
|
|
12
|
+
while o = output.gets
|
|
13
|
+
print o if ENV['DEBUG']
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Central::Cli::Master::Vagrant
|
|
2
|
+
class StopCommand < Clamp::Command
|
|
3
|
+
include Central::Cli::Common
|
|
4
|
+
|
|
5
|
+
def execute
|
|
6
|
+
require 'central/machine/vagrant'
|
|
7
|
+
vagrant_path = "#{Dir.home}/.central/vagrant_master"
|
|
8
|
+
abort('Cannot find Vagrant central-machine'.colorize(:red)) unless Dir.exist?(vagrant_path)
|
|
9
|
+
Dir.chdir(vagrant_path) do
|
|
10
|
+
ShellSpinner 'Stopping Vagrant central-machine ' do
|
|
11
|
+
Open3.popen2('vagrant halt') do |_stdin, output, _wait|
|
|
12
|
+
while o = output.gets
|
|
13
|
+
print o if ENV['DEBUG']
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|