chapi / chapi-client
chronos控制台客户端 - 像git仓库一样管理您的任务
Requires
- php: >=5.6.0
- doctrine/cache: ~1.6
- guzzlehttp/guzzle: ~6.2
- psr/log: ~1.0
- symfony/config: ~3.0
- symfony/console: ~3.0
- symfony/dependency-injection: ~3.0
- symfony/event-dispatcher: ~3.0
- symfony/filesystem: ~3.0
- symfony/monolog-bridge: ~3.0
- symfony/yaml: ~3.0
- webmozart/glob: ~4.1
Requires (Dev)
- mikey179/vfsstream: ~1.5
- phpunit/phpunit: ~5.3
- dev-master
- v0.9.0
- v0.8.1
- v0.8.0
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.0
- v0.4.0-alpha.2
- v0.4.0-alpha
- v0.3.0
- v0.2.0
- v0.1.1
- v0.1.0
- dev-dependabot/composer/guzzlehttp/psr7-1.9.1
- dev-dependabot/composer/symfony/http-kernel-3.4.49
- dev-dependabot/composer/guzzlehttp/guzzle-6.5.8
- dev-optional-frameworks
- dev-scrutinizer-patch-1
This package is not auto-updated.
Last update: 2024-09-28 18:05:18 UTC
README
Chronos和Marathon控制台客户端。
描述
像git仓库一样在控制台中管理您的Chronos和Marathon任务
- 在发送到远程之前准备您的任务
- 为任务备份和历史记录管理单独的git仓库
- 快速检查任务的状态
可以独立使用或同时使用这两个系统。
要求
- php >= 5.6
安装/配置
要安装chapi,您可以下载最新的版本或克隆此仓库。如果您克隆了仓库,则需要运行composer install
来安装所有必要的依赖项
composer install
在您第一次使用chapi之前,您必须设置Chronos API URL和本地任务仓库的路径。您可以使用configure
命令设置全局设置
bin/chapi configure
配置文件位置
Chapi尝试读取全局和本地配置文件,至少必须存在一个。如果两个文件都存在,则本地配置文件中的值将覆盖全局配置文件中定义的值。
全局配置文件的位置是
-
~/.chapi/.chapiconfig
如果未设置$CHAPI_HOME -
${CHAPI_HOME}/.chapiconfig
,如果设置了$CHAPI_HOME
在当前工作目录中搜索本地配置文件。
${PWD}/.chapiconfig
,
配置文件
您可以使用全局--profile[=PROFILE]
选项在不同配置文件之间切换。
如果没有设置配置文件,chapi将使用default
作为活动配置文件。
配置文件内容
两个配置文件都使用yaml格式。
配置位于profiles
属性中。在那里,您将找到每个配置文件的parameters
。
如果没有使用明确的配置文件,则使用default
。
profiles: default: parameters: chronos_url: http://your.chronos.url:chronos_api_port/ chronos_http_username: username chronos_http_password: password repository_dir: /path/to/your/local/task/repository marathon_url: http://your.marathon.url:marathon_api_port/ marathon_http_username: username marathon_http_password: password repository_dir_marathon: /path/to/your/local/marathon/apps/repository cache_dir: /path/to/chapi/cache/dir ignore: - *-dev - !my-active-job-dev develop: parameters: chronos_url: http://your.chronos.url:chronos_api_port/ chronos_http_username: '' chronos_http_password: '' repository_dir: /path/to/your/local/task/repository marathon_url: '' marathon_http_username: '' marathon_http_password: '' repository_dir_marathon: '' cache_dir: /path/to/chapi/cache/dir_dev
chronos_url
Chronos API URL(包括端口)。另见configure命令选项-u
。
chronos_http_username
Chronos HTTP用户名。另见configure命令选项-un
。
如果您的Chronos实例中启用了设置--http_credentials
,则此设置是必需的。
chronos_http_password
Chronos HTTP密码。另见configure命令选项-un
。
如果您的Chronos实例中启用了设置--http_credentials
,则此设置是必需的。
repository_dir
作业文件的根本路径。另见configure命令选项-r
。
marathon_url
Marathon API URL(包括端口)。另见configure命令选项-mu
。
marathon_http_username
Marathon HTTP用户名。另见configure命令选项-mun
。
marathon_http_password
Marathon HTTP密码。另见configure命令选项-mp
。
repository_dir_marathon
任务文件夹的根路径。另请参阅 配置命令 选项 -mr
。
cache_dir
缓存目录的路径。另请参阅 配置命令 选项 -d
。
更新说明
v0.9.0
由于v0.9.0引入了对Marathon的新支持,您需要更新您的配置。`parameters.yml` 结构已更改并重命名为 ` chapiconfig`。
您需要重新创建您的配置设置
bin/chapi configure
禁用服务
要禁用Chronos支持并仅使用Marathon,请将所有Chronos参数设置为 ''
profiles: default: parameters: # [....] chronos_url: '' chronos_http_username: '' chronos_http_password: '' repository_dir: ''
忽略作业
您可以在 .chapiconfig
文件中指定每个配置文件的模式,并将文件添加到您的作业存储库中,以跟踪您希望chapi忽略的作业。
- 匹配模式根据libc中 glob() 函数使用的规则,类似于常见shell使用的规则。
- 可选的前缀 "
!
" 否定模式;之前模式排除的任何匹配作业将再次包含在内。
示例内容
profiles: default: ignore: - *-dev - !my-active-job-dev dev: ignore: - "*" - "!*-dev"
用法
list
显示您的任务并根据失败进行筛选
bin/chapi list [options]
Options:
-f, --onlyFailed Display only failed jobs
-d, --onlyDisabled Display only disabled jobs
--profile[=PROFILE] Use a specific profile from your config file.
info
显示远程系统中的任务信息
bin/chapi info <jobName>
Arguments:
jobName selected job
Options:
--profile[=PROFILE] Use a specific profile from your config file.
在Marathon的情况下,任务名称将是任务的完整ID。
status
显示工作树状态
bin/chapi status
Options:
--profile[=PROFILE] Use a specific profile from your config file.
diff
显示任务和工作树之间的更改等
bin/chapi diff [<jobName>]
Arguments:
jobName Show changes for specific job
Options:
--profile[=PROFILE] Use a specific profile from your config file.
add
将任务内容添加到索引
bin/chapi add [<jobnames>]...
Arguments:
jobnames Jobs to add to the index
Options:
--profile[=PROFILE] Use a specific profile from your config file.
reset
从索引中删除任务
bin/chapi reset [<jobnames>]...
Arguments:
jobnames Jobs to add to the index
Options:
--profile[=PROFILE] Use a specific profile from your config file.
pull
从远程系统拉取任务并将其添加到本地存储库
bin/chapi pull [options] [--] [<jobnames>]...
Arguments:
jobnames Jobnames to pull
Options:
-f, --force Force to overwrite local jobs
--profile[=PROFILE] Use a specific profile from your config file.
commit
将更改提交给Chronos或Marathon
bin/chapi commit
Options:
--profile[=PROFILE] Use a specific profile from your config file.
scheduling
显示指定时间范围内的即将到来的作业
bin/chapi scheduling [options]
Options:
-s, --starttime[=STARTTIME] Start time to display the jobs
-e, --endtime[=ENDTIME] End time to display the jobs
--profile[=PROFILE] Use a specific profile from your config file.
注意:不适用于Marathon
configure
配置应用程序并添加必要的配置
bin/chapi configure
Options:
-u, --chronos_url[=CHRONOS_URL] The chronos url (inclusive port)
-un, --chronos_http_username[=CHRONOS_HTTP_USERNAME] The chronos username (HTTP credentials) [default: ""]
-p, --chronos_http_password[=CHRONOS_HTTP_PASSWORD] The chronos password (HTTP credentials) [default: ""]
-d, --cache_dir[=CACHE_DIR] Path to cache directory
-r, --repository_dir[=REPOSITORY_DIR] Root path to your job files
--profile[=PROFILE] Use a specific profile from your config file.
validate
验证本地作业
bin/chapi validate [<jobmames>]...
Arguments:
jobmames Jobs to validate
Options:
--profile[=PROFILE] Use a specific profile from your config file.
示例工作流程
添加新的作业到Chronos
将新的cron作业添加到您的Chronos服务器(通过chapi)的典型工作流程可以是
- 一个包含新的cron作业(json定义)的拉取请求进入git存储库(由您的同事创建)
- 接受拉取请求,并通过
cd ~/my/clone
切换到您的本地克隆 - 通过
git pull
更新您的本地存储库 - 通过
chapi status
检查当前状态 - 通过
chapi validate .
验证一切 - 通过
chapi add jobXy
添加新的作业 - 应用更改并通过
chapi commit
更新Chronos服务器
依次将作业从Chronos集群A移动到集群B
如果需要将任务从Chronos集群移动到另一个集群,Chapi可以为您提供支持。
-
设置正常的chapi配置和本地作业存储库
-
创建一个新的空文件夹,代表您的第二个Chronos集群存储库
mkdir clusterBjobs
- 在新的文件夹中添加一个本地的
.chapiconfig
文件(见 配置)
touch clusterBjobs/.chapiconfig
- 编辑文件并添加第二个Chronos集群的
chronos_url
和repository_dir
参数
parameters: chronos_url: http://your.second.chronos.url:chronos_api_port/ repository_dir: /path/to/clusterBjobs
- 打开第二个控制台,切换到包含
.chapiconfig
文件的新的文件夹
cd clusterBjobs
- 现在您可以从正常的存储库逐个移动作业到新的存储库
mv clusterAjobs/jobXy.json clusterBjobs/jobXy.json
- 控制台1中的Chapi将删除“旧”集群中的作业,而控制台2中的Chapi将添加已移动的作业到新的集群。
支持的两个系统的命令
Marathon中的特殊情况
- 从马拉松中拉取任务将丢弃带有默认值的json对象。目前这样做是因为调用马拉松获取应用程序信息时也会发送默认值。未来可能会实现检查这一逻辑的功能。
- 在创建配置中无法从马拉松中拉取组应用程序。这是因为一旦应用程序进入马拉松,特定的组配置就会丢失。
- 马拉松应用程序ID应该以
/
开头。这是一个好习惯。需要强制执行此操作的原因是因为具有myapp
的本地配置在马拉松中会被视为/myapp
,而在chapi中则被视为两个不同的应用程序。
如果您发现任何其他问题或边缘情况,请创建一个问题。
支持的Chronos版本
- v2.5
支持的Marathon版本
- v1.6.322
Docker
您还可以在Docker容器中运行chapi。您可以在dockerhub下找到最新版本。
为Docker准备配置文件
创建一个包含以下内容的.chapiconfig_docker
文件
profiles: default: parameters: cache_dir: /root/.chapi/cache chronos_url: 'http://your.chronos.url:4400/' chronos_http_username: YOUR_CHRONOS_USER chronos_http_password: YOUR_CHRONOS_PASS repository_dir: /chronos-jobs marathon_url: 'http://your.marathon.url:8080/' marathon_http_username: YOUR_MARATHON_USER marathon_http_password: YOUR_MARATHON_PASS repository_dir_marathon: /marathon-jobs
运行docker
docker pull msiebeneicher/chapi-client:latest docker run -it \ -v ~/.chapiconfig_docker:/root/.chapi/.chapiconfig \ -v /your/local/checkout/chronos-jobs:/chronos-jobs \ -v /your/local/checkout/marathon-jobs:/marathon-jobs \ msiebeneicher/chapi-client:latest <COMMAND>
开发时运行docker
docker pull msiebeneicher/chapi-client:latest
docker run -it \
-v ~/.chapiconfig_docker:/root/.chapi/.chapiconfig_docker \
-v /your/local/checkout/chronos-jobs:/chronos-jobs \
-v /your/local/checkout/marathon-jobs:/marathon-jobs \
-v /your/local/checkout/chapi:/chapi \
--entrypoint /bin/bash \
msiebeneicher/chapi-client:latest
待办事项
Marathon
- 马拉松的验证命令尚未实现。
- 列表命令将marathon实体的状态设置为
ok
。这可能会显示应用程序的最后状态。