gamegos/consul-imex

Consul 键/值存储的导入/导出工具

1.0.0-rc3 2018-11-14 07:55 UTC

This package is auto-updated.

Last update: 2024-08-26 18:33:41 UTC


README

Consul-Imex 是一个简单的用于通过 Consul HTTP API 导入/导出 Consul 键/值存储的工具。

  • 导出前缀下的所有键,并将其保存为 json 文件。
  • 从 json 文件导入键到 Consul 下的指定前缀。
  • 复制键
    • 从前缀到另一个前缀。
    • 从服务器到另一个服务器下的指定前缀。

安装

您可以通过多种方式安装 Consul Imex

  • 可执行 phar 文件(需要 PHP >=5.5.9)
  • Docker 镜像(需要 Docker 引擎)
  • Composer 依赖(需要 Git,Composer 和 PHP >=5.5.9)
  • 单个 PHP 项目(需要 Git,Composer 和 PHP >=5.5.9)

作为可执行 phar 文件安装

https://github.com/gamegos/consul-imex/releases/download/1.0.0-rc1/consul-imex.phar 下载 phar 文件,然后为其分配执行权限。

示例

wget -O /usr/local/bin/consul-imex https://github.com/gamegos/consul-imex/releases/download/1.0.0-rc1/consul-imex.phar
chmod +x /usr/local/bin/consul-imex

作为 Docker 镜像安装

docker pull sozpinar/consul-imex

作为 Composer 依赖安装

composer require gamegos/consul-imex

作为 PHP 项目安装

通过 composer 安装

composer create-project gamegos/consul-imex

或克隆/下载并手动安装

git clone https://github.com/gamegos/consul-imex.git
cd consul-imex
composer install

使用方法

作为可执行 phar 文件运行

consul-imex <command> [options] [arguments]

作为 Docker 容器运行

有关 Docker 使用详细信息的说明,请参阅 Docker 使用说明

docker run -t -v `pwd`:/consul-imex sozpinar/consul-imex <command> [options] [arguments]

作为 composer vendor 二进制运行

composer exec -- consul-imex <command> [options] [arguments]

作为 PHP 脚本运行

php scripts/consul-imex.php <command> [options] [arguments]

导出

使用方法

consul-imex export [options] <file>

参数

  • file: 输出数据文件。

选项

  • --url (-u): Consul 服务器 URL。
  • --prefix (-p): 路径前缀。
  • --token (-c): Consul 令牌。

导入

使用方法

consul-imex import [options] <file>

参数

  • file: 输入数据文件。

选项

  • --url (-u): Consul 服务器 URL。
  • --prefix (-p): 路径前缀。
  • --token (-c): Consul 令牌。

复制

使用方法

consul-imex copy [options] <source> <target>

参数

  • source: 源前缀。
  • target: 目标前缀。

选项

  • --source-server (-s): 源服务器 URL。
  • --target-server (-t): 目标服务器 URL。如果省略,则使用源服务器作为目标服务器。
  • --source-server-token (-c): 源服务器 Consul 令牌。
  • --target-server-token: 目标服务器 Consul 令牌。如果省略,则使用源服务器令牌作为目标服务器令牌。

示例

导出

$ consul-imex export -u https://:8500 -p /old/prefix my-data.json
93 keys are fetched.

使用令牌键导出

$ consul-imex export -c 4874874a-2a3s-7892-123e-597a4e1v87e1 -u https://:8500 -p /old/prefix my-data.json
93 keys are fetched.

导入

$ consul-imex import -u https://:8500 -p /new/prefix my-data.json
93 keys are stored. (25 new directories are created.)

使用令牌键导入

$ consul-imex import -c 4874874a-2a3s-7892-123e-597a4e1v87e1 -u https://:8500 -p /new/prefix my-data.json
93 keys are stored. (25 new directories are created.)

复制

将键从 /old/prefix 复制到 /new/prefix

$ consul-imex copy -s https://:8500 /old/prefix /new/prefix
93 keys are fetched.
93 keys are stored. (25 new directories are created.)
Operation completed.

使用令牌将键从 /old/prefix 复制到 /new/prefix

$ consul-imex copy -s https://:8500 -c 4874874a-2a3s-7892-123e-597a4e1v87e1 /old/prefix /new/prefix
93 keys are fetched.
93 keys are stored. (25 new directories are created.)
Operation completed.

/my/prefix 下的键复制到另一个服务器

$ consul-imex copy -s https://:8500 -t http://anotherhost:8500 /my/prefix /my/prefix
93 keys are fetched.
93 keys are stored. (25 new directories are created.)
Operation completed.

使用令牌将 /my/prefix 下的键复制到另一个服务器

$ consul-imex copy -s https://:8500 -c 4874874a-2a3s-7892-123e-597a4e1v87e1 -t http://anotherhost:8500 --target-server-token 6242c15a-9w4x-2318-61a2-8as8c47317 /my/prefix /my/prefix
93 keys are fetched.
93 keys are stored. (25 new directories are created.)
Operation completed.

将所有键复制到另一个服务器

$ consul-imex copy -s https://:8500 -t http://anotherhost:8500
492 keys are fetched.
492 keys are stored. (108 new directories are created.)
Operation completed.

Docker 使用说明

输入/输出文件位置

要使用 Docker 中的 importexport 命令,输入/输出文件必须可供容器访问。镜像的默认工作目录为 /consul-imex,输入/输出文件默认放置在此目录下。

export 命令的示例

示例 1:将主机目录挂载到容器中用于 export 操作,然后容器将在主机目录中创建 my-data.json 文件。

$ docker run -it -v `pwd`:/consul-imex sozpinar/consul-imex export -u 192.168.1.20:8500 -p /foo/bar my-data.json
93 keys are fetched.

示例 2:export 操作完成后将输出文件复制到您的当前工作目录。

$ docker run -it sozpinar/consul-imex export -u 192.168.1.20:8500 -p /foo/bar my-data.json
93 keys are fetched.
$ docker cp `docker ps -ql`:/consul-imex/my-data.json .

import 命令的示例

示例 1:将主机目录挂载到容器中用于 import 操作,然后容器将从主机目录中读取 my-data.json 文件。

$ docker run -it -v `pwd`:/consul-imex sozpinar/consul-imex import -u 192.168.1.20:8500 -p /new/prefix my-data.json
93 keys are stored. (25 new directories are created.)

示例2:将文件挂载到容器中,并用于导入操作。此方法不需要将输入文件放置在默认工作目录中。

$ docker run -it -v `pwd`/my-data.json:/my-data.json sozpinar/consul-imex import -u 192.168.1.20:8500 -p /new/prefix -v /my-data.json
93 keys are stored. (25 new directories are created.)

网络配置

如果您的Consul服务位于私有网络或没有公网URL,您可能需要为docker容器设置自定义网络配置。

示例

docker run -it --net=host sozpinar/consul-imex copy -s https://:8500 -t http://anotherhost:8500

如果默认的docker网络类型是bridge,则正在运行的容器无法识别'localhost'。因此,我们简单地添加--net=host参数,使容器使用主机机器的网络。

已知问题

包含值的目录

Consul键/值存储允许目录具有类似于普通键的值。如果目录有值,Consul Imex将忽略该值或子键;这取决于键的顺序。