看涨的牧场主部署cli应用程序

matador-deplo的Python项目详细描述


====================================================
Matador-Deploy: Deployment Assister For Rancher
====================================================


### About this project
====================================================
The aim of this project was to create a在生产、准备和开发环境中尝试使用重复环境时,为Rancher简化了构建过程。它允许用户创建一个模板docker compose和rancher compose文件,然后添加一个配置文件,在每个环境不同的地方提供配置。它充分利用了[rancher compose]模块完成的工作(https://github.com/rancher/rancher-compose)以及在[rancher]完成的伟大工作(http://rancher.com/)。有关使用其产品的更多信息,请参阅其文档。



\[docker compose](https://docs.docker.com/compose/compose file/),[牧场主](http://docs.rancher.com/rancher/latest/en/)和[牧场主合成](http://docs.rancher.com/rancher/v1.0/zh/rancher compose/)。这些工具本身非常复杂,您需要对它们有很好的理解才能使用这个项目。我们将详细介绍这些文件的一些例子,但有关详细的使用说明,请参见其各自的文档页。
入门
链接](https://www.python.org/downloads/)
目前这个应用程序已经在python 2.7和3.5中进行了测试。使用以下命令测试成功的安装。

$python--version
python 2.7.11
or

$python3--version
python 3.5.1
但是,如果需要安装,上面提供的链接是单独的最新版本。使用以下命令测试安装:

$pip--version
环境。从[最新版本的二进制文件](https://github.com/rancher/rancher-compose/releases)安装最简单,如果您使用的是unix环境,只需将其复制到系统上的以下目录:

/usr/local/bin

这将允许您在整个终端上使用它。使用以下命令测试安装:

$rancher compose--version
rancher compose version v0.8.0

docker:[下载链接](https://docs.docker.com/engine/installation/)
您需要构建docker容器并将其推送到[docker集线器](https://hub.docker.com/),您还需要一个帐户。有关在DockerHub上安装应用程序所需的Docker映像和标记的详细信息,请参阅示例生成部分。


\提供在pipy网络上,因此可以使用以下命令轻松安装:

$pip install matador deploy

或者,可以通过从github下载源代码从源代码构建,导航到Git集线器存储库的根目录并运行以下命令:

$python setup.py install


\atador deploy cli旨在解决两个问题。第一个是允许您为docker-compose.yml和rancher-compose.yml文件创建模板,并在一个config.yml文件中提供它们之间的单独配置选项。第二,是确认Rancher环境和API/密钥是您实际要更新的内容。


模板和配置文件。下面是一个示例节点应用程序结构:

-数据库/
-src/--
-客户端/
-脚本/
-scss/
-服务器/

-gulpfile.js
-makefile
-包.json
-readme.md

脚本位于thr根目录中时,您需要创建三个配置文件并将它们添加到模板目录:


root/--
-数据库/
-src/--
-客户端/
-脚本/
-scss/
-服务器/

-模板/---|
-config.yml
-docker compose template.yml
-rancher compose template.yml

-build/<;!--如果此目录不存在,则将在脚本中创建它-->;
-gulpfile.js
-makefile
-package.json
-readme.md

build目录将是docker-compose.yml和rancher-compose.yml组合文件的位置,应用程序更新rancher配置时将使用这些文件。这些文件的内容将在稍后的项目中定义。


文件](https://docs.docker.com/compose/compose-file/),可在提供的链接中找到更多文档。但是这里有一个基本的例子,它使用一个简单的web映像,负载均衡器,Mongo数据库。

简而言之,此文件配置所有Docker容器/图像容器之间的连接。

链接:
-web:web
标签:
io.rancher.scheduler.global:'true'
tty:true
stdin_open:true
web:
公开:
-3000
链接:
-db:mongodb
db:
image:mongo:3
容器名:mongodb
端口:
-"27017:27017"


此应用程序确实需要将主应用程序容器称为**web**,因为它使用此容器根据您正在升级的环境动态生成所需的docker映像。

缩进在.yaml文件中非常重要,因此请确保所有文件的间距都正确。[更多信息可以在Offcail Yaml文档(http://www.yaml.org/start.html)中找到](http://www.yaml.org/start.html)


是的文件](http://docs.rancher.com/rancher/v1.0/zh/rancher compose/commands/)。以下是牧场主撰写文件在牧场主文档中的基本操作说明:

*若要启用牧场主支持的功能,还可以使用rancher-compose.yml扩展和覆盖docker-compose.yml。例如,服务和健康检查的比例将在rancher-compose.yml文件中。*

保健品eck:
端口:42
间隔:2000
不健康阈值:3
健康阈值:2
响应超时:2000

网络:
比例:2
健康检查:
端口:3000
间隔:2000
不健康阈值:3
健康阈值:2
响应超时:2000




这里有不同环境的环境变量或docker-compose.yml文件之间的其他特定变化配置。这里有一个示例,随后将解释详细信息。

-node_env=dev
标签:
io.rancher.scheduler.affinity:host_label:client=seed,env=development
暂存:
web:
环境:
-node_env=staging
标签:
io.rancher.scheduler.affinity:host_label:client=seed,env=staging
com.alesimutants.pods:version=0.1,branch=dev
产品:
lb:
标签:
io.rancher.scheduler.local:'false'
网络:
环境:
-节点环境=prod
标签:
io.rancher.scheduler.affinity:host_label:client=seed,env=production
io.rancher.scheduler.local:"false"




注意:不同环境的名称必须遵循此约定。

**image_base:*这是基本dockerhub映像名称,它是**必需的**。搜索特定环境特定标记时,将自动添加正确的标记。要使应用程序正常运行,必须遵循此约定。例如,如果我们的基本dockerhub映像名是seed/matador deploy,然后,我们需要的与我们的环境相对应的标记如下:

*base:*seed/matador deploy
*dev:*seed/matador deploy:dev
*staging:*seed/matador deploy:staging
*prod:*seed/matador deploy:latest

在命令行中运行应用程序时传递给应用程序的环境标志。
注意:docker-compose-template.yml中的图像标记应被这些约定覆盖,因此,您不需要在docker-compose.yml模板中添加Web容器的映像。

**项目名称:**这是在Rancher中创建Rancher环境时将为其提供的基名称,也是**必需的**。如果我们的项目名称是斗牛士:

*base:*matador
*dev:*matador dev
*staging:*matador staging
*prod:*matador prod

字段
=======================



根据传递给命令行应用程序的环境,应用程序将在全局和特定环境字段中提供的配置中生成。实际上,无论指定的环境如何,在全局字段中添加的任何内容都将添加到docker-compose.yml文件中。然后,应用程序将为正在运行应用程序的特定字段(例如:dev/staging/prod)添加字段中包含的任何内容。在docker-compose.yml文件中定义的任何内容都将被添加到任何可能的地方,列表和字典将被添加到,但是任何简单设置为一个变量的内容都将被此配置文件中的内容覆盖。

首先添加全局配置,然后添加特定于环境的配置第二。这意味着特定于环境的配置将覆盖全局字段中的任何重复配置。

牧场主撰写命令。如果在更新牧场主环境时出现错误,则会有机会查看应用程序的输出。




















;实际使用工具











太多了背景资料,那我们到底该怎么办?

由于应用程序只需要yaml配置文件,只要提供了templates文件夹(而您不在其中),那么部署过程就应该正常工作。

\以下命令:

$matador deploy--url<;rancher url>;--key<;rancher env key>;--secret<;rancher secret key>;--env<;dev staging prod>;

**-url:**这是指您正试图将您的牧场主配置上载到的牧场主url。
**-key:**这是需要为您正试图更新的牧场主环境专门创建的api密钥。
**-secret:**这是密码的密钥当您为您的Rancher环境创建新的API密钥时,将提供给您。
**-env:**这是您要更新的环境。它接受以下选项之一是<;dev staging prod>;







$matador deploy——url http://localhost:8080--key 9f68c78-secret pekmsbyjczznxy4rzyu——env dev









<<
<<

<<














=======================================

标记也可以传递给应用程序

flags[-hfvd]
**-h**显示帮助文档--(将停止应用程序运行,除非还存在强制模式)
**-f**强制模式:强制应用程序运行并抑制所有警告
**-v**详细模式:打印其他消息的进程运行
**-d**开发模式:将绕过命令行参数,并设置牧场主配置的默认值


示例与以前的命令一起使用,以详细和强制模式运行:

$matador deploy-vf--urlhttp://localhost:8080--key 9f68c78-secret pekmsbyjcznxhy4rzyu--env dev

最后,还可以传递版本标志来查看当前安装的版本,以及它所使用的Rancher编写版本。


$Matador Deploy——版本
>Matador Deployv0.0.0.1版
>Ratcher编写v0.8.0版




《关于Rancher编写v0.8.8.0版的附加要求和提示



《关于Rancher编写v0.8.8.0版的附加要求和提示

==================================================================/>其中烦人的事情是不断地将非常长的密钥文件复制到命令中,因此您应该将这些密钥作为**变量添加到bash概要文件**。这可以通过导航到用户目录的根目录并打开.bash配置文件并在其末尾添加密钥来轻松完成:

$cd~/
$open.bash配置文件


myapp_key_dev=knsdjfasflasdjfns
myapp_secret_dev=sdlf4jlnl42n2


注意:您将需要为创建的每个不同环境使用这些键值对。


==========================


==========>如果您以前没有使用命令行或rancher compose来更新您的应用程序,这里是有关如何创建新的Rancher环境密钥的详细说明。

打开要为其创建密钥的Rancher用户界面和环境。
单击网页顶部的"API"选项卡。
然后单击"添加环境API密钥"按钮。
设置名称和说明。
然后会弹出一个显示密钥和密钥的弹出窗口。
将它们保存到某个位置(或直接添加到.bash\u配置文件中,如上所述)
开始更新它们的环境!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在ElasticSearch中将SearchHit转换为Java对象   第三方库类的java重写XmlAdapter   java如何使用动画类获得平滑的动画效果?   Java PDFBox如果文本内容超过PDF的第一页,如何添加新页面?   Java二叉搜索树u根到最近叶的距离   java什么是diff Scanner和BufferedReader   java如何设计不生成并行数组的程序   java多次声明变量会降低执行速度吗?   java如何使用JXLAPI读取下拉列表的值   多线程为什么自定义阻塞队列在Java中不是线程安全的   java在一个变量中每输入1000个单位,就从另一个变量中减去1?   java Mapstruct通用映射器   Java中的类能否确定它是否已被修改?   java如何在MogoOperations聚合函数中定义输出类型?