5 ms·
Semaphore – Modern UI for Ansible
- MuffinFlavored 6y agoWhat do people use Ansible for that can't be done with Terraform and vice-versa?
- tptacek 6y agoTerraform is not great at provisioning "inside" of Unix servers, and Ansible is not great at provisioning cloud resources.
- xyzzy_plugh 6y agoYep. Terraform + Ansible or Puppet is the way to go.
- tptacek 6y agoI don't think I agree anymore; most of what I'd get done with Ansible now I'd do with a container, and if all you need to get done on the host is networking and a reasonable Docker setup, Terraform is good enough to get that done. I'm a lot less likely to ever use Ansible now. But, I mean, the answer to the question above is easy. :)
- senorsmile 6y agoansible can be used to build container images in an idempotent way. And ansible is greatat creating deployment logic among other things. Where puppet , chef et al. are primarily for automating a direct machine, Ansible is a general purpose automation framework. Terraform is definitely better at provisioning cloud resources, but Ansible is much better at automating pretty much anything else that you could think of.
- ViViDboarder 6y agoI use Ansible to harden my servers, configure ssh, deploy private keys, install Docker, and start all my Docker services.
- devn0ll 6y agoI've noticed that I used Ansible less and less because of kubernetes. Now we also use crossplane.io and we never touch terraform anymore as well. It's all helm charts now here.
- emptysongglass 6y agoIsn't there a a chicken and egg problem with Crossplane? A quick glance over the docs tells me I need a cluster to already exist. So how am I provisioning that cluster? Terraform.
- jamesmishra 6y agoAnsible comes with an ecosystem of collections and playbooks to help configure software. A lot of this configuration is hard to describe in Terraform's declarative way and the Terraform ecosystem generally avoids it.
- hidden_sheepman 6y agoCustom complex workflows
- watsonkr 6y agoI use both! Terraform builds the cloud resources and then hands it off to ansible for final provisioning.
- cpitman 6y agoOne more use case is that you sometime need to do something, not just specify idempotent configuration. For example, you might have a nightly task to run a script on multiple servers that dumps a data file, then copy those files to a central server. Ansible can easily be used for both "I need to configure a thing" and also for "I need to script activity".
- ghayes 6y agoFor example: I use terraform to create two EC2 nodes on a VPC and an ALB load balancer. Then I use Ansible to connect to those nodes and install Nginx and (re-)deploy my application code. If you're not going the route of full containerization, this is, in my opinion, the lowest common denominator set of provisioning tools and quite robust for nearly any workflow.
- Arubis 6y agoTo answer your question pedantically, probably nothing; with enough time and effort, you could bend either tool to perform the general duties of the other. Terraform is capable of injecting and running shell scripts; Ansible can likewise interface with AWS and other cloud providers (or your own hardware). As sibling commenters have noted, that’s simply not the ideal primary use for each tool.
- 0xbadcafebee 6y agoIt's so sad that these are the tools we have to work with. They are both so shitty, in such subtle ways, to the point that I tear my hair out once a week because of them. And the corporate IT world will never invest in development of truly free replacements just to make other people's lives easier. It's truly depressing.
- emptysongglass 6y agoTerraform is fantastic. Mind explaining what your issues with it are?
- 0xbadcafebee 6y agoIt's not idempotent, it's not even "declarative" (what a joke that concept turned out to be), its dependency tracking / detection sucks, trying to manage changes between state files and code is a nightmare (there is no relationship between the state version and the code version - and these people made a DAG?), the arbitrary way it's designed to locate and use files / modules is unnecessarily painful and restricting, the plugins are usually pretty bad (no consistent conventions, inconsistent code coverage, difficulty in passing/embedding state or data between providers), the limitations of how you can compose HCL (as in what parts of what functions / data objects / attributes / etc you can use what syntax or features) is literally because they just designed it wrong and you have to wait for the next breaking change for them to re-design it to function correctly again, the state file is literally a boat anchor that you can't pull up, they intentionally leave auto-importing out because "we think it's a bad idea" so somebody else had to invent a whole other project just to implement it, magic environment variables, the "features" you can only use if you're a paying customer, the shittily designed opinionated features that don't work outside one use case (workspaces), the masses of duplicate code from modules being a crappy abstraction, lack of backwards compatibility, the incredibly consistent ability for the state to break on apply causing you to copy old state, look up man pages, import current state, manually edit json files, and hack up code just to be able to apply one single change to one single resource, and the biggest flaw of all, there is no abstraction that allows you to just say "make me a VM in these 3 clouds" because everything is so tightly wound around very specific APIs for specific providers with specific features etc, templating sucks, and the "structure" of how you "use it" is so unnecessarily stupid that there are at least 5 projects just dedicated to making it manageable for a human being to run the damn thing. That is literally just from the past 3 days of using Terraform. It's not fantastic, it's cancer. The designers are either morons, or don't use their own tools so they don't see all the problems, or they just don't care, or they intentionally made it Regretware so that once you feel enough pain you will pay them for better features or to manage it for you. Probably a combination of all those.
- lazylizard 6y agomost of the stuff we run is baremetal. this takes over after pxe; public key added with kickstart. even for end-user desktops, this is somewhat useful. the facts give you a picture of what you have on your network. but the web hosting and sql, yes containers..actually lxc.
- cosmotic 6y agoWhat does modern mean in this context?
- deleted 6y ago[deleted]
- cpitman 6y agoReading through their website (https://ansible-semaphore.com/ https://ansible-semaphore.com/), it seems like it comes down to responsive UI with material design, and being written in Go. It's not clear what this offers over Ansible AWX (https://github.com/ansible/awx https://github.com/ansible/awx), which is the traditional Ansible UI.
- sergiotapia 6y agoI miss Ansible/Chef, yes I said it!
- gscho 6y agoI started using chef again recently and I love it. Feels great to use it again after being full k8s for a while.
- senorsmile 6y agoI haven't heard about Semaphore in several years. It's good to hear about some healthy competition to tower/awx.
- thayne 6y agoThe name is kind of ironic. A "modern ui" for something named after a high-tech science fiction communication device is named for an old low-tech communication method.
- vkaku 6y agoLooks like someone messed up that demo instance to be able to run ... bitcoin?
- fiftin 6y agoDemo was hacked :) Currenlty it is ok
- PebblesHD 6y agoA slightly different question to sibling ~MuffinFlavored, what use case does this solve for that running ansible from your existing CI infrastructure doesn’t? If you’re at the scale where running from a laptop doesn’t work, wouldnt you already have some form of CI in place to get to the point of needing whatever role ansible is servicing?
- peclink 6y agoThe most interesting concept is "Build & Deploy" and it's a pity that it isn't described even on conceptual level. I think the "Build & Deploy" for configuration management is the right thing, but it looks like Ansible is not very good tool to implement it (and honestly, I don't know any mainstream tool that is really good at it). I was trying to implement it as follows: - part of a role is executed locally, building all the configuration files from templates (build); - configuration built locally is rsynced into dedicated directory on target server, deleting unnecessary files etc (sync); - part of a role is executed remotely, setting up symlinks from real configuration paths into synced dir and running all necessary actions (restarting services etc). Yes, it's possible to write Ansible playbooks and roles that way, but in practice you are permanently struggling with the default Ansible playbooks and roles organizational structure. I believe the only devops tool that really supports this style of things now is Nix and all the infrastructure around (and conceptually it's perfect, but in practice it has it's drawbacks).
- fiftin 6y ago"Build & Deploy" under development (not available in stable version). Full documentation will be available after release. Build - running locally. After building we have an artifact that can be uploaded to S3/Azure Storage/DO Spaces. Deploy - running remotely on the target server(s). It downloads artifacts from storage and deploys them to the server.