TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Configuration (mis)management or why I hate puppet, ansible, salt, etc.

46 点作者 jtrtoo将近 9 年前

16 条评论

bostik将近 9 年前
I think couple of our engineers have said it really well, so I&#x27;m going to quote them both.<p>1. All config management systems suck in equal measure, but in different fashion. This is why you pick the tool that sucks the least <i>for your particular usecase</i>, and hope that two years down the line you made the right choice.<p>2. People who don&#x27;t know how to write proper code end up creating two kinds of things. Either they write a config management system, because they believe it doesn&#x27;t require deep diving; or they try to write a monitoring system, because they don&#x27;t understand what they are getting into. One way or the other, the hidden and emerging complexities will eat them all.<p>Config management is hard, and the more stuff you have to massage on various hosts, the harder it gets. (For the record: I&#x27;m a big fan of slim hosts and immutable infrastructure movement.)
评论 #12236388 未加载
smacktoward将近 9 年前
To the author: I know that TFA includes Ansible in its list of crazy tools, but after reading the list of complaints I think Ansible is actually more or less what you&#x27;re looking for.<p>- Ansible needs no centralized server.<p>- Ansible does everything over SSH, so you don&#x27;t need to install client software on all your machines.<p>- Ansible can be configured to fail loudly when it fails (&quot;ansible -vvvv&quot;), so if a task you specify doesn&#x27;t work it&#x27;s generally not hard to figure out why.<p>- YAML as used in Ansible isn&#x27;t really a DSL; it&#x27;s just used to produce a very human-readable text recipe for bootstrapping a system. You can complicate things beyond that if you want to, but by default you&#x27;re just specifying a list of tasks to be run on the target machine serially. You don&#x27;t have to learn a programming language like Ruby to be productive with it.<p>- Ansible has a bunch of modules to make things like creating users, setting up popular applications, etc. easy, but if you want to you can ignore all that and just specify each task in your &quot;playbook&quot; as a shell command. So if you can provision a machine by hand from the shell, all you need to do to write a functioning Ansible playbook is learn a little YAML syntax and Ansible&#x27;s &quot;shell&quot; and &quot;command&quot; modules.<p>- Vagrant supports Ansible as a provisioner, so if you want to do local testing you can pick up your Ansible playbook and feed it to Vagrant to produce a local VirtualBox VM configured to your specifications. Then once it&#x27;s working you can use the same playbook to configure your remote machine(s).<p>I resisted configuration management when the choices were Chef and Puppet for many of the same reasons articulated in the post; they were heavyweight, complicated solutions designed for large-scale use. Ansible removed all my complaints. It&#x27;s easy to pick up, requires very little software, and when making design decisions generally goes with the simplest thing that could possibly work.
评论 #12236293 未加载
评论 #12236199 未加载
评论 #12238365 未加载
Spooky23将近 9 年前
This summarizes the post:<p>&gt; Why the fuck are build&#x2F;ops folks making decisions about how the application should be deployed and configured?<p>The answer is really easy -- the build&#x2F;ops team is configuring, deploying and running the application.<p>Config tools aren&#x27;t perfect, but they are better than the old school manual configuration or letting individual developers cook up special snowflakes to do things the &quot;right&quot;. Way.<p>You should be using as close to one configuration management tool as possible, and as a developer, you should learn how that tool works.
评论 #12236028 未加载
评论 #12236163 未加载
评论 #12236093 未加载
PaulHoule将近 9 年前
The Unix equivalent of your Powershell scripts is bash scripts. You can go pretty far that way.<p>I have looked at the many configuration management tools out there and I think they do add more complexity than they remove.
评论 #12236150 未加载
评论 #12235922 未加载
评论 #12239864 未加载
评论 #12235997 未加载
ivan_ah将近 9 年前
Fabric is a good example of config management as code. While all the app-specific configs are much easier to do this way, it feels like many other tasks (install packages, create users, etc) could be &quot;outsourced&quot; to some sort of shared recipe. So I guess it depends on how &quot;custom&quot; your deploy and configs are. If you&#x27;re doing something standard, ansible&#x2F;chef could be a good fit, less so if there are many tweaks etc.<p>If anyone is interested in pursuing fabric for their config+deploy, check out these libraries of higher-level system functions: <a href="https:&#x2F;&#x2F;github.com&#x2F;sebastien&#x2F;cuisine" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sebastien&#x2F;cuisine</a> or <a href="https:&#x2F;&#x2F;github.com&#x2F;ronnix&#x2F;fabtools" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ronnix&#x2F;fabtools</a>
评论 #12236404 未加载
convolvatron将近 9 年前
it pains me to see this divide between operations and development perpetuate. the developers (whether internal or external) ship some nonsense. it needs excessive configuration. of course it needs to be keyed. it doesn&#x27;t manage its own resource usage properly. it needs to be protected from malicious agents. it has a ton of ever-shifting external dependencies.<p>so the ops (or devops) people, not being developers, and more importantly not having a mandate to spend months or years trying to address the fundamental issues try to wrap the fragile broken thing in a blanket. they deploy it, and build up an equally messy infrastructure around it.<p>this goes on to such a degree that the developer, probably suffering from his&#x2F;her own limits on time, and scope limitations, finds themselves unable to deploy or even test the system in question without becoming a full time ops person.<p>so the process gets worse, and we have &#x27;canaries&#x27;, which is basically an admission that developers cant even test simple changes to make sure they work before they are deployed.<p>ops has to deal with poorer and poorer software<p>developers have the scope of change cranked down so low that basically nothing can be done<p>we hire more and more people to try to get things to happen, and none of them can get anything done because its all so gridlocked.<p>the answer is clearly repeatably and trivially deployable builds, without any secret commands and passwords that only billy really knows. including all the configuration and state required to being up an instance of the service from both a development and operational context. this, apparently, is akin to asking for an honest politician, or a perpetual motion machine.
ajamesm将近 9 年前
I&#x27;ll definitely echo the sentiment about layers of incomprehensible crap in CM tools.<p>I wrote my first set of Ansible scripts recently, and found myself deeply pondering, &quot;who on Earth thought YAML was the best option for a Turing-complete language?&quot;<p>CM tools should be saving me time. Writing under an isomorphism from BASH to YAML does not save me time.
评论 #12236640 未加载
评论 #12237963 未加载
niftich将近 9 年前
The author&#x27;s experiences are fairly horrific, and they stem from their workplace&#x27;s misunderstanding of what config management tools are for and how to deploy them properly.<p>The key quote is this:<p>&quot;Doesn&#x27;t take a genius to see that process is broken and that there is some kind of impedance mismatch and the tools are not helping.&quot;
zeveb将近 9 年前
&gt; Umm, why can’t I just have a token in the code base I can use to query a service to give me that data?<p>Wait, is he arguing for including privileged tokens in source code‽
评论 #12236438 未加载
helloiamaperson将近 9 年前
You should take a look at <a href="https:&#x2F;&#x2F;bosh.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;bosh.io&#x2F;</a> . It does what you want wrt devs being responsible for defining how the software runs, environment reproducibility, etc. Unfortunately, the learning curve is pretty steep.
jwatte将近 9 年前
Use a script to build a container; once deployed, never touch it again. Of you need a new config, build be container, roll the old version out.
评论 #12237613 未加载
X0nic将近 9 年前
I feel this sentiment all the time from devs. &quot;Why are you making me work harder?&quot;<p>As apps get larger, we as devs have to stop and think about how things are going to run in production. We have too often made the ops team&#x27;s life worse, because we would rather just hardcode stuff.<p>Yes, these tools make it harder FOR DEVS, but now the Ops team has a hope of actually managing the platform.
评论 #12236479 未加载
contingencies将近 9 年前
Years ago I made a post analyzing the failures of this class of tool, which I entitled <i>Post-facto Configuration Tinkerers</i><p>Read: <a href="http:&#x2F;&#x2F;stani.sh&#x2F;walter&#x2F;pfcts&#x2F;" rel="nofollow">http:&#x2F;&#x2F;stani.sh&#x2F;walter&#x2F;pfcts&#x2F;</a><p>I actually built a solution: <a href="http:&#x2F;&#x2F;stani.sh&#x2F;walter&#x2F;cims&#x2F;" rel="nofollow">http:&#x2F;&#x2F;stani.sh&#x2F;walter&#x2F;cims&#x2F;</a>
dozzie将近 9 年前
The same clueless developer as seven months ago: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=10857173" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=10857173</a>
dmourati将近 9 年前
Configuration mismanagement, or why I hate puppet, ansible, salt... and chose chef?<p>Right.
rboyd将近 9 年前
This post makes me want to meet the ops team at his company and find a better programmer than the author.