On the face of it, it looks like I need to be able to install some software daemons on the target nodes for these things to work. If I can't do that (e.g. an Amazon RDS instance), what are my options?

Similarly, Ansible seems to be based all around SSH. Can this be used to configure RDS?

Thanks for the feedback -- the discussion has led me to a more targeted question here: https://serverfault.com/questions/588237/whats-a-good-cm-tool-for-managing-a-cloud-cluster-composed-diverse-resources-ac


You CAN administer RDS using Ansible with rds, rds_param_group and rds_subnet_group modules. They do not rely on installing any remote management agents(ew!) and they don't ssh directly into the node. These 3 modules communicate with AWS using officially provided API calls(with the help of boto library).

Granted they might not be able to do everything that you can on your own EC2 instance running MySQL, but these modules still give you some degree of management.

  • Thanks -- looking into Ansible. Have been trying to look into Ansible. Looks like their whitepaper is behind an email firewall and they're not responding... :-( – user14645 Apr 11 '14 at 23:49

Expanding on the good answer and comments from Nathan, I can offer some further explanation as to why configuration management tools won't work well (if at all) with SaaS solutions like Amazon RDS.

RDS is essentially "hosted MySQL". You don't get any access to the underlying operating system, so you can't install packages, poke around the configuration or tail log files. Your only interface with RDS from a configuration perspective is either via Amazon's Web Console or API, in exactly the same way as Elasticache is "hosted Memcache" and ELB can be thought of as "hosted HAproxy" - they are SaaS (Software as a Service) offerings.

As a result, traditional configuration management tools like Puppet or Chef will not work, as they need full OS-level access.

A tool that could be of use however is Amazon's own CloudFormation utility. Not "configuration management" per se, but it can be used as a replacement. Check out Amazon's documentation for more details.

If you really want to use Puppet or another configuration management tool on Amazon, you will need to run your own MySQL installation on top of an EC2 instance. This has drawbacks as well as advantages however, as you gain control at the expense of easy management, which is exactly what RDS provides - Amazon handles your backups, maintenance, high-availability etc and you just get a MySQL endpoint to talk to.

As ceejayoz pointed out in his comment, the above isn't to say that configuration management tools are worthless - I personally happen to be a massive Puppet fan - you just need to pick the right tool for your environment. Puppet is awesome at doing OS-level management. CloudFormation is awesome at managing your Amazon services. Put both technologies together and you have a comprehensive set of tools that can manage your entire infrastructure.

  • Should people just go back to straight colo and dedicated servers? Sometimes, it seems like wrangling cloud resources is more complex than running your own gear! – ewwhite Apr 10 '14 at 22:56
  • Maybe some combination (Cloud Formation + Puppet) will be nice. But I suspect it will be a hacky nightmare. I've started a more targetted question here serverfault.com/questions/588237/… – user14645 Apr 10 '14 at 23:08
  • Its seems there's a split between "pull" based systems (chef, puppet, salt?) that need stuff installed on the managed resource, and "pull" based systems. Ansible is in the later category. Some useful discussion here: serverfault.com/questions/568187/… – user14645 Apr 12 '14 at 0:13

You don't have any options with RDS. All the management is handled for you. If you need more power over the database, use EC2 and install your own.

  • 1
    True. The APIs let you do some things, but you can't manage the packages and software on RDS unfortunately. – Nathan C Apr 10 '14 at 20:24
  • 1
    That's an entirely different question and not related to RDS in any shape or form... – Nathan C Apr 10 '14 at 20:29
  • 1
    "the model I should have in mind with these configuration tools is that they're only good for use on the subset of systems that that the tool builders have thought to support" The problem here isn't the tools, it's that AWS RDS is a managed solution for which Amazon restricts your access. No tool is going to be able to work around that limitation. – ceejayoz Apr 10 '14 at 21:10
  • 1
    "Having a language to connecting all these machine, keeping track of who is the master, who is the slave, the upgrade ballet of disconnecting instances from a load balancer during upgrades, etc." RDS handles master/slave stuff, upgrades, multi-AZ replication, etc. If you want to do all that stuff, it's entirely possible with a configuration management tool... but you can't use RDS. Again, this is a RDS limit, not a tooling limit. – ceejayoz Apr 10 '14 at 21:11
  • 1
    Anything you can do with a shell script can be done in Ansible. If it's not handled by default, you can make a module - hell, you can make one with shell scripts. If make fits your needs and you like using it, we don't really care - go for it. – ceejayoz Apr 10 '14 at 21:45

With Salt you can use the boto_rds module, but, as others pointed out, don't expect the same level of control that you would have over a self-managed MySQL database, see https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.boto_rds.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.