TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Aviary.sh – A tiny Bash alternative to Ansible

276 pointsby dxchesteralmost 5 years ago

32 comments

xbryanxalmost 5 years ago
I&#x27;m not sure if I am understanding this (aviary.sh) correctly, but it looks like this requires an agent to run on the configured hosts.<p>One of the things that I love about Ansible&#x27;s model is that we never need an agent on the host. Once you configure something with Ansible, there&#x27;s no artifact of the configuration left on the machine.
评论 #23649802 未加载
评论 #23646393 未加载
评论 #23644489 未加载
评论 #23644908 未加载
评论 #23646973 未加载
评论 #23648640 未加载
ahnickalmost 5 years ago
If you need a simple way to inject secrets into your aviary variables you may find encpass.sh (<a href="https:&#x2F;&#x2F;github.com&#x2F;plyint&#x2F;encpass.sh" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;plyint&#x2F;encpass.sh</a>) a convenient choice.
评论 #23644601 未加载
ggregoirealmost 5 years ago
Ansible is agentless tho. That&#x27;s a pretty big difference.
评论 #23643933 未加载
评论 #23646846 未加载
simonwalmost 5 years ago
This looks really promising. I&#x27;ve been wanting a very lightweight solution for this which runs on a single host (no need for another host just to run the scripts) and pulls its configuration from a GitHub repository periodically.<p>I ended up writing my own - and hating that I had to do that - because I couldn&#x27;t figure out how to use any of the existing options. Their documentation all seems to assume multiple hosts and a separate machine that you run the scripts on.<p>&quot;Each host periodically fetches the latest version of the inventory to see what roles should it be performing&quot; - that&#x27;s exactly what I want.
评论 #23645838 未加载
评论 #23651072 未加载
评论 #23646007 未加载
dheeraalmost 5 years ago
&gt; Install from the command line, on a box to be managed by aviary.sh:<p>It would be even cooler if I didn&#x27;t need to do anything to do the box besides install openssh-server. I should be able to:<p><pre><code> $ sudo apt-get install aviary $ aviary install my_server 192.168.1.25 # a fresh ubuntu 18.04 install </code></pre> and everything else should just be magic from there.
tonyalmost 5 years ago
If you like this - Fabric is awesome.<p><a href="https:&#x2F;&#x2F;www.fabfile.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.fabfile.org&#x2F;</a><p>Use python over SSH. Super fast to begin, if you can ssh into the server, you can run the equivalent of shell commands (subprocess calls in python) remotely. With python, you can abstract and reuse, with the scriptability of bash, but higher level niceties of the language, libraries and toolchain (linting, formatting, autocompletion, imports).<p>Can it pull the latest version of your app, build it on your server? Yep. Restart daemons? Update libraries (npm, python, etc)? Update system packages? All work fine.<p>Can it configure a vanilla server from scratch? Yes, it&#x27;s helpful to bring in a higher level reusable library like <a href="https:&#x2F;&#x2F;github.com&#x2F;fabtools&#x2F;fabtools" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;fabtools&#x2F;fabtools</a> helps with that.<p>When does it hit limitations? More complex orchestration where you have multiple servers (and variations of them) with configuration to talk to each other over networks. Eventually you get to the kind of setup where having a tool like Ansible &#x2F; Salt &#x2F; Puppet &#x2F; etc. makes sense.<p>For a basic PHP&#x2F;python&#x2F;ruby&#x2F;node site that&#x27;s just running on a single cloud server? A declarative config manager would be overkill for me.
评论 #23644340 未加载
评论 #23645807 未加载
评论 #23645663 未加载
burritosnobalmost 5 years ago
This was written by team.video who is in a hyper competitive space. Every hour spent on Aviary is an hour not spent on differentiating customer features. Why? There are a ton of open source CM tools that give you same functionality and do it better. This is a problem you should have solved after you were a) profitable b) at scale and c) probably not even then.
评论 #23648943 未加载
评论 #23648774 未加载
MINIMAN10000almost 5 years ago
Unfortunately all I could think of was &quot;that sounds cool but I&#x27;d want to stick to dash instead of bash&quot;<p>Also didn&#x27;t realize it wasn&#x27;t agentless which is pretty critical imo
评论 #23644088 未加载
arminiusreturnsalmost 5 years ago
Now this is something I can get behind! Very cool work. I think bash gets a bit of a bad rap and it&#x27;s very popular to bandwagon hate on it, but it&#x27;s one of my favorite tools ever.
peterwwillisalmost 5 years ago
I don&#x27;t care what language or paradigm the tool is written with, Configuration Management tools are evil and should be avoided at all costs. I would literally rather maintain a crappy server and fragile software install manually and treat it as a pet, than use any CM tool at all and pretend my servers are cattle. In reality, the CM becomes the pet.<p>The solution to CM is to use immutable infrastructure, and versioned immutable artifacts. With these paradigms, state never drifts, so there is never a need for configuration management at all. Everything becomes stable and predictable and you no longer have to maintain a finicky pet.<p>But how do you bootstrap your systems, you say? The simplest way possible: make a crappy procedural program that bootstraps the very beginning of your system just enough to push versioned immutable artifacts and run arbitrary commands (essentially just &quot;scp&quot;, &quot;reboot&quot;, &quot;docker pull&quot;, &quot;exec&quot;). With cloud-based systems, you shouldn&#x27;t need to bootstrap anything at all. Build your versioned system images and containers, deploy them, destroy them, re-deploy them.<p>No offense meant to Aviary, I&#x27;m sure there are still legacy systems that require some CM before they can be abandoned, but I really hope people building new systems will abandon them ASAP.
t0astbreadalmost 5 years ago
This looks really effective! I do something similar to keep track of what&#x27;s on my workstations: I just have one large idempotent shell script to set up all the software I use. To help myself not loose track of updating it I have a little helper script to detect packages that aren&#x27;t tracked in the config. I&#x27;ve recently thought about breaking it up into smaller &quot;module-style&quot; scripts. Maybe this could be a good fit (with minor adoptions)!
freedombenalmost 5 years ago
Really neat. I still need to evaluate it more, but this is the kind of thing I&#x27;ve looking for for small infrastucture that isn&#x27;t likely to grow (like home services or small office, etc).
markstosalmost 5 years ago
I&#x27;m all for trying simpler approaches and have written some tooling in bash myself, but at this point Python is pre-installed on many servers like bash is, a large benefit of Ansible is the VAST number of modules already written for Ansible.<p>Imagine if this grew to support all of Ansibles features and modules, but did so in bash.<p><i>shudders</i>
trynewideasalmost 5 years ago
it requires an agent, so it&#x27;s a tiny Bash alternative to Puppet, but that doesn&#x27;t sound remotely as cool
评论 #23644123 未加载
mothsonaslothalmost 5 years ago
Currently I do a fresh install of Ubuntu every time I do new work (every 6months). Normally I spend about 6 hours getting my machine configured up (installing softwarem configuring my terminal, etc)<p>Will Aviary be able to solve this?
评论 #23646685 未加载
stevekempalmost 5 years ago
I&#x27;ve been working on a localhost-only system for automation myself, inspired by puppet but with far fewer modules:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;skx&#x2F;marionette&#x2F;" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;skx&#x2F;marionette&#x2F;</a><p>As of this week it can now pull down docker-images from dockhub, which was something I&#x27;d been needing to rebuild my own systems. Early days, and it is as much proof-of-concept as anything else, but it seems robust and reliable in my own use.<p>Of course I need to add &quot;written in go&quot; to advertise properly!
评论 #23644996 未加载
评论 #23644146 未加载
drinchevalmost 5 years ago
&gt; Installation<p>&gt; curl <a href="https:&#x2F;&#x2F;aviary.sh&#x2F;install" rel="nofollow">https:&#x2F;&#x2F;aviary.sh&#x2F;install</a> | sudo bash<p>I would really try to avoid this, especially when it&#x27;s targeted for sysadmins ( I guess DevOps nowadays ).<p>What&#x27;s the big deal of having this instead :<p>&gt; $ wget <a href="https:&#x2F;&#x2F;gitlab.com&#x2F;dchester&#x2F;aviary.sh&#x2F;-&#x2F;archive&#x2F;1.3.2&#x2F;aviary-install.sh" rel="nofollow">https:&#x2F;&#x2F;gitlab.com&#x2F;dchester&#x2F;aviary.sh&#x2F;-&#x2F;archive&#x2F;1.3.2&#x2F;aviary...</a><p>&gt; .&#x2F;aviary-install.sh
评论 #23645909 未加载
评论 #23648331 未加载
评论 #23645934 未加载
thaynealmost 5 years ago
Wow, perfect timing. I was just looking for something like this. I haven&#x27;t looked at it too in-depth yet, but the design goals align with what I want. Minimal configuration management that pulls config from git and runs locally. Ansible pull, salt masterless, chef solo, etc. work, but they weren&#x27;t designed to be run that way, so have unneeded complexity (and are kind of heavy for what I want).
efreconalmost 5 years ago
I have been working lately on something a bit similar, but in pure POSIX sh. It&#x27;s called primer, <a href="https:&#x2F;&#x2F;github.com&#x2F;efrecon&#x2F;primer" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;efrecon&#x2F;primer</a>, has no agent, cannot work on remote host but supports amalgamation for easy remote installation and operation. Primer is very much docker oriented in the sense that it seeks to automate the installation of all tools before a docker project, then supposes you run docker-compose for the rest of your projects, or orchestrate in any other way.
Hackbratenalmost 5 years ago
I’ve been waiting for a tool like this.
评论 #23643479 未加载
hummo56almost 5 years ago
Looked good but I needed to leave the site after seeing they suggested doing<p>curl <a href="https:&#x2F;&#x2F;aviary.sh&#x2F;install" rel="nofollow">https:&#x2F;&#x2F;aviary.sh&#x2F;install</a> | sudo bash
评论 #23648791 未加载
评论 #23648902 未加载
评论 #23649017 未加载
lifeisstillgoodalmost 5 years ago
I think there is an Genuine Enterprise Need explosion at certain scales. It is not box ticking exercises or empire building but sometime after (my guess) 1,000 units of <i>anything</i> (users, servers, customers, whatever) you start finding that &quot;simple as possible&quot; does not help that much anymore. LDAP support becomes useful and so on.<p>Maybe, I hope maybe, it&#x27;s not a real portal that we pass through, but it does seem so.
评论 #23650483 未加载
Propolicealmost 5 years ago
If you like rerun, drist or bashing. I made a short Go program to replicate the experience.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;tongson&#x2F;rr" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tongson&#x2F;rr</a><p>Yeah, naming conflict with the debugger. Was a simpler replacement for rerun so the shorter command name made sense to me.
ansiblealmost 5 years ago
I do something sort of similar, also using git to maintain the inventory of what to run on what machine.<p>In my case, I&#x27;m using docker-compose.yml files for each machine, and then running:<p><pre><code> docker-compose pull docker-compose up -d </code></pre> We initially wanted to use Watchtower, but it didn&#x27;t work well for us.
评论 #23643959 未加载
评论 #23643742 未加载
combaalmost 5 years ago
More modular, smaller, simpler than aviary is rrconf <a href="https:&#x2F;&#x2F;github.com&#x2F;rrconf&#x2F;rrconf" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;rrconf&#x2F;rrconf</a>
senorsmilealmost 5 years ago
How is this idempotent?<p><pre><code> cat &lt;&lt;EOF &gt; &#x2F;etc&#x2F;motd &quot;Ever make mistakes in life? Let’s make them birds. Yeah, they’re birds now.&quot; --Bob Ross EOF</code></pre>
评论 #23658153 未加载
easterncalculusalmost 5 years ago
Very nice! Ansible can be a little heavyweight for some of the things that me and a lot of people do. I&#x27;ll definitely be taking a look at this.
rawoke083600almost 5 years ago
Bash just use bash ! Nothing new to learn for developers or to debug. Ok i&#x27;m ready for my down-votes...
nodesocketalmost 5 years ago
Typically I use Packer + Terraform and it works generally well (if you going with the immutable servers philosophy). However, often times immutable servers is hard to actually do in practice. If Hashicorp added a new product similar to Ansible &#x2F; Aviary.sh &#x2F; Fabric I think it would complete the entire DevOps loop under a single ecosystem.
评论 #23644483 未加载
评论 #23646748 未加载
nyxtomalmost 5 years ago
Nice, I plan on using this
q3kalmost 5 years ago
&gt; bash is just fine (yes, it is)<p>No, it&#x27;s not. It&#x27;s 2020, we need to stop it with the stringly-typed, footgun-filled madness that is bash scripting. We deserve better than this.<p>Unless I&#x27;m missing something, this README example already contains a bug:<p><pre><code> template $(dirname $0)&#x2F;motd.template &gt; &#x2F;etc&#x2F;motd </code></pre> This will fail if the script path contains a space.
评论 #23644313 未加载
评论 #23644242 未加载
评论 #23644540 未加载
评论 #23644189 未加载
评论 #23644139 未加载
评论 #23644099 未加载
评论 #23644244 未加载
评论 #23645104 未加载
评论 #23644995 未加载
评论 #23646915 未加载
评论 #23644255 未加载
salasrodalmost 5 years ago
&gt; But it&#x27;s too funky you say. Well, yes, bash can have its quirks. But we need some funk every now and then. Let&#x27;s just embrace it!<p>My god, no, stop. Funkyness in production equals outages.
评论 #23644900 未加载
评论 #23644232 未加载