首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Capistrano被Docker和Kubernetes取代了

当然,Capistrano并没有真正死亡——即使我正在使用过去式来描述它。开源工具从未真正死亡,它们只是变得不受欢迎(并可能被储存在阁楼中)。...当某样东西的流行度下降时注意其点也很有帮助,同时检查我们是否失去了任何东西。当前的技术只是时间线上的一个小插曲,如果你偶尔回头看一眼,预测接下来会发生什么会容易得多。...使用这些定义,Capistrano可以针对特定计算机执行操作。 任务和角色 Capistrano中的基本命令是任务。这些是在部署的不同阶段执行的。...如果在任何步骤中部署失败,current符号链接仍指向旧版本。 那么发生了什么? "先运行这个,然后运行那个"的模型并不能总是很好地预测部署后您的系统会是什么样子。...更好的说法可能是,像Capistrano这样的工具出现在任何团队的部署之旅的路径上,作为在需要更广阔的视野之前的一个路径点。

7610

使用Capistrano,Nginx和Puma在Ubuntu 14.04上部署Rails应用程序

-sSL选项由三个标志组成: -s 告诉curl以“silent mode”下载文件 -S 告诉curl如果失败则显示错误消息 -L 告诉curl在检索安装脚本时遵循所有HTTP重定向 下载后,脚本将传到...注意:如果第二个命令失败并显示消息“GPG签名验证失败”,则表示GPG密钥已更改,只需从错误输出中复制命令并运行它以下载签名。然后运行用于RVM安装的curl命令。...例如,将创建一个名为testapp_rails的目录。 我们只是克隆以检查我们的部署密钥是否正常工作,每次推送新更改时我们都不需要克隆或拉取我们的存储库。...我们将让Capistrano为我们处理所有这些。您现在可以删除此克隆目录。 在本地计算机上打开终端。如果您没有本地计算机的SSH密钥,也可以为其创建一个。...Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } Capfile会将一些预定义的任务加载到您的Capistrano配置文件中,以使您的部署没有顾虑

5K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    得物自建 Redis 无人值守资源均衡调度设计与实现

    同时,随着业务使用量的持续增长,单台宿主机上的内存使用率越来越高,为了保证宿主机上所有节点的业务日常增长需求或者突发的业务内存上涨,以便能够做到秒级快速垂直扩容,以及添加节点、RDB 离线分析等功能需要的资源...,单台宿主机的内存使用率都需要动态的控制在一个合理水位线以下,于是,Redis 管理平台会每天定期自动巡检所有宿主机内存使用率,对于超过合理阈值的宿主机,会选择一部分 server节点进行打散,迁移到其他宿主机上...迁移任务执行过程流程图如下所示:迁移过程中,为了节点迁移不出现异常,每一步执行都进行多维度严格的校验,确保正常才进行下一步操作,下面详细介绍迁移过程中每一步操作是如何进行校验保障可靠性的。...为了保证迁移过程中节点的高可用,迁移节点自动化部署过程中包含一些必要的部署规则:新分配节点保持与待迁移的原节点在同一个可用区新分配节点不能分配到待迁移的原有节点同一台宿主机上新分配节点分配的宿主机保持在原节点所在同一资源分组新分配节点的规格...消息通知如果节点迁移因为宿主机不足导致新节点分配失败等原因失败后,会发送一个消息通知,方便DBA了解迁移结果情况。

    14510

    如何使用Capistrano自动部署:入门教程

    介绍 制作基于Web的应用程序的关键领域之一是部署。如何部署,这项任务确实被视为一件苦差事,似乎对您的项目几乎没有任何直接或附加价值。...我们将详细介绍Capistrano:一种基于Ruby的远程服务器自动化工具,可以轻松地用于自动化普通部署和系统管理任务。使用Capistrano,您几乎可以完全自动执行通常用于生产产品的所有操作。...但是,一般情况下,您可以将此工具视为您自己的部署助手,帮助您完成从部署计算机上获取代码到引导部署过程的几乎所有操作 -并且它可以在多个系统上同时或以循环方式执行。...能够以有逻辑的组织编写这些任务(本地和远程)的脚本,最重要的,在你意识到浪费了多少时间不断重复相同的步骤,在此过程中呈现一切容易出错的情况之后,编程方式很快被证明是非常有价值的。...注意:所推荐的Capistrano,不包含你仓库内的任何敏感信息(如数据库连接的安全凭证)。

    2.3K20

    Ansible 常用

    failed=1 就是某个task执行失败了,这里失败的原因是我的playbook中的命令写错了 - -# 。...只需要加入vars字段,并在下面直接声明就可以了;调用的时候要加双大括号 这时候又有一个问题:如果我在命令行中传递了一样的变量username,和playbook中的变量冲突了,哪个生效?...图中的大体含义是:首先安装httpd,然后复制管控主机上的定制好的配置文件到所有被管控主机上,如果复制配置文件这一步为changed,就会触发handlers,即重启httpd服务让复制过去的配置文件生效...templates 刚才我们有一步复制了一个本地已经定义好的配置文件到被管控主机上作为被管控主机上的,但是如果被管控主机各自需要的配置不相同怎么办?...注意,roles下的层级结构一定要遵循规范,否则无法成功调用 tags:标签 有的role中可能有很多个task任务,如果我们只想运行role中的某一个task,而不想所有task都运行一遍怎么办?

    1.6K20

    利用Kamal摆脱Kubernetes的复杂性

    最近我写了一篇关于 Capistrano 的文章,没想到会再次提及它,因为它是早期应用部署历史的遗迹。...在我的 Mac 上启动 Warp 后,我会检查一下我的内置 ruby 的版本: 然后我可以安装 kamal gem: > gem install kamal 然后启动它: 我们没有任何需要部署的东西,也没有任何需要部署的地方...在这个 yaml 模板中,简单的组织层次结构很容易阅读,我们将检查它需要哪些类型的东西: >cat config/deploy.yml # Name of your application....镜像可能来自 Docker Hub,这是“镜像主机”,因此您需要存储凭据。请注意,env 变量会以可编辑的方式或明文形式注入到容器中。...如预期的那样,如果我现在执行此操作,系统会迅速告诉我没有内容可以交流: 那么,Kamal 如何处理所有指定和可用的服务器呢? 连接到服务器后,如果需要,它将安装 Docker 和 curl。

    15510

    Kubernetes 中容器的退出状态码参考指南

    Kubernetes 中对失败的容器进行故障排除,并提供有关上面列出的所有退出代码的更多详细信息。...检查运行容器的命令语法是否正确; 检查运行容器的用户,或者镜像中执行命令的上下文,是否有足够的权限在宿主机上创建容器; 如果您的容器引擎提供了运行容器的 option,请尝试它们。...检查主机上的日志,查看在容器终止之前发生了什么,以及在接收到 SIGKILL 之前是否之前收到过 SIGTERM 信号(优雅终止); 如果之前有 SIGTERM 信号,请检查您的容器进程是否处理 SIGTERM...然后,尝试故意造成分段错误并调试导致问题的库; 如果您无法复现问题,请检查主机上的内存子系统并排除内存配置故障。...如果上述操作失败,则 bash 进入容器并检查有关 entrypoint 进程及其失败原因的日志或其他线索。 哪些 Kubernetes 错误与容器退出代码有关?

    32810

    云原生之 Ansible 篇(一)

    而工作中,更多的时候,我们不是在编写playbook,就是在编写playbook的路上。所以,接下来我重点说说如何写这个playbook,也就是playbook的基本语法。...,只是使用不同的参数和变量而已; 每一个任务最好有一个name属性,这样在执行yaml脚本时,可以看到执行进度信息(也方便失败的时候快速定位)。...拿copy这个模块来举例子说明,当我们准备将一个文件通过Ansible拷贝到远程主机时,copy模块首先检查远程是否已经存在了该文件,如果不存在,则把文件拷贝过去,返回changed为大于0;如果存在时...handlers是用于监控一个任务的执行状态,如果一个tasks任务最后是changed状态则会触发handlers指定的操作。...4.范围 全局范围:从命令行或ansible配置设置的变量 play范围:在play和相关结构中设置的变量 主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量 如果多个级别上定义了相同名称的变量

    2.3K10

    容器和 Kubernetes 中的退出码完整指南

    (SIGTERM)容器收到即将终止的警告,然后终止255退出状态超出范围容器退出,返回可接受范围之外的退出代码,表示错误原因未知 下面我们将解释如何在宿主机和 Kubernetes 中对失败的容器进行故障排除...检查运行容器的命令语法是否正确; 检查运行容器的用户,或者镜像中执行命令的上下文,是否有足够的权限在宿主机上创建容器; 如果您的容器引擎提供了运行容器的 option,请尝试它们。...检查主机上的日志,查看在容器终止之前发生了什么,以及在接收到 SIGKILL 之前是否之前收到过 SIGTERM 信号(优雅终止); 如果之前有 SIGTERM 信号,请检查您的容器进程是否处理 SIGTERM...然后,尝试故意造成分段错误并调试导致问题的库; 如果您无法复现问题,请检查主机上的内存子系统并排除内存配置故障。...如果上述操作失败,则 bash 进入容器并检查有关 entrypoint 进程及其失败原因的日志或其他线索。

    5.6K20

    GreenPlum中的Segment Mirror镜像模式及故障恢复

    可以以不同的配置把镜像Segment放置在集群中的主机上,只要求同一个Segment的主实例和镜像实例在不同的主机上。每台主机必须有相同数量的主Segment和镜像Segment。...另外有一种spread mirror方式,其把每台主机的镜像散布在多台主机上,这样如果任何一台主机失效,其他主机都不会有超过一个镜像被提升为活动主Segment,只有当主机数量大于每台主机上的Segment...在WAL日志中,所有的修改都在被应用之前先写入到日志来确保任何进程内操作的数据完整性。 WAL日志对Segment镜像还不可用。...如果不能完成增量恢复,恢复会失败并且应该重新运行 “gprecoverseg -F” 来执行完全恢复。这会导致主Segment把所有的数据都复制给镜像。...在一个平衡的系统中,所有Segment的role和preferred_role都是匹配的。当它们不匹配时,就可能有台硬件主机上活动主Segment数量造成的倾斜。

    70110

    zabbix 监控介绍「建议收藏」

    Api 的支持,方便与其他系统结合 4、Zabbix 缺点 ​ 需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。 ​...2、Zabbix 数据库存储 所有配置信息和 Zabbix 收集到的数据都被存储在数据库中。...一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。 3、监控项 (item) 你想要接收的主机的特定数据,一个度量数据。...12、模版 (template) 一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合 模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单...模版是直接关联到每台单独的主机上。

    68210

    干货视频|解析Zabbix5.0重要新功能点的底层原理

    如你所见,所有五行都成功输入到数据库中,没有主键问题导致的查询失败。 02 - 关于NODATA触发器和Proxy可用性 第二个功能是关于NODATA触发器和Proxy可用性的问题。...当问题实际上出现在Proxy上而不是在主机上时,我们将会看到大量的NODATA触发器的存储。...我们在主机上创建一个监控项,然后等待下一个更新间隔,看一下我们究竟将收到什么样的数值。...当你创建新主机时,如果是网络设备,你就要添加一个SNMP接口,且必须选择SNMP版本。选择SNMP版本时(本示例中是SNMPv2),你还必须指明SNMP版本的所有必需参数。...然后,当你要在主机上创建所有监控项并选择该监控项类型为SNMPv2时,这些监控项可能是主机上或模板上创建的标准监控项,也可能是监控项原型。所有这些信息都从主机界面获取,因此输入错误的几率要小得多。

    87120

    【DevOps】Ansible v.s. Salt (SaltStack) v.s. StackStorm

    架构 Ansible 的架构很简单,你有在你的机器上运行的应用程序,你有在远程主机上运行的任务,通过 SSH 进行通信并通过 SCP/SFTP 传输文件。...如果 StackStorm 是一种编程语言,它将是强类型的。对于操作,您指定所有输入的类型,对于触发器,您指定字段和类型。...另一个独特的功能是 ChatOps “别名”(聊天命令)内置在包中。因此,如果您安装 NAPALM 包作为示例,它会自动安装 NAPALM 的所有聊天命令。...与 StackStorm 的传感器和触发系统类似,Salt 的信标将事件发送到消息总线中,然后可以在反应器中(在主节点上)进行处理。...Salt 有信标,可以在代理和中央主机上运行的服务,如果你想检测本地机器上的事件,这是一个独特的功能。Ansible 的开源版本不允许(也不会尝试)允许您响应事件。

    1.2K20

    GreenPlum中的一些管理工具

    如果显示 GPCHECK_ERROR,则一个或多个验证检查失败。用户也可以使用gpcheck 来收集和查看主机上的平台设置,而不运行验证检查。 用户应该以root用户运行gpcheck。...如果显示 GPCHECK_ERROR,则一个或多个验证检查失败。用户也可以使用gpcheck 来收集和查看主机上的平台设置,而不运行验证检查。 用户应该以root用户运行gpcheck。...后备Master数据目录在初始化失败后不会被清理,因为它包含可帮助确定失败原因的日志文件。 如果发生初始化失败,则会在后备主机目录/tmp中生成摘要报告文件。 该报告列出了后备主机上需要清理的目录。...这个工具执行以下任务: 验证配置文件中参数的正确。 确保可以建立到每个主机地址的连接。如果主机地址无法到达,该工具将退出。 验证区域设置。 显示将要使用的配置并提示用户进行确认。...Greenplum软件包管理器(gppkg)工具在集群中的所有主机上安装 Greenplum数据库扩展以及任何依赖项。在系统扩展和Segment恢复的情况下,它也将自动 在新主机上安装扩展。

    50310

    Ceph组件的状态

    在MON主机上修改允许TCP 端口6789的访问。 2.磁盘空间。每个MON主机上必须有超过5%的空闲磁盘空间使MON和levelDB数据库正常工作。...3.MON没有工作或者离开选举,检查如上命令输出结果中的quorum_status和mon_status或者ceph -s 的输出来确定失败的MON进程,尝试重启或者部署一个新的来替代它。...系统内存应该足够主机上所有的OSD进程,打开文件句柄数和最大线程数也应该是足够的。 OSD进程处理心跳的限制导致进程自杀。默认的处理和通信超时不足以执行IO饥饿型的操作,尤其是失败后的恢复。...任何磁盘持续显示不常见的值可能会失败: iostat x /dev/sda ###替换osd数据磁盘### 当集群规模比较大,磁盘出硬件故障是一个常态。...如果清理任务发现任何对象有损坏或者不匹配的数据(校验和检测),它将标记这个对象为不能使用并且需要手动介入和恢复。OSD执行写操作时计算校验和,Ceph并不能武断地决定副本中的哪个校验和是正确的。

    1.3K20

    Ansible 2 -- 5 playbook 语法

    playbook 是 YAML格式的,yaml格式可以很方便的被转换为json供开发语言使用 顺便推荐一个在线的yaml转json playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式...一个playbook就是一组play组成的列表 每个play必须包含host和task,play就可以想象为连接到主机(host)上执行任务(task)的事物 host就是inventory中定义的主机...tasks下定义一系列的task任务列表,依次执行,如果执行某任务失败了,后续的任务不会执行 ?...notify和handler ansible中几乎所有的模块都具有幂等性,这意味着被控主机的状态是否发生改变是能被捕捉的,即每个任务的 changed=true或changed=false。...注意,notify是在执行完一个play中所有task后被触发的,在一个play中也只会被触发一次。 意味着如果一个play中有多个task出现了changed=true,它也只会触发一次。

    1.2K20

    Docker无法启动:端口冲突导致容器失败

    ⌨ Docker无法启动:端口冲突导致容器失败 摘要 作为一位经验丰富的技术博主,我深入研究了Docker容器启动问题,特别是由端口冲突引发的容器启动失败。...在深入探讨容器启动失败之前,让我们先了解什么是端口冲突。 1. 端口 在计算机网络中,端口是用于标识特定服务或应用程序的通信终点。每个端口都对应一个数字,范围从0到65535。...端口映射 Docker容器通常使用端口映射来将容器内部的端口映射到主机上的端口。如果主机上的相同端口已被其他应用程序使用,容器将无法成功映射端口,因此无法启动。 如何解决端口冲突导致的容器启动失败?...✅ 要解决由端口冲突导致的容器启动失败问题,您可以采取以下步骤: 1. 检查端口占用情况 在主机上使用命令行工具或网络监控工具来检查哪些进程占用了所需的端口。...参考资料 Docker官方文档 Docker端口映射文档 希望这篇博客对您有所帮助,并能帮助您成功解决Docker容器启动失败的问题。如果您有任何问题或需要更多深入的指导,请随时联系我。

    25710

    一键实现自动化部署(灰度发布)实践

    比尔盖茨先生曾经都说过:“任何技术在一个业务中使用的第一条规则就是,将自动化应用到一个高效的操作上将会放大高效。第二条就是自动化应用到一个低效操作上,则放大了低效率。”...2.11 Codar Codar 是一个HP的持续部署解决方案。部署使用Jenkins触发。 2.12 CircleCI CircleCI 是一个CI解决方案,强调灵活性、可靠性和速度。...2.19 Capistrano Capistrano 是一个开源部署工具,使用Ruby开发。Capistrano 文档具有脚本语言和“理智的,富有表现力的API。”...main $1 $2 4.2 使用shell实现php代码自动发布 脚本适应环境: 1、操作系统:centos 6.5 64位 2、代码使用gitlab进行管理 3、代码每次上线和回滚通过tag控制 补充:如果需要在你的企业使用我的这种部署方式...4、如果需要过滤一些临时目录或者日志目录,可以在rsync推送代码的时候使用–exclude选项进行过滤,示例脚本中过滤了.git目录和config.php文件是不会部署的。 #!

    1.4K20

    官方博文 | Zabbix Agent自动注册

    文章简介 了解如何使用自动注册功能在大量主机上部署Zabbix Agent,并节省手动工作的时间。 1 ? 部署方式 ? 安装 首先,在主机上部署 Agent的任务与Zabbix无关。...你可以在Hostname之后添加任何字符串,并且当 Agent执行活动 Agent注册时,它将使用指定的文本作为前端中的主机名。但是,在部署大量主机时,每个主机都需要一个唯一的主机名。...由于通常所有计算机上的主机名都不相同,因此当你在200台主机上部署Zabbix Agent时,将有一个静态条目:hostnameItem = system.hostname。...如果仅在 Agent配置文件中定义HostMetadata,然后将其部署在200个虚拟机上,我们将在每台计算机上获得相同的元数据,这将导致无法正确过滤计算机并决定如何处理它们。...例如,如果发生更改,则更改主机名,并且不再与操作1匹配,而是与操作2匹配,那么所有更改也将自动对主机进行。 3 ? 结论 ? 关于有效的活动 Agent注册,我只想说这些。

    75510

    架构设计 6-高可用架构之高可用计算架构

    当执行任务的服务器故障后,系统需要挑选新的服务器来执行任务 任务如何重新执行 对于已经分配的任务即使执行失败也不做任何处理,系统只需要保证新的任务能够分配到其他非故障服务器上执行即可 设计一个任务管理器来管理需要执行的计算任务...,但是要更简单一些,因为计算高可用的主备架构无须数据复制 详细设计 主机执行所有计算任务 当主机故障(例如,主机宕机)时,任务分配器不会自动将计算任务发送给备机,此时系统处于不可用状态 如果主机能够恢复...如果主机不能够恢复(例如,机器硬盘损坏,短时间内无法恢复),则需要人工操作,将备机升为主机,然后让任务分配器将任务发送给新的主机(即原来的备机);同时,为了继续保持主备架构,需要人工增加新的机器作为备机...备机 冷备:备机上的程序包和配置文件都准备好,但备机上的业务系统没有启动 温备:备机上的业务系统已经启动,只是不对外提供服务 优缺点 优点就是简单,主备机之间不需要进行交互,状态判断和切换操作由人工执行...集群中每个服务器的角色都是一样的,都可以执行所有任务 详细设计 正常情况下,任务分配器采取某种策略(随机、轮询等)将计算任务分配给集群中的不同服务器 当集群中的某台服务器故障后,任务分配器不再将任务分配给它

    49630
    领券