DevOps

针对从事自动化测试,持续交付,服务集成和监控以及构建SDLC基础架构的软件工程师的问答

1
云术语“ Firehose”到底是什么?
我从Loggregator System Cloud Foundry文档概述中找到了Firehose定义。 Firehose是一个WebSocket端点,用于流式传输所有来自Cloud Foundry部署的事件数据。数据流包括来自所有应用程序的日志,HTTP事件和容器指标,以及来自所有Cloud Foundry系统组件的指标。来自系统组件(例如Cloud Controller)的日志不包括在firehose中,通常通过rsyslog配置进行访问。 由于来自Firehose的数据可能包含敏感信息,例如应用程序日志中的客户信息,因此只有具有正确权限的用户才能访问Firehose。 这个术语的根源在哪里?为什么这样称呼它?其他云产品和平台的概念是否相同? 当我将此术语翻译成我的母语时,这很有趣。

7
如何将任务输出记录到文件中?
我的一项艰巨的任务是使用导入Oracle数据库impdp。 这会产生很多输出到控制台,所以我已经设置了no_log: True。 但是,如果失败,我想查看日志! 如何使此特定任务记录到文件而不是控制台?
10 ansible  logging 

2
Git&Jenkins:在分支上获取最新的绿色提交
我们刚刚开始争取使用CI-CD,作为一个小小的步骤,我们将尝试每隔几个小时使用最新的绿色开发更新堆栈。我对Git / Bitbucket相当陌生,无法弄清楚如何确保Jenkins进行的结帐将最后一次提交由Jenkins标记为绿色,而不仅仅是“最后一次提交”作为笼统的声明。 我们已经安装了Bitbucket Build Status Notifier插件,因此Bitbucket会在运行单元测试后跟踪哪些提交是绿色的。有没有办法利用此信息来确保选择正确的提交?
10 jenkins  git  bitbucket  bcbsn 

5
配置管理工具是否适合用作部署工具?
我没有回答这个问题:DevOps如何帮助改善软件托管程序?Tensibai的问题是: 在木偶或厨师的头上需要Capistrano是什么? 我的回应是发布指向Noah Gibbs的文章“我们需要Capistrano和Chef吗?”的链接。。我个人仍然同意诺亚的观点,它最适合: 使用专业的部署工具(例如Capistrano)进行部署。 使用专业的配置管理工具(例如Chef)进行配置管理。 每种类型的工具用来完成其任务的基本方法都非常不同: 配置管理工具 -与创建和维护系统的期望状态有关,它们本质上是固有的。配置管理工具的示例包括Chef,Puppet,Ansible,PowerShell DSC,Salt Stack。 部署工具 -与将软件版本交付到主机环境有关,它们提供的功能可以在多台计算机上维护软件的多个版本并管理哪个版本是“当前”版本,它们本质上是必不可少的。部署工具的示例包括Capistrano,Octopus Deploy,Deployer和Command.io。 我确实相信配置管理工具可以完成部署工具的工作,并且在不可变基础架构的情况下,它们是最合适的工具,因为不需要维护目标上的软件版本。 问题: Chef,Ansible和Puppet等配置管理工具是否已成熟到可以同时满足幂等和命令式模型的程度?

2
DevOps之前的部署指标挑战
TL; DR,您如何证明开发人员(特别是部署自动化)提高变更失败率? 我们都在尝试使用当前(主要是手动)方法来获取有关“部署失败”的指标。不幸的是,很少发生“故障”,对吧?因为当出现问题时,团队会聚在一起(通常与英勇专家一起)来解决问题(通常是权限,错过的配置,您知道演练)。所以……当我们询问部署的进行方式时,答案是“有效”。 但是,直觉上我们都知道那不好。2017年devops状态报告说,大约有31-45%的“ 变更失败率”。虽然听起来很正确,但它们是否作为事件进行了跟踪?没事 因为它们通常在验证期间很快就被修复了。实际上回滚部署的情况要少得多。 因此,准确报告故障率需要纪律。我们没有动力进行这样的报告,因为我们希望事情能够正常进行,并且我们会尽一切努力实现这一目标。 那么,如何证明开发人员(特别是部署自动化)提高变更失败率? (PS尝试使用“#devops-capability-model”为它添加标签)
9 metrics 

1
如何在合并时或删除分支时触发脚本?
我正在使用詹金斯多分支管道。如果分支被合并和删除,詹金斯也将从管道中删除该分支。 很好,但是我想在删除分支时运行命令/脚本,如何让詹金斯在删除分支时运行命令?有没有办法让詹金斯在删除分支之前触发作业? 编辑:我应该添加我正在使用bitbucket。如果詹金斯在清除多分支管道的分支时可以触发事件,那将是一件很整洁的事情。理想情况下,我的git提供者是什么都没有关系。

5
我可以在DevOps上找到一家小公司吗?
假设我是一位企业家,我的Great Idea(TM)种子资金很少,我开了一家公司,最初计划自己实施我的Great Idea(TM),然后根据公司增长率来雇用其他帮助。 通常,此站点上的答案都围绕着这样的想法,即DevOps不是角色,而是一种具有新的操作哲学的新的工作方式,允许一组角色实际执行DevOps。这样可以防止精疲力尽和人们感到像孤单的狼 因此,作为一家刚刚起步并处于萌芽状态的公司,我是否应该费心追求DevOps作为一种哲学,还是这仅适用于能够拥有足够规模的开发团队的更成熟的运营?

4
监视多台服务器上的程序进度
我们有三台服务器正在运行python程序,这些程序正在tmux会话中运行数据分析任务。我们目前使用的方法是将它们连接到每个tmux会话中,并在命令行中查看输出。 这种方法很繁琐,因此我们正在寻找一种解决方案,该解决方案可以同时自动监视多个服务器的程序进度(在CLI上输出)。理想情况下,我们希望使用Web UI解决方案,但CLI也非常适合。 感谢您的阅读。

6
如何防止EC2实例发生死机?
我在应用商店上有一个iOS应用,最近我托管在EC2上的登录页面收到了大量流量,导致该页面没有响应,所幸我通过重新启动实例并将其升级到t2.medium。 现在,我正在寻找雇用某个人来实施一项技术,以防止再次发生同样的死亡。我的经验仅能使我了解基本的devops知识,但对于AWS上的负载均衡器来说还不够,我想知道对于我的实例而言,什么是负担得起的实施。 我的目标网页和iOS应用后端均托管在同一实例上。

2
如何烹饪尚不存在的事物
假设我有一些厨师代码,例如: require 'mixlib/shellout' yum_package 'somepackage' myvar = Mixlib::ShellOut.new('/bin/somecommand').run_command.stdout.strip 在那里/bin/somecommand,因为它是由安装还不存在somepackage。由于这个原因,这将在配方编译时失败,但是显然会在收敛时起作用,前提是成功安装了软件包(如果没有成功,则显然配方无论如何都失败了)。如果将软件包安装为运行列表中的先前配方,这也将失败,因为它们都是预先编译在一起的。如何在食谱或运行列表自身安装的厨师食谱中包含内容?


7
什么是获取DevOps类比的?
一些演示者使用类比来阐明某种技术,例如Pizza as Service 2.0,它解释了不同的即服务(aaS)堆栈之间的差异。 此类披萨类比的优点在于它包含多个类比,即运行时又称披萨和自制又称传统。 当一个Google“ DevOps类比”时,会显示各种图像,但其中的一个图像并不吸引眼球。 “获取”的定义 在演示文稿中显示图像 谈论30秒 在电梯推销期间,越来越多的人了解DevOps,而他们对此是完全清楚的。
9 culture 

2
根据操作系统在Ansible中使用角色和主机部署VM
我在解决如何最好地将主机/角色应用于Ansible中的不同操作系统时遇到问题。 我当前正在使用Ansible生成Windows / Mac / Linux VM,并且每个VM具有不同的角色,需要将其应用于它们。 我已经阅读了最佳实践并尝试遵循这些最佳实践,尤其是使用分组方法,但是我仍然不确定,因为它们大多提到了Web服务器和dbserver。 site.yml - name: Apply common configuration to all nodes hosts: all roles: - common - name: Configure and deploy test node 1 hosts: build-test-node roles: - build-machine-test-1 - name: Configure and deploy test node 2 hosts: build-test-node-2 roles: - build-machine-test-2 环境/测试/组 [win_build_nodes] …

1
Kubernetes CPU使用率和Docker容器指标冲突
我们最近将生产环境切换到Kubernetes。我想对容器实施CPU限制。我遇到了不一致的CPU指标冲突。这是我的设置: DataDog代理以 Daemonset 现有应用程序不受CPU限制地运行 有问题的容器是多线程Ruby应用程序 两个指标:kubernetes.cpu.usage.{avg,max}和docker.cpu.usage c4.xlarge 群集节点(以Kubernetes的术语来说是4个vCPU或4000m) kubernetes.cpu.usage.max报告有问题的集装箱约600m。docker.cpu.usage报告约60%。因此,在正常操作下1000m CPU限制将绰绰有余。 我将限制设置为1000m。然后docker.container.throttles明显上升kubernetes.cpu.usage.max并docker.cpu.usage保持不变。在此期间,系统全都屈服了。这对我来说没有意义。 我研究了Docker统计信息。似乎docker stats(和底层API)根据CPU内核规范了负载。因此,以我的情况来说,docker.cpu.usage以Kubernetes计,60%(4000m * 0.60)达到2400m。但是,这与任何Kubernetes编号都不相关。我做了另一个实验,以检验我的Kubernetes数不正确的假设。我将限制设置为2600m(以获得一些额外的净空)。这没有导致任何节流。但是Kubernetes观察到CPU使用率没有变化。这让我感到困惑。 所以我的问题是: 这是否感觉像Kubernetes中的错误(或堆栈中的某物?) 我的理解正确吗? 我的后续问题与如何正确确定Ruby应用程序的CPU有关。一个容器使用彪马。这是具有可配置线程数量的多线程Web服务器。HTTP请求由线程之一处理。第二个应用程序是使用线程服务器的节俭服务器。每个传入的TCP连接均由其自己的线程处理。连接关闭时线程退出。Ruby作为GIL(全局解释器锁),因此一次只能有一个线程执行Ruby代码。这确实允许多个线程执行IO之类的操作。 我认为最好的方法是限制每个应用程序中运行的线程数,并根据线程数近似计算Kubernetes CPU的限制。进程不是分叉的,因此很难预测CPU的总使用量。 这里的问题是:如何正确预测这些应用程序的CPU使用率和限制?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.