从表面上看,我需要能够在目标节点上安装一些软件守护程序才能使这些功能正常工作。如果我无法做到这一点(例如 Amazon RDS 实例),我有什么选择?
同样,Ansible 似乎完全基于 SSH。这可以用来配置 RDS 吗?
感谢您的反馈——讨论让我想到了一个更有针对性的问题: https://serverfault.com/questions/588237/whats-a-good-cm-tool-for-managing-a-cloud-cluster-composed-diverse-resources-ac
答案1
您可以使用 Ansible 管理 RDSrds
,rds_param_group
和rds_subnet_group
模块。它们不依赖于安装任何远程管理代理(ew!),并且它们不直接 ssh 到节点。这 3 个模块使用官方提供的 API 调用(借助boto
库)与 AWS 通信。
当然他们可能做不到一切您可以在自己的 EC2 实例上运行 MySQL,但这些模块仍为您提供一定程度的管理。
答案2
基于 Nathan 的良好回答和评论,我可以进一步解释为什么配置管理工具无法与 Amazon RDS 等 SaaS 解决方案很好地配合使用(如果有的话)。
RDS 本质上是“托管 MySQL”。您无法访问底层操作系统,因此您无法安装软件包、查看配置或尾部日志文件。从配置角度来看,您与 RDS 的唯一接口是通过 Amazon 的 Web 控制台或 API,这与 Elasticache 是“托管 Memcache”以及 ELB 可以被视为“托管 HAproxy”的方式完全相同 - 它们是 SaaS(软件即服务)产品。
因此,Puppet 或 Chef 等传统配置管理工具将无法发挥作用,因为它们需要完全的操作系统级访问权限。
不过,亚马逊自己的 CloudFormation 实用程序可能有用。虽然它本身不是“配置管理”,但可以用作替代品。请查看亚马逊的文档更多细节。
如果你真的想要在 Amazon 上使用 Puppet 或其他配置管理工具,您需要在 EC2 实例上运行自己的 MySQL 安装。然而,这既有缺点也有优点,因为您以牺牲易管理性为代价获得了控制权,而这正是 RDS 所提供的 - Amazon 处理您的备份、维护、高可用性等,而您只需获得一个 MySQL 端点即可与之通信。
正如 ceejayoz 在其评论中指出的那样,上述不是说配置管理工具毫无价值——我个人恰好是 Puppet 的忠实粉丝——你只需要为你的环境选择合适的工具。Puppet 在操作系统级管理方面非常出色。CloudFormation 在管理你的亚马逊服务方面非常出色。将这两种技术结合在一起,你就拥有了一套可以管理整个基础设施的综合工具。
答案3
使用 RDS 时您没有任何选择。所有管理工作都由您处理。如果您需要对数据库拥有更多控制权,请使用 EC2 并安装您自己的数据库。
答案4
使用 Salt,您可以使用该boto_rds
模块,但是,正如其他人指出的那样,不要期望获得与自我管理的 MySQL 数据库相同的控制级别,请参阅https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.boto_rds.html