DevOps

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

2
如何在Docker中拥有多个日志流
我们有一个应用程序,它将三种类型的日志写入三个单独的文件中:访问日志,通用应用程序日志和系统日志。这些日志的格式(和用途)非常不同。我们有单独的日志转发器,可将它们分别发送到我们的集中式日志记录系统。 基于将日志视为事件流原则,我们正在考虑从使用文件转移到标准输出。虽然我们知道了这种方法的一些好处,但这也意味着我们将获得合并后的格式不同的日志流,在将它们发送到中央系统之前,我们需要再次拆分(Kibana / Splunk /等),或在里面。 我们想知道是否有任何工具或建议来应对这种情况。
21 docker  logging 

5
如何说服开发人员开始使用功能标志切换?
假定功能标志切换是一个好主意,并且应将其实现为开发人员编写的代码。例如Etsy发誓他们是他们文化的重要组成部分。 如何说服(并强制)开发人员开始使用功能标志切换的好方法? 有关功能标志切换的更多信息,请参见Q:如何使用功能标志切换,Q:什么是功能标志切换,在Pete Hodgson 在Martin Fowler博客上有关该主题的文章中进行了广泛介绍。

1
Git清理/涂抹过滤器以获取可疑的Vault机密
我正在尝试在git中设置清理/涂抹过滤器,以通过ansible-vault命令对包含机密的文件进行自动加密和解密。 ansible-vault命令的特殊之处在于它不是幂等的(每次在同一数据上调用它都会创建一个不同的二进制文件)。 我从此博客页面建议的实现开始。不幸的是,它无法正常工作,因为每当调用smudge(无论是git checkout还是git status)时,秘密文件的git看起来都是经过修改的,即使不是。 所以我想知道git是否会将他在索引中的二进制文件与干净的过滤后的当前文件进行比较,因此我尝试构建如下的脚本: #!/bin/sh -x # clean filter, it is invoked with %f if [ ! -r "$HOME/.vault_password" ]; then exit 1 fi tmp=`mktemp` cat > $tmp # get the plain text from the binary in the index tmphead=`mktemp` git show HEAD:$1 > $tmphead contenthead=`echo "embedded" | …

4
如何摆脱开发分支以简化Git流
在一个持续开发的Web项目(不是产品)中,我们目前具有以下分支策略,大致基于git flow: 开发分支:最新工作版本 主分支:要发布的版本/已发布的版本 功能分支:开发中的功能 修补程序分支:已发布版本中的紧急错误修复 Master是只读的,可以通过来自develop或hotfix分支的拉取请求进行更新。每次更新都会构建候选发布版本并将其部署到登台系统。手动批准后,候选发布版将部署到生产中。 功能分支是基于develop或已合并到master的最后一次提交创建的。构建了来自功能分支以进行开发的拉取请求,并将其部署到免费的测试系统中,在该系统中执行集成测试和验收测试(自动和手动)。成功测试和审查后,PR就会合并,因此它将成为下一个版本的一部分(即从开发到母版合并)。 我的目标 我想简化此过程,并摆脱开发分支。developer分支主要是出于历史原因,并且由于它始终是经过成功测试的版本,因此我认为不必将其与master分开。删除它还将简化发布过程,因为不再有其他合并。 我有以下限制: 版本已排定,不应完全自动化 虽然功能分支通常寿命很短,但有些分支未合并数周(例如,重新设计),但也需要进行测试(当前是针对开放拉取请求的开发) 有时,应该在常规版本之外发布单个功能,从而有效地将其转变为修补程序。使用当前策略,我可以重新建立功能分支的基础并将其直接合并到主分支中 也有发生,我们需要在对外部系统进行暂存测试失败后保留功能 我不确定转换的地方: 目前,我正在构建请求测试以合并发布的提交。我可以统一一下吗? 当母版领先于最新版本时,如何处理修补程序。我应该直接从修补程序分支构建和部署发行版吗? 有没有明智的方法来处理在合并功能后就应从发行版中排除的功能?在这些情况下,单独的开发部门真的是一个优势吗?大多数情况下,无论如何我最终还是要手动还原和还原提交。

2
什么是SecOps?
首先,当我听到SecOps一词时,我将其视为一种旨在连接安全和运营团队的管理方法,就像将DevOps统一开发人员和运营团队一样。 但是,安全性不只是DevOps难题的一部分吗? DevOps已经包括组件监视,版本管理,基准测试,代码审查,连续监视等过程。 SecOps还能为DevOps团队增加什么呢,或者这可能是另一个时髦的词?

4
持续集成与持续交付/部署有何关系?
以下是连续积分当前内容的引文: ...经常将开发人员的工作代码副本合并到共享代码库中的过程,以防止或最小化集成问题。 好我知道了 但是接着还有连续交付和 连续部署,这就是我不断迷失的地方: 假设通过您沿生产线的某个地方最终将到达目标环境,那么持续集成与持续交付和/或持续部署之间的关系如何。integrationdeliveringdeployed 持续交付和持续部署之间有什么区别? 过去,在将DevOps称为DevOps之前,我们使用了术语,可能有助于理解这些新的DevOps术语,例如: 推动到(或降级从)一些预先PROD目标,任选地与一些类型的再生过程(编译,结合等)的组合中可执行状的东西封装所有相关组件在一起。那应该类似于/接近连续集成吗? 使用FTP之类的工具(如果标准副本无法弥合差距)将其分发到某些目标环境,但尚未在目标中激活它。那应该类似于/接近连续交付吗? 在某些目标环境中安装(或激活),并结合诸如绑定,停止/启动操作等内容。这应该类似于/接近于连续部署吗?

6
如何聘请适合我公司的优秀DevOps?
好的开发人员应符合Joel测试规则11 : 新候选人在面试中会写代码吗? 但是,我对Docker容器,如何配置Jenkins或AWS等一无所知。什么是测试应聘人员是否可以管理此类任务的好方法? 子问题:我相信一个好的devop员工可以配置一次构建链,并且此后应该一直有效。我还能期望他或她成为公司的开发人员吗(DEVops)?由于DevOps是一项相对“新的”工作,对于小型公司来说,在需要的时候共享一个devops雇员或雇用他或她作为自由职业者也许更好? 我对术语的困惑来自于这样的工作机会,即使在 stackexchange上也是如此(=上面屏幕截图的来源链接)。 我发现这篇文章很有帮助,但是如果您迷失于这个问题,则可能想读这篇文章:https : //hackernoon.com/devoops-some-common-anti-patterns-1850ac2f5074

2
什么是价值流图?
我已经听说了很多有关“ 价值流映射”的知识,以及如何将其用于分析制造过程(包括交付软件的过程)的价值流。我从未见过在软件开发和运营团队的背景下成功交付它。 什么是价值流映射,如何将其应用于软件交付?

2
S3区域中断时跨区域复制是否100%可靠吗?
Amazon S3提供了跨区域复制的选项,该选项应该可以很好地容忍区域/区域中断。 这是否意味着那些对断电感到愤怒的人没有利用这一方面? 还是跨区域复制不完全是万无一失,并且不会有所帮助?
19 amazon-s3 

5
如何避免在测试环境中持续集成导致的不稳定?
假设您使用的是持续集成过程,该过程会经常更新某些目标环境,以便每次发生某些更改时,“您”都可以立即测试您的更改。那是CI的目标之一,不是吗? 但是,还要假设您在测试周期中涉及其他人员,例如经理或客户。让其他人参与尝试(中断)您即将进行的更改很有意义,不是吗? 但是,如果您继续在其他人正认真尝试测试的环境中不断交付更改,那么可能会出现多个问题,例如: they 可能会浪费他们的时间来报告问题,而当他们保存(深入)报告时,他们甚至无法自己重现该问题(例如,由于您偶然遇到了同一问题,并且已经将其修复在他们的环境中)。 you 可能无法重现他们报告的问题,因为遇到问题的环境不再相同(您(!!!)可能覆盖了他们的环境)。 那么,您该怎么做(如何配置事物?)来避免此类(令人沮丧的)情况?

7
如何每次创建最小的工作docker映像?
目的:每次创建最小的工作docker映像 当前 REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest x 42 minutes ago 1.92 GB 尝试 在Dockerfile的末尾添加一个清理步骤: #clean RUN apt-get purge -y wget RUN rm -r a-build-dir RUN apt-get purge -y a-package 缩小了图像尺寸: REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest y 2 minutes ago 1.86 GB 讨论区 我建立了各种docker映像。每次尝试减小所创建图像的大小时,我总是觉得它太大。我正在寻找一个已经由github上的某个人创建的脚本,该脚本将从图像中删除所有多余的软件包,因此创建的图像的大小将尽可能小。 …
19 docker 

3
docker-compose无效类型,应为字符串
我在docker-compose.yml文件中配置了以下环境变量: version: '3' services: server: ports: - 13045:3000 environment: - NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}' 尝试运行时docker-compose up,出现此错误: services.server.environment contains {"NODE_CONFIG": "{\"DATABASE_URL\":\"http://db:5984\"}"}, which is an invalid type, it should be a string 我需要将环境变量设置为JSON字符串(请参阅https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_config) 我在这里做错什么了吗?我能以某种方式使它工作吗?

8
如何安装Certbot插件?
我按照本教程安装了Certbot : sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx 现在我想设置我的证书,但是我需要dns-digitalocean插件: # certbot certonly --dns-digitalocean Saving debug log to /var/log/letsencrypt/letsencrypt.log Could not choose appropriate plugin: The requested dns-digitalocean plugin does not appear to be installed The requested dns-digitalocean plugin does not appear to be installed 我尝试使用安装它pip: pip install …
19 ssl  certbot 

7
如何安全重启詹金斯?
我需要在我们的Jenkins实例上进行一些配置更改,这将涉及几次重启Jenkins。但是,我们的开发人员所做的承诺足够频繁,以至于三天之内我都没有看到詹金斯没有工作。 是否有本机方式(通过GUI或通过命令行)安全重启Jenkins?IE:等待当前作业完成再下降,并跟踪Jenkins重新启动后开始排队的作业。 我知道有一个插件,但是要安装它,我需要重启Jenkins ...
19 jenkins 

2
我可以绕过Ansible中的主机密钥检查吗?
我正在运行一个Ansible剧本,它带有一个细微的技巧,可以在任意端口转发的端口上工作(因此,我可以使用一台机器,而不能直接访问很多机器)。 我已经完成了更改ansible_port变量的任务,因此当我开始运行实际的任务和角色时,系统会提示我在某个随机端口上接受localhost的主机密钥。 因为我很幼稚并且不关心安全性,所以我希望ssh自动接受并重定向到/dev/null(或另一个用于记录的文件)。 这可能吗?
19 ansible 

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.