标签: deployment

您应该更换整个部门的 PC 还是一半?

我们部门正在更换使用时间超过 3 年的 PC。然而,尽管 PC 年代久远,但它们的规格都相似,因此使用 3 年的 PC 仍然与使用 1 年的 PC 具有相同的规格。因此,部门中一半的人将获得配备双显示器的更高规格的新 PC,而另一半仍将运行单显示器的旧 PC。

我认为只更换一半的部门是没有意义的。我很想听听其他 IT 经理和采购官员在这个问题上的意见。

我认为它没有意义的理由是:

  • 新的一半设备虽然不,但与旧设备相同或相似。在更换不存在缺陷的 PC 方面存在一些浪费。
  • 它会引起办公室的嫉妒。如果你的同事有双显示器而你没有,你会有什么感觉?

任何遇到过类似问题的人的意见?

我意识到这是主观的,但我找不到太多答案。

hardware deployment

7
推荐指数
2
解决办法
276
查看次数

以最少的停机时间将生产部署到 EC2

我在带有 EC2 的大型实例上部署了一个简单的 Web 应用程序。我现在想将最新的代码部署到这个服务器,但我想以一种最大限度地减少停机时间并且对最终用户来说尽可能顺利的方式来做到这一点。这是我的计划:

  1. 启动另一个大型实例
  2. 在该实例上安装所有软件层
  3. 将 EBS 驱动器还原并附加到实例
  4. 在新实例上部署我们最新的生产就绪代码
  5. 运行所有测试(包括应用程序的手动测试)
  6. (如果测试通过)在实时站点上放置“站点维护中”通知。
  7. 备份直播站点的EBS实例
  8. 从新服务器上分离 EBS 实例并替换为最新的备份
  9. 使用 ec2-associate-address 将 IP 地址移动到新实例
  10. 坐下来等待流量开始通过新实例流动
  11. 终止旧实例

这看起来是个好策略吗?有没有可能涵盖这个主题的教程或书籍?我已经阅读了 George Reese 的《云应用架构》,这是一本很好的书,但不包括部署。此外,我知道有一些工具可以帮助解决这个问题,例如 RightScale 或 enStratus,当我开始使用多个实例时,我会使用它们。

deployment amazon-ec2

7
推荐指数
2
解决办法
1578
查看次数

将 ubuntu 部署到 100 台笔记本电脑的最佳方式?

我明年将部署几百台笔记本电脑。我希望它们成为双引导机器,并使用 sysprep 解决 Windows 方面的问题。对于第二个操作系统,我想使用 Ubuntu,但不确定如何最好地配置它。我可以轻松地将磁盘映像加载到磁盘上,但是当它启动时,我如何最好地给机器一个唯一的名称,生成用户(或加入 AD)?Ubuntu/Linux 为此使用的工具/资源是什么?

编辑:我应该补充说:将使用 ghost 克隆磁盘。在此之后,机器将不会连接到有线网络 - 它们将完全无线。我想我可能会在 ghost 克隆之后安装 linux,但仅执行一次映像运行会更快更容易。有什么建议?我想出了一些首次启动类型的脚本,但想知道是否有任何企业解决方案。

linux ubuntu deployment

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

这种分布式数据库服务器集中存储的想法可行吗?

我经常使用 SQLite 在公司中创建简单的程序。数据库放置在文件服务器上。只要不超过大约 50 个用户同时处理数据库(尽管取决于它是读取还是写入),这就可以正常工作。一旦超过这个数量,如果服务器上有大量并发写入,他们会注意到速度变慢,因为大量时间花在锁上,并且没有像缓存这样的东西,因为没有数据库服务器。

不需要数据库服务器的优点是设置公司 Wiki 或类似内容的时间可以从几个月减少到几天。通常需要几个月的时间,因为一些 IT 部门需要订购服务器,它需要符合公司政策和安全规则,并且需要放置在外包服务器托管设施上,这会搞砸并将其放置在错误的位置等等等等

因此,我想到了创建分布式数据库服务器的想法。过程如下:公司计算机上的用户在 Wiki 页面(使用此数据库作为其后端)上编辑某些内容,为此他读取本地硬盘上的文件,该文件说明最后一台台式计算机的 IP 地址成为数据库服务器。然后,他尝试通过 TCP/IP 直接联系这台计算机。如果它没有回答,那么他将读取文件服务器上的一个文件,指出最后一台台式计算机的 IP 地址作为数据库服务器。如果这台服务器也没有回答,他自己的台式机将成为数据库服务器,并在同一个文件中注册它的 ip 地址。然后就可以执行SQL更新语句,其他台式电脑就可以直接连接到他的了。

这种架构的要点在于,负载越高,它的功能就越好,因为每台台式计算机总是知道数据库服务器的 IP 地址。此外,使用此设置,我相信放置在文件服务器上的数据库可以为数百台台式计算机提供服务,而不是目前的 50 台左右。我也不相信已经成为数据库服务器的单台台式计算机的负载会很明显,因为在这个桌面上不会有硬盘操作,只有文件服务器上。

这个想法可行吗?它已经存在了吗?什么样的数据库可以支持这样的架构?

编辑:我应该指出,这个想法并不漂亮、稳定、最佳实践,或者我真正引以为豪的东西。我仍然对可行性感兴趣的原因是我的一些客户是银行,而访问数据库所涉及的官僚主义是巨大的。此类项目的项目发起人通常需要高于副总裁级别,因为他们对访问服务器的极端安全问题感到担忧。不用说,这意味着建立 Wiki 需要做很多工作。以后如果 Wiki 证明是成功的,当然应该将其迁移到适当的数据库服务器上。

Edit2:这个想法的原因是为了降低在将数据库放在文件服务器上时使用SQLite时发生Writer Starvation的风险。此问题在此处的第 5.1 节中进行了描述。利用台式计算机缓存最常访问的信息(即 Wiki 页面),意味着文件服务器上的工作负载将大大减少。这应该再次改善用户体验。你真的认为我对这个想法还很遥远吗?

deployment file-server sqlite

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

如何避免 Remove-Item PowerShell 错误“进程无法访问文件”?

我们正在使用TfsDeployer和 PowerShell 脚本来删除Remove-Item 在部署新版本之前使用的文件夹。有时 PS 脚本会失败并显示错误:

删除项目:无法删除项目 Services\bin:该进程无法访问文件 Services\bin',因为它正被另一个进程使用 Get-ChildItem -Path $Destination -Recurse | Remove-Item <<<< -force -recurse + CategoryInfo : WriteError: (C:\Program File..\Services\bin:DirectoryInfo) [Remove-Item], IOExceptionfullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand

我试图按照答案(来自:在 PowerShell 中强制删除文件和目录有时会失败,但并非总是如此)通过管道Get-ChildItem -Recurse进入Remove-Item.

Get-ChildItem * -Include *.csv -Recurse | Remove-Item
Run Code Online (Sandbox Code Playgroud)

但是错误仍然会定期发生。我们正在使用解锁器手动终止锁定应用程序,(通常是 w3wp),但我更喜欢找到自动化的解决方案。

另一个(不理想的)选项是抑制 powershell-errors

 Get-ChildItem -Recurse -Force -ErrorAction SilentlyContinue
Run Code Online (Sandbox Code Playgroud)

欢迎任何建议。

powershell deployment

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

通过复制硬盘重新映像多台相同型号的 PC

我有几台最初随 Windows 7 Pro 附带的同一台机器 (Dell Precision T3500)(每台机器顶部都有一个 Windows 7 Pro OA 产品密钥贴纸)。这些最初被一位前 IT 同事降级为 XP,但现在又回到了未使用的机器池中。我希望使用带有 SP1最新官方 Win7 安装程序 ISO在其中一台机器上格式化和安装 Windows 7 Pro ,然后将硬盘驱动器克隆到其他机器上。

那么问题是:

  1. 这是否有意义,或者考虑到我只对 6 台机器执行此操作,是否有更好的方法?

  2. 这是否与 MS 许可一致(我们是机器的原始购买者,因此,大概是许可持有者......但我不是专家)?

  3. 克隆后是否可以将单独的 25 个字符的产品密钥应用于克隆的机器?

  4. 考虑到许可/关键问题,在我必须克隆到其他机器之前,我可以在配置过程(安装公司标准应用程序等)中走多远?

更新

我的最后一个过程是构建一个盒子,sysprep /oobe ...并使用imagex. 成像后,许可证密钥可以正常在线激活。我不确定如何在成像后编写域、打印机等脚本,但总有一天这是另一个问题。单独使用 Win 更新和 IDE 安装节省的时间是非常值得的。谢谢,所有。

installation deployment windows-7 licensing clone

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

多服务器部署策略 - 生产服务器上的 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万
查看次数

仅在发生更改时才执行复制和设置

对于 Ansible,我有一个角色来设置时区并填充 (Ubuntu) 基本系统的设置,

- name: set timezone
  copy: content='Europe/Berlin'
        dest=/etc/timezone
        owner=root
        group=root
        mode=0644
        backup=yes

- name: update timezone
  command: dpkg-reconfigure --frontend noninteractive tzdata
Run Code Online (Sandbox Code Playgroud)

这两个命令无论如何都会执行。这意味着当 Ansible 为同一个目标运行两次时,changed=2结果摘要中仍然会得到一个,

default                    : ok=41   changed=2    unreachable=0    failed=0
Run Code Online (Sandbox Code Playgroud)

理想情况下,一切都应该ok在第二次运行中。

虽然我猜测update timezone应该对 有某种依赖set timezone,但我不太确定如何最好地实现这一点。

ubuntu deployment provisioning timezone ansible

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