How to manage logstash deployments?

What's the best way to manage multiple Logstash deployments?

I have a testing environment and a production environment and each has it's own configuration file pulling data from its respective data store and sending the data the respective elasticsearch cluster.

How are other people managing a scenario like this?

Any configuration management system that supports templating of configuration files should do. Ansible has worked great for me.

I've heard good things about Ansible. How does that compare to something like Puppet or Chef? Or are they not mutually exclusive?

We're not invested in any deployment system at the moment. We're using Atlassian Bamboo to kind of handle continuous integration, but it's not perfect yet. Could I integrate Ansible with that?

I've heard good things about Ansible. How does that compare to something like Puppet or Chef? Or are they not mutually exclusive?

Conceptually they're the same AFAIK. Ansible is primarily agent-less which is both good and bad.

We're using Atlassian Bamboo to kind of handle continuous integration, but it's not perfect yet. Could I integrate Ansible with that?

Sure.

You could consider Docker, there are official images here:

https://hub.docker.com/_/logstash/

In my company we are using logstash with a queue, so we spawn Docker containers according the queue size.

Running logstash is just 1 line:

docker run -ti -v $PWD/logstash.conf:/opt/logstash.conf logstash:2.2 /opt/logstash/bin/logstash agent --debug -f /opt/logstash.conf