Skip to content

tt cluster worker publish implementation #5660

@TarantoolBot

Description

@TarantoolBot

Implement tt cluster worker publish command for publishing worker
configurations to etcd or tarantool config storage (TCS). The command
accepts a URL with format:

http(s)://[username:password@]host:port/prefix/host-name/worker-name
  • prefix - a base path to the worker configuration.
  • host-name - a name of the host.
  • worker-name - a name of the worker.

Possible arguments:

  • timeout - a request timeout in seconds (default 3.0).
  • ssl_key_file - a path to a private SSL key file.
  • ssl_cert_file - a path to an SSL certificate file.
  • ssl_ca_file - a path to a trusted certificate authorities
    (CA) file.
  • ssl_ca_path - a path to a trusted certificate authorities
    (CA) directory.
  • ssl_ciphers - a list of allowed SSL ciphers.
  • verify_host - set off (default true) verification of the
    certificate’s name against the host.
  • verify_peer - set off (default true) verification of the peer’s
    SSL certificate.

The command supports the following environment variables:

  • TT_CLI_USERNAME - specifies a Tarantool username;
  • TT_CLI_PASSWORD - specifies a Tarantool password.
  • TT_CLI_ETCD_USERNAME - specifies a Etcd username;
  • TT_CLI_ETCD_PASSWORD - specifies a Etcd password.

The priority of credentials:

environment variables < command flags < URL credentials.

Usage:

tt cluster worker publish <URI> <FILE>

Supported flags:

--force             force publish and skip checking existence

-h, --help help for publish
-p, --password string password (used as etcd/tarantool config
storage credentials)
-u, --username string username (used as etcd/tarantool config
storage credentials)

Example:

tt cluster worker publish \
  https://user:pass@localhost:2379/cluster/workers/host/server-1 \
  worker.yaml

The implementation uses go-storage library for both etcd and TCS.
Without --force flag, it checks if the key already exists before
publishing. Due to go-storage limitations (no "count" predicate
support), this check is done via two separate transactions with a
potential race condition.

Closes TNTP-7062
Requested by @oleg-jukovec in tarantool/tt@303dc24.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions