标签: deployment

如何使用 Puppet 或 Cfengine 设置 Cobbler?

我听说过很多关于将 Cobbler 与 Puppet/Cfengine 一起使用以进行快速部署和配置的信息。

你能指点我一些教程或分享你如何做的经验吗?

也很想知道您用于快速配置和部署的任何其他系统。谢谢。

deployment configuration puppet cobbler cfengine

8
推荐指数
1
解决办法
5280
查看次数

IIS7 - Web 部署工具 - SetParam/SetParamFile 设置 http 和 https 绑定 + Cert

我们目前正在使用MS Web 部署工具将实时网站和一些 Web 服务从暂存箱同步到两个实时服务器。

临时主机在端口 17000 上的任何 IP 上托管站点,而两个实时服务器是负载平衡的,并且每个服务器都有不同的 IP。

目前,我生成了两个单独的部署包 - 每台机器一个 - 使用同步操作并指定 DestinationBinding 参数如下:

msdeploy -verb:sync 
  -source:WebServer,computerName=localhost
  -dest:package="machinename.zip"
  -setParam:type="DestinationBinding",scope="SiteName",value="ip_address:port:".
Run Code Online (Sandbox Code Playgroud)

(拆分成多行以便于阅读!)

我运行了两次,两台机器的目标文件名和 IP 地址不同。在部署方面,我只是从每个包到其各自的实时站点进行同步。

我知道,我知道 - 我应该能够通过生成一个参数化包然后可能对两个服务器中的每一个使用 SetParamFile 开关来做到这一点 - 相信我,我想,但坦率地说,关于这样做的文档不是 -存在。

现在我需要为此站点配置和部署HTTP HTTPS绑定;还包括要使用的 ssl 证书。

我已经在登台框上为站点添加了 SSL 绑定 - 它使用开发证书(需要更换 - 或者登台盒是否应该使用实时证书?),现在上面的命令行有效果替换 http 和 https 条目上的目标 IP。

似乎我无法在上面的 -setParam 中的 DestinationBinding 值中指定多个绑定以及证书信息,所以有人知道我将如何执行此操作吗?

非常感谢任何帮助。

deployment iis-7.5 msdeploy

8
推荐指数
1
解决办法
5185
查看次数

多合一的好处

一个大型组织(1500 多个用户,有 5 个地点)正计划更新桌面硬件。

将屏幕、CPU、磁盘驱动器、CD/DVD 集成在一个单元中并带有 USB 键盘和鼠标的多合一桌面是否有任何好处?

如果提供现场支持,是更好还是单独的 CPU 更可取?

这是正在考虑的系统。

ThinkCentre A70z 一体机 19" 系统

链接http://www.lenovo.com/partners/us/en/a70z.html

我们的规格。

° A70z
° Intel Core 2 Duo E7500
° Intel G41 芯片组
° 一体式 PC 外形
° 19” WXGA+
° 2 DIMM 插槽 4GB Ram
° DVD 刻录机
° 网络摄像头和麦克风
° 千兆以太网
° 11 b/g/n 无线LAN
° 6 USB 2.0 端口
° VESA 100 毫米安装
° 所有型号均符合能源之星 5.0 标准
° 3 年现场保修

deployment desktop

8
推荐指数
2
解决办法
974
查看次数

使用 Puppet 部署我们自己的软件?

(提前为这个问题的愚蠢道歉。我通常是一名程序员,而不是系统管理员,但我已经承担起自动化一些事情,并清理其他一些自动化但不是最漂亮的方式的东西.:-)

我一直在寻找用于将软件部署自动化到一堆服务器的各种工具,例如 cfengine、Puppet 和 Chef。到目前为止,Puppet 看起来最吸引人,但我当然还没有承诺过任何事情。

这些工具看起来都可以很好地使用预先打包的软件使一堆服务器保持最新状态。

我不明白的是:如何使用工具(如 Puppet)来管理我们自己内部软件的部署?我想我不知所措我,因为我已经看到了一千教程展示了如何保持阿帕奇ensure => latest(这很酷的),但是没有一个相当相当于我用例的今天,这是更多的东西一样:

  1. 当一个人按下按钮时,
  2. 从版本控制存储库 B 中拉取分支 A
  3. 运行命令 C 来编译它
  4. 将二进制文件 D 复制到服务器 E1 到 E10
  5. 在每台服务器上,运行命令 F 使所有更改生效

Puppet 听起来很棒,我完全看到了声明式、幂等配置相对于某些 shell 脚本的优势,但我还没有看到任何关于“您想将 shell 脚本更新为 Puppet(或 Chef 或 cfengine)的教程,所以这就是您应该做”。有这样的事情吗?对于其他人来说,如何使用 Puppet 文档中提供的内容并复制我想要的行为是否显而易见?我只是没有得到它吗?

到目前为止,在我看来,人类(#1)会手动打包 Puppet 外部的软件(#2 和 #3),手动更新 Puppet 配置,这将触发 Puppet 更新服务器。 .. 也许?(我在这里有点困惑,因为我相信你能看出来。)

谢谢!

automation deployment puppet

8
推荐指数
1
解决办法
5705
查看次数

我通过软件安装策略部署了 Flash Player。如何升级?

我有一台 Windows Server 2008 机器作为我的 DC。今年早些时候,我创建了一个软件安装 GPO 来部署 Adob​​e Flash Player 插件 MSI。我将策略分配给计算机,大约一半运行 Windows XP x86,另一半运行 Windows 7 x64。这一切都像发条一样。

在创建软件安装策略时,我通过在 Orca 中编辑 MSI 禁用了 Flash Player 插件的自动更新功能。我这样做是因为我希望我的所有机器都运行完全相同版本的插件。

现在,一段时间过去了,较新版本的 Flash Player 插件已经发布。是时候推出插件的更新版本了。我已经有了新的 MSI,但我不知道下一步该做什么。

  • 我在软件安装 GPO 中看到了升级选项卡,但那里读取的所有内容都将用于更大主程序的附加组件,而不是随时间发布的更新。
  • 我读过最好使用新的 MSI 创建新的软件安装策略,撤销旧的 GPO,并分配新的 GPO。我觉得,随着时间的推移,我最终会收到比有效政策更多的撤销政策。
  • 我还读到,有些人通过用新的 MSI 替换旧的 MSI 并简单地告诉 GPO 重新部署而取得了成功。这似乎是一种后门方法,只会让我陷入困境。

简而言之,通过组策略推出新版本的正确、最佳实践或首选方式是什么?

deployment group-policy msi update

8
推荐指数
3
解决办法
7735
查看次数

如何以编程方式仅将特定的 nginx 服务器块设置为维护模式

我正在寻找一种解决方案来自动化我们应用程序的部署过程之一。在部署开始时,我想以编程方式将指定的服务器设置为维护模式,最后在部署完成后,从 nginx 服务器中删除维护模式标志。

通过维护模式,我的意思是 nginx 应该以 HTTP 响应代码 503 响应所有请求(可能带有自定义页面)。

我知道如何设置服务器块以响应 503 代码(请参阅http://www.cyberciti.biz/faq/custom-nginx-maintenance-page-with-http503/)但问题是如何以编程方式执行此操作并且最有效。

我想到了两个选择:

选项1:在部署过程开始时,将维护文件写入文档根目录,并有条件地检查nginx服务器配置中是否存在维护文件:

server {
    if (-f $document_root/in_maintenance_mode) {
        return 503;
    }
}
Run Code Online (Sandbox Code Playgroud)

此方法包含一定的开销,因为每个请求都会检查文件是否存在。是否可以仅在加载 nginx 配置时检查文件是否存在?

选项 2:部署脚本用维护版本替换整个 nginx 服务器配置文件,并在部署结束时将其换回。如果使用此方法,我担心可能会覆盖维护配置文件的其他自动化进程,例如 puppet。

automation maintenance deployment nginx

8
推荐指数
1
解决办法
2353
查看次数

多服务器部署策略 - 生产服务器上的 Git?

主要问题:在生产服务器上使用 Git 进行部署是一个好策略吗?

我看到的许多部署策略都围绕着在您的服务器上安装 Git(开发、暂存和生产)。

对于部署到舞台/生产,这的优点似乎很明显:

  • 快速拉动变化的能力
  • 更轻松的自动化
  • 如果需要,可以切换分支(可能是每个测试服务器的分支)
  • 可以查看文件是否在生产服务器中以某种方式更改

但是,我看到了一些缺点:

  • 安全性 - Git 似乎是一个潜在的攻击媒介,即使生产环境具有只读访问权限
  • git pull 如果生产中存在某种未分阶段的更改(也可以使用 -f 克服),则在生产服务器上可能会失败

部署即服务公司(例如 Beanstalkapp.com、deployhq.com)使用 FTP、SFTP 或 SSH。Beanstalkapp 尤其擅长只根据 git 历史修改文件(而不是重新部署每个文件)。这些服务不要求您在舞台/生产服务器上安装 git(尽管如果您通过 SSH 部署,您是否会/可以使用该策略是有争议的)。

我发现我喜欢使用 sftp:

  • 仍然可以在部署前/部署后运行脚本
  • 无论生产服务器上有什么,都可以覆盖、移动、删除文件(这对我来说是一个加分项)
  • 生产环境中没有 .git 目录或任何基于 git 的攻击漏洞

就最佳实践和安全性而言,在生产服务器上轻松使用 git 是否值得?如果没有,在跳过持续集成工具的同时进行部署的好方法是什么?

(我只询问是否跳过 CI 工具,因为时间/预算/客户限制不允许它们用于我的日常使用)。

deployment git multiple-instances

7
推荐指数
1
解决办法
3342
查看次数

克隆 Windows 服务器的最佳方法?

我有一台运行 RDS 的 Windows Server 2012 生产服务器。我想复制我为设置此 RDS 服务器所做的一切(用户配置文件、文件、设置等),并制作与其相同的第二台服务器。显然,我希望第二台服务器具有不同的名称和 SID,以便它们都可以在同一网络中处于活动状态并加入我的域。

我目前有第一台服务器的 Windows 备份映像,我正尝试将其部署到第二台服务器,但我担心我可能走错了方向。

预先感谢您的帮助!

deployment backup-restoration imaging windows-server-2012

7
推荐指数
1
解决办法
3万
查看次数

在詹金斯中执行 RSYNC 命令

我正在尝试将我的代码部署到远程服务器。到目前为止我已经尝试过

  • 通过 SSH 插件发布:问题是我无法保留文件权限
  • rsync 命令:这保留了文件权限,但问题是我不知道如何设置密码使其自动工作

这就是我得到的:

[JenkinsBuild] $ /bin/sh -xe /var/lib/jenkins/tmp/hudson4646064064846581974.sh
+ rsync -PSauve ssh --exclude=JenkinsBuild app bower.json config gruntfile.js karma.conf.js LICENSE.md Makefile node_modules package.json Procfile protractor.conf.js public README README.md server.js john@192.168.2.10:/srv/dp/prod
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
Run Code Online (Sandbox Code Playgroud)

任何想法我在这里做错了什么?

linux deployment continuous-integration jenkins

7
推荐指数
1
解决办法
1万
查看次数

在构建服务器上使用缓存构建 Docker 映像?

我们有一个 Jenkins CI 服务器,它从 Git 获取我们的代码,构建它,制作一个 Docker 镜像,然后将它发送到一些生产服务器。

我们的项目主要是用 Python 编写的,所以“构建”涉及运行

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

效果很好,只是有点慢。它必须通过网络获取包,另外还必须为其中一些构建 C 库(而且“lxml”并不小!)。

在开发中,我已经成功地pip-accel用来加速这个过程。它具有相同的接口,pip但它同时缓存 Python 下载和构建的 C 代码,所以

pip-accel install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

很快。

我想为我们的生产版本这样做,但我遇到了一些障碍。

显然,pip-accel需要一个目录来存储缓存。因为我们的 CI 服务器是运行构建的地方,所以这是放置它的合乎逻辑的地方。但是该pip install命令在一个新的 Docker 容器中运行,因此它不能只访问该服务器上的公共目录。

Docker“卷”似乎是为与容器共享目录而设计的,但我们的构建发生在内部(令人惊讶)docker build,并且只docker run允许您附加卷。您不能使用docker build.

有什么我想念的吗?如何在我docker build所在的容器之外运行并与我的主机共享缓存文件夹?

deployment python build-server pip docker

7
推荐指数
1
解决办法
1314
查看次数