Recently I’m looking at Ansible and want to use it in projects. And also there’s another tool Rundeck can be used to do all kinds of Operations works. I have experience with neither tool and this is my current understanding of them:
Similar points
Both tools are agent-less and use SSH to execute commands on remote servers
Rundeck’s main concept is Node, the same as Ansible’s inventory, the key idea is to define/manage/group the target servers
Rundeck can execute ad-hoc commands on selected nodes, Ansible can also do this very conveniently.
Rundeck can define workflow and do the execution on selected nodes, this can be done with Ansible by writing a playbook
Rundeck can be integrated with CI tool like Jenkins to do deploy work, we can also define a Jenkins job to run ansible-playbook to do the deployed work
Different points
Rundeck has the concept of Job, which Ansible does not
Rundeck has Job Scheduler, which Ansible can only achieve this with other tools like Jenkins or Cron tasks
Rundeck has Web UI by default for free, but you have to pay for Ansible Tower
Seems both Ansible and Rundeck can be used to do configuration/management/deployment work, maybe in a different way. So my questions are:
Are these two complementary tools or they are designed for different purposes? If they’re complementary tools, why is Ansible only compared to tools like Chef/Puppet/Slat but not with Rundeck? If they’re not why they have so many similar functionalities?
We’re already using Jenkins for CI, to build a Continuous-Delivery pipeline, which tool(Ansible/Rundeck) is a better idea to use to do the deployment?
If they can be used together, what’s the best practice?
Any suggestions and experience sharing are greatly appreciated.