标签: devops

你如何阻止Ansible在主目录中创建.retry文件?

当Ansible在对主机运行播放时遇到问题时,它会将主机名输出到用户主目录中以'.retry'结尾的文件中.这些通常不使用,只是导致混乱,有没有办法将它们关闭或放在不同的目录?

ansible ansible-playbook devops

144
推荐指数
3
解决办法
4万
查看次数

错误:无法下载存储库“appstream”的元数据:无法准备内部镜像列表:镜像列表中没有 URL

我正在尝试使用我在 Dockerfile 中指定的 centOs 上的 yum 下载 java。拉取 centOs 映像后,运行崩溃并抛出此错误!?还要提一下,我的服务器实例是AWS EC2!

Step 2/9 : RUN yum install java -y
 ---> Running in 39fc233aa965
CentOS Linux 8 - AppStream                      184  B/s |  38  B     00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
The command '/bin/sh -c yum install java -y' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

centos yum docker devops

105
推荐指数
6
解决办法
22万
查看次数

使用Terraform时的最佳做法

我正在将我们的基础设施交换成terraform.实际管理terraform文件和状态的最佳实践是什么?我意识到它的基础设施是代码,我会将我的.tf文件提交到git中,但我也提交了tfstate吗?它应该驻留在S3这样的地方吗?我最终希望CI能够管理所有这些,但这已经非常紧张,需要我找出文件的移动部分.

我真的只是想看看那里的人们是如何在生产中使用这种类型的东西的

terraform devops

91
推荐指数
4
解决办法
3万
查看次数

从文件系统中删除该框后,如何从全局状态中删除Vagrant框?

//,我意识到它还在运行之前删除了一个包含正在运行的Vagrant框的文件夹.

我现在如何从Vagrant(全局状态)中删除它?

我已经删除了Virtualbox VM.

virtualbox vagrant devops

85
推荐指数
2
解决办法
3万
查看次数

无法终止容器:<container-id>:尝试终止容器,但未收到退出事件

我无法停止、删除或终止我的 docker 容器。下面给出的命令及其各自的错误消息:

1. docker stop <container-id>
2. docker kill <container-id>
3. docker rm <container-id>
Run Code Online (Sandbox Code Playgroud)

我明白了

1. Error response from daemon: cannot stop container: <container-id>: tried to kill container, but did not receive an exit event
2. Error response from daemon: cannot kill container: <container-id>: tried to kill container, but did not receive an exit event
3. Error response from daemon: You cannot remove a running container <container-id>. Stop the container before attempting removal or force remove
Run Code Online (Sandbox Code Playgroud)

如果我用 sudo 为所有内容添加前缀,则会出现相同的错误消息;如果我使用 …

containers docker docker-compose devops

74
推荐指数
3
解决办法
10万
查看次数

更新k8s ConfigMap或Secret而不删除现有的

我一直在使用K8S ConfigMap和Secret来管理我们的属性.我的设计非常简单,它将属性文件保存在git仓库中,并使用构建服务器(如Thoughtworks GO)将它们自动部署为我的k8s集群中的ConfigMaps或Secrets(在选择条件下).

目前,我发现我不得不总是删除现有的ConfigMap和Secret并创建新的更新,如下所示:

  1. kubectl delete configmap foo

  2. kubectl create configmap foo --from-file foo.properties

有没有一种简单的方法可以使一步更有效,而且比删除当前更有效?我现在正在做的可能会破坏使用这些配置映射的容器,如果它尝试在删除旧的configmap并且尚未创建新的configmap时挂载.

提前致谢.

docker kubernetes devops

67
推荐指数
5
解决办法
3万
查看次数

我应该将.tfstate文件提交给Git吗?

关于是否将.tfstate文件提交到Git 的问题,我有点疑惑.该Terraform文档状态:

Terraform terraform.tfstate默认情况下也会将一些状态放入文件中.这个状态文件非常重要; 它将各种资源元数据映射到实际资源ID,以便Terraform知道它正在管理什么.必须保存此文件并将其分发给可能运行Terraform的任何人.我们建议简单地将其置于版本控制中,因为它通常不会太大.

另一方面,现在,使用Terraform时最佳实践的接受和赞成回答如下:

Terraform配置可用于在不同的基础架构上配置多个盒子,每个盒子可以具有不同的状态.由于它也可以由多个人运行,因此该状态应该位于集中位置(如S3),而不是 git.

(原作者的重点,而不是我)

谁是对的,如果是的话,为什么?

terraform devops

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

让Ansible和Rundeck一起工作是一个好主意,还是使用任何一个就足够了?

最近我在看Ansible,并希望在项目中使用它.还有另一个工具Rundeck可以用来做各种操作工作.我对这两种工具都没有经验,这是我目前对它们的理解:

类似的观点

  • 这两个工具都是无代理的,并使用SSH在远程服务器上执行命令

  • Rundeck的主要概念是Node,与Ansible的库存相同,关键思想是定义/管理/分组目标服务器

  • Rundeck可以在选定的节点上执行ad-hoc命令,Ansible也可以非常方便地执行此操作.
  • Rundeck可以定义工作流并在选定的节点上执行,这可以通过编写playbook来使用Ansible完成
  • Rundeck可以与Jenkins等CI工具集成进行部署工作,我们也可以定义一个Jenkins作业来运行ansible-playbook来进行部署工作

不同点

  • Rundeck有Job的概念,Ansible没有

  • Rundeck有Job Scheduler,Ansible只能通过Jenkins或Cron任务等其他工具实现这一点

  • 默认情况下,Rundeck免费提供Web UI,但您必须支付Ansible Tower的费用

似乎Ansible和Rundeck都可用于执行配置/管理/部署工作,可能以不同的方式.所以我的问题是:

  • 这两种补充工具是否设计用于不同目的?如果它们是补充工具,为什么Ansibl只与Chef/Puppet/Slat等工具相比而不与Rundeck相比?如果他们不是为什么他们有这么多相似的功能?
  • 我们已经在使用Jenkins for CI,构建一个Continuous-Delivery管道,哪个工具(Ansible/Rundeck)更适合用于部署?
  • 如果它们可以一起使用,那么最佳做法是什么?

非常感谢任何建议和经验分享.

jenkins continuous-delivery ansible rundeck devops

43
推荐指数
3
解决办法
2万
查看次数

Gitlab CI/CD 在管道之间传递工件/变量

太长了;博士

\n

如何$BUILD_VERSION在 Gitlab CI 中不同管道的作业之间传递数据(例如变量)?

\n

所以(就我而言):

\n
Pipeline 1 on push ect.            Pipeline 2 after merge\n\n    `building` job ...                `deploying` job\n          \xe2\x94\x82                                \xe2\x96\xb2\n          \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 $BUILD_VERSION \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n
\n

背景

\n

考虑以下示例(完整内容yml如下):

\n
Pipeline 1 on push ect.            Pipeline 2 after merge\n\n    `building` job ...                `deploying` job\n          \xe2\x94\x82                                \xe2\x96\xb2\n          \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 $BUILD_VERSION \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n

我有两个阶段,登台部署暂存阶段building的工作构建应用程序并创建一个“审查应用程序”(为了简单起见,没有单独的构建阶段)。然后,部署中的作业会上传新应用程序。deploying

\n

building每当打开合并请求时,包含作业的管道就会运行。这样,应用程序就构建完成了,开发人员可以单击合并请求中的“审核应用程序”图标。该deploying作业在合并请求合并后立即运行。这个想法如下:

\n
                      *staging* stage (pipeline 1)        *deploy* …
Run Code Online (Sandbox Code Playgroud)

pass-data gitlab gitlab-ci devops

30
推荐指数
2
解决办法
5万
查看次数

如何在docker容器中运行cron作业

我试图在docker容器中运行一个cron作业

但没有什么对我有用

我的容器只有cron.daily和cron.weekly文件

crontab,cron.d,cron.hourly ......在我的容器中不存在

crontab -e也无法正常工作

我的容器用/ bin/bash运行

linux cron crontab docker devops

27
推荐指数
4
解决办法
3万
查看次数