首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能消除对无源控制机的需求?

我怎样才能消除对无源控制机的需求?
EN

DevOps用户
提问于 2019-01-26 17:50:45
回答 2查看 124关注 0票数 5

Ansible很适合部署基础设施,但它要求您拥有一台控制机器。这就增加了手动设置它和保护它的负担,然后拉下您的剧本并连接到您的服务器。

我想要一种“在云中”运行我的剧本的方法,而不是在我自己的系统上运行。我知道商业提供的安可利塔,但据我所能看到,这是不适合个人使用。

一种选择是使用托管的CI工具(如Travis-CI或Gitlab CI )来运行它们,但是从安全的角度来看,这是错误的,因为访问了我的Travis/GitLab帐户的人就可以访问我的所有服务器。

有哪些解决方案能满足这一要求?我的GitLab CI建议是否存在严重的安全问题,还是一个公认的解决方案?

EN

回答 2

DevOps用户

回答已采纳

发布于 2019-01-26 23:04:59

解决方案是自动设置控制机器,即VM。例如,您可以使用Vagrant、Terraform或类似的工具(在这个例子中,我将继续使用Vagrant,这是关于原理的)。使用这种方法,VM完全由文本文件("Vagrantfile")定义,并且可以轻松和可重复地创建和重新创建。Vagrantfile形成了一个基本映像,例如一些特定的Linux发行版;网络等;以及必要的命令行来设置它,从那里开始。

只需提供所有必要的shell命令,就可以设置VM (即安装Ansible)。在这个特殊的例子中,这可能就足够了。如果您需要一个更复杂的VM,您可以获得某种程度的递归,并使用Ansible (或其替代方案之一)配置VM本身。

显然,您希望将Vagrantfile与您的其他配置一样对待;也就是说,将它提交到您的SCM中并保持其最新。

这只是一个例子:您不需要使用Vagrant或VM;您还可以在Docker映像或您选择的云提供商提供的容器化中安装Ansible。

票数 5
EN

DevOps用户

发布于 2019-02-11 16:06:55

如果您打算采用基础设施作为代码的方式,您将希望将该代码存储在存储库中。将基础设施定义存储在VCS ( GitLab )中与在GitLab中存储代码具有几乎相同的安全含义。只需确保不以纯文本存储敏感数据或凭据,或者根本不需要帮助。在Ansible的例子中,这通常意味着使用防跳台加密敏感文件。但这不是唯一的办法。

至于部署,您可以使用抗拉,它运行在要设置的计算机上:

ansible-pull -U <repository> [options] [<playbook.yml>]

它将从指定的存储库获取Ansible配置到本地主机,然后执行您告诉它的剧本。

这应该满足您的需求,但这也意味着执行ansible-pull的机器将有权访问存储库中的所有内容。这对你的环境是否足够安全取决于你。您可以在多个存储库中拆分您的Ansible配置,使用不同的分支,在初始拉出之后撤销机器的访问,等等。

通常,对存储库中的敏感数据进行加密(磁盘加密),确保您绕过SSH或HTTPS (飞行中的加密),并注意谁有权访问存储库,甚至是间接访问( access /用户管理),并且您已经为创建一个安全的环境做了很大的努力。

使用CI部署Ansible是否足够安全,这是值得商榷的。有人可能会说,如果有人获得(写) Travis/GitLab帐户的访问权限,你就可以在那里保存你的Ansible剧本,因为他们可以修改这些剧本,这只是时间问题。另一方面,存储在存储库中的代码是基础设施代码的一半。YMMV

票数 1
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/6109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档