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.

Ask HN: How do you document and keep tabs on your infrastructure as a sysadmin?

156 pointsby redsecabout 7 years ago
I am wondering how do experienced sysadmin document and manage their infra.

35 comments

vinceguidryabout 7 years ago
When I was working as a sysadmin, I kept a spreadsheet. I was told later of a repository of information that supposedly was what my spreadsheet did, but it didn&#x27;t add anything new and was much harder to keep up.<p>I built it up using nmap and then shelling into each individual machine and poking around to see what it did. This was back in the days before everything became virtualized, so each machine on the network was likely physical.<p>I added information by walking the aisles and copying down the rack location of every machine into another page on the spreadsheet. I eventually hooked up a terminal to them all and matched network addresses to physical machines.<p>Only took a few weeks and when I was done, I knew things about the network that guys who worked at the business for years didn&#x27;t know.<p>There&#x27;s no substitute for the good old-fashioned way.<p>I liked that job, it was fun.
评论 #16543740 未加载
cikabout 7 years ago
We use Collins (<a href="https:&#x2F;&#x2F;tumblr.github.io&#x2F;collins&#x2F;" rel="nofollow">https:&#x2F;&#x2F;tumblr.github.io&#x2F;collins&#x2F;</a>) as a Configuration Management Database, Ansible (<a href="https:&#x2F;&#x2F;www.ansible.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.ansible.com&#x2F;</a>) for automation, Terraform (<a href="https:&#x2F;&#x2F;www.terraform.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.terraform.io&#x2F;</a>) + a bunch of homebrew for orchestration, Packet (<a href="https:&#x2F;&#x2F;www.packer.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.packer.io&#x2F;</a>) for multi-cloud (and hypervisor) image creation and maintenance, powered by Ansible. Every since thing is committed to a series of bitbucket (<a href="https:&#x2F;&#x2F;www.bitbucket.org" rel="nofollow">https:&#x2F;&#x2F;www.bitbucket.org</a>) repositories.<p>We connect Ansible and Collins through ansible-cmdb (<a href="https:&#x2F;&#x2F;github.com&#x2F;fboender&#x2F;ansible-cmdb" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;fboender&#x2F;ansible-cmdb</a>), then tie the entire thing to our ticketing systems ServiceNOW (<a href="https:&#x2F;&#x2F;www.servicenow.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.servicenow.com&#x2F;</a>) and Jira Service Desk (<a href="https:&#x2F;&#x2F;www.atlassian.com&#x2F;software&#x2F;jira&#x2F;service-desk" rel="nofollow">https:&#x2F;&#x2F;www.atlassian.com&#x2F;software&#x2F;jira&#x2F;service-desk</a>), and finally, ensure we have history tracking with Slack (<a href="https:&#x2F;&#x2F;www.slack.com" rel="nofollow">https:&#x2F;&#x2F;www.slack.com</a>).<p>As a given, we yank test the entire world. If it doesn&#x27;t pass a yank, it straight up doesn&#x27;t exist.<p>Whether it&#x27;s bare-metal, virtualized, para-virtualized, dockerized, mixed-mode, or cloud - we 100% do this all the time. There is not a single change across any environment, that isn&#x27;t fully tracked, fully reproducible, fully auditable, and fully automated.
评论 #16537133 未加载
majewskyabout 7 years ago
- keep inventory in a DCIM (we use Netbox)<p>- configure <i>everything</i> as code (we use Ansible for the infrastructure up to OS level, Kubernetes w&#x2F; Helm for applications), have it read the values from the DCIM so that the DCIM remains the single source of truth (we need to still get better on this part....)<p>Links: <a href="https:&#x2F;&#x2F;github.com&#x2F;digitalocean&#x2F;netbox" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;digitalocean&#x2F;netbox</a> <a href="https:&#x2F;&#x2F;www.ansible.com" rel="nofollow">https:&#x2F;&#x2F;www.ansible.com</a> <a href="https:&#x2F;&#x2F;www.kubernetes.io" rel="nofollow">https:&#x2F;&#x2F;www.kubernetes.io</a><p>That&#x27;s at work. At home, I do much of the same, except that maintaining a DCIM is excessive for 2 VPS and a home network of 3 boxes.
评论 #16536707 未加载
zieabout 7 years ago
I&#x27;m going to mostly disagree with everyone here, much to my karma&#x27;s detriment ;P<p>I agree the end-goal should be infrastructure as code, and everyone here has covered those tools well. You also want monitoring across your infrastructure. Prometheus is the new poster-boy here, but the Nagios family, and many other decent OSS solutions exist as well.<p>But you still need documentation. Your documentation should exist wherever you spend most of your time. Some examples:<p>* If you spend most of your time on a Windows Desktop, doing windows admin type things, then OneNote or some other GUI note-taking&#x2F;document program makes sense.<p>* If you spend most of your time in Unix land(linux, BSD, etc) then plain text files on some shared disk somewhere for everyone to get to, makes WAY more sense. Bonus if you put these files in a VCS, and treat it like code, and super bonus if your documentation is just a part of your Infra as code repositories.<p>* If you spend your time in a web browser, then use a Wiki, like MediaWiki, wikiwiki, etc.<p>In other words, put your documentation tools right alongside your normal workflow, so you have a decent chance of actually using it, keeping it up to date, and having others on your team(s) also use it.<p>We put our docs in the repo&#x27;s right alongside the code that manages the infrastructure.. in plain text. It&#x27;s versioned. We don&#x27;t publish it anywhere, it&#x27;s just in the repo, but then we spend most of our time in editors messing in that repo.
评论 #16537436 未加载
评论 #16541600 未加载
antoncohenabout 7 years ago
It might be helpful if described your infrastructure. There is a pretty big difference between managing physical Windows servers in a data center and managing Linux servers all in AWS.<p>If you are all or mostly cloud, Terraform + config management with a CI pipeline takes care of a lot. Then a wiki that covers &quot;Getting Started&quot; and a few how-to articles.<p>For physical infra you need the setup for DHCP, updating DNS based on DHCP, PXE boot imaging, IPMI access and configuration, switch and router configuration, what servers are connected to which switch ports, PDU management and monitoring, and on and on and on.<p>You end up with something like NetBox (<a href="https:&#x2F;&#x2F;github.com&#x2F;digitalocean&#x2F;netbox" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;digitalocean&#x2F;netbox</a>) or Collins (<a href="https:&#x2F;&#x2F;tumblr.github.io&#x2F;collins&#x2F;" rel="nofollow">https:&#x2F;&#x2F;tumblr.github.io&#x2F;collins&#x2F;</a>), plus a bunch of other stuff gluing things together.
评论 #16536908 未加载
beh9540about 7 years ago
I think it depends a lot on the size of your infrastructure. I&#x27;ve used excel docs on a shared drive pretty successfully where there&#x27;s not much to keep up on and changes are few.<p>In larger infrastructure setups (small service provider) we used a combination of netboot, SNMP for monitoring with Observium and Nagios for alerting. We were also a big VMware environment, so naturally we had a lot of inventory tracking available through vCenter as well. I found a lot of opposition to Configuration Management, given the lack of comfort with programming of some sysadmins (Windows admins), so that&#x27;s something to keep in mind as well. I think mixed environments also can be challenging w&#x2F;infrastructure as code, but I&#x27;d be interested to see how others get through that.
seorphatesabout 7 years ago
The past decade has been interesting and I&#x27;m still processing it.<p>My current thoughts are that an appropriate approach is for your systems to document themselves via the applications that they run - inside out.<p>Though I must abide I cannot fully subscribe to &quot;infrastructure as code&quot; anymore. It has proven just another shift, primarily in toolsets and who (or what) gets say and sway over the capacity, capabilities and efficiencies of the thing you actually care about - the app stack and all of its assembled functionality.<p>In other words most approaches are still &quot;outside in&quot; - one defines &#x27;x&#x27; for deploy fitments and that typically over and over and over again and, typically, with a rigidity that can too easily override and overrule effectively caging your application in scale and scope. With my current tact I am trying to provide for &#x27;y&#x27; to &quot;self identify&quot; (via some&#x2F;any form of config mgmt) where from here you can begin to effectively &quot;deploy to any&quot; by hooking the &quot;application config as code&quot; that, in turn, defines its infrastructure and deploys &quot;outward&quot;. The &quot;infrastructure as code&quot; then becomes the servant with its objects and platform definitions etc. and the &quot;appconfig as code&quot; becomes the master where the latter defines its own scope and scale.<p>Infrastructures have a funny way of mutating into inefficient &quot;definitions&quot; of something that once made sense, on the first day, and forevermore complicating progress with capacity, rules and opinions.<p>But, generically, snmp is still pretty cool for telling me what I need to know. Strapped that into any end engine and, boom, ask any question, request any inventory.<p>So.. I track apps, not systems. Systems are expendable, applications are not.
brudgersabout 7 years ago
I don&#x27;t do devOps but if I did...<p><a href="http:&#x2F;&#x2F;howardism.org&#x2F;Technical&#x2F;Emacs&#x2F;literate-devops.html" rel="nofollow">http:&#x2F;&#x2F;howardism.org&#x2F;Technical&#x2F;Emacs&#x2F;literate-devops.html</a><p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dljNabciEGg" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dljNabciEGg</a>
itomatoabout 7 years ago
There are several classes of &quot;infrastructure&quot; as a sysadmin; legacy, new and critical.<p>Legacy stuff is done the old fashioned way - portscans and nmap. If it has an open port, it&#x27;s presumed to be intentional. If not, it&#x27;s a target. I&#x27;ve seen some success using tools like Pysa to &quot;blueprint&quot; existing systems into Puppet code. Tools like SystemImager help here, too - enabling P2V and the creation of &quot;file-based images&quot; compatible with version control and able to PXE boot new clones.<p>New stuff is from-scratch IaC all the way to the metal. Ansible and git submodules help me build &quot;sandwiches&quot;.<p>Critical stuff blurs the lines. The machines, IP addresses, ports and living connectivity can be documented, and &quot;captured&quot; to a limited extent with the manual mapping and Rsync stuff in the Legacy category. Some of this critical stuff is also &quot;new&quot;, and is deployed in that fashion.<p>What about switchgear and Cisco configs? License strings, key management, site-specific patching - all can complicate things.<p>More important than any of these is the ability for you and those around you to see and manage the systems as they are launched and terminated.<p>In the old days, I used to use a shell script on a newly-provisioned host to dump all its&#x27; details - dmidecode, environment stuff and so on. Those details were pushed back to a common source and were a real benefit in the days before <i>real</i> config management came on the scene. CFEngine was way too complicated and nebulous at the time.
falcolasabout 7 years ago
For me&#x2F;us, it&#x27;s a combination of infrastructure-as-code and metrics reporting&#x2F;logs. Most of our boxes are swapped out on a weekly or more frequent basis, so the only accurate picture of what&#x27;s running right this moment is the graphs built by the metrics collection tools. The only accurate picture of what&#x27;s running on those boxes is the code which built the infrastructure.<p>There are a couple of exceptions, but those are actively being brought under the above model (mostly because they are effectively invisible, and the existing documentation for them is... incomplete).<p>Any documentation outside of that is stale in a few hours, and obsolete in a week.
jcadamabout 7 years ago
Back when I was put in charge of IT Lifecycle management for my Army unit (not by choice - &quot;Hey, you&#x27;ve got a CS degree, so anything tech related goes to you&quot;), I kept it all in an Access Database, and ran off a report occasionally to update my smartbook (3-ring binder full of stuff that my boss would frequently ask about during meetings). Granted this was back in the early 00&#x27;s.
owaisloneabout 7 years ago
Terraform + Datadog + Cloudwatch<p><a href="http:&#x2F;&#x2F;terraform.io&#x2F;" rel="nofollow">http:&#x2F;&#x2F;terraform.io&#x2F;</a> <a href="http:&#x2F;&#x2F;datadoghq.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;datadoghq.com&#x2F;</a> <a href="https:&#x2F;&#x2F;aws.amazon.com&#x2F;cloudwatch&#x2F;" rel="nofollow">https:&#x2F;&#x2F;aws.amazon.com&#x2F;cloudwatch&#x2F;</a>
atsaloliabout 7 years ago
As a professional sysadmin, my go to reference on this is &quot;Documentation Writing for System Administrators&quot;, from the Short Topics in System Administration series.<p><a href="https:&#x2F;&#x2F;www.usenix.org&#x2F;short-topics&#x2F;documentation-writing-system-administrators" rel="nofollow">https:&#x2F;&#x2F;www.usenix.org&#x2F;short-topics&#x2F;documentation-writing-sy...</a><p>Also, this talk was very good:<p><a href="https:&#x2F;&#x2F;www.usenix.org&#x2F;legacy&#x2F;event&#x2F;lisa08&#x2F;tech&#x2F;gelb_talk.pdf" rel="nofollow">https:&#x2F;&#x2F;www.usenix.org&#x2F;legacy&#x2F;event&#x2F;lisa08&#x2F;tech&#x2F;gelb_talk.pd...</a>
评论 #16540782 未加载
allsunnyabout 7 years ago
I&#x27;ve used <a href="https:&#x2F;&#x2F;www.racktables.org" rel="nofollow">https:&#x2F;&#x2F;www.racktables.org</a> with pretty good luck. It&#x27;s PHP, which wouldn&#x27;t be my first choice, but I&#x27;ve largely been able to make it do what I want.<p>If you want something more clever; say keeping track of asset values etc, you&#x27;ll want a CMDB. Google around and you should find something that fits your needs. We used SeviceNow in a previous life.
paydroabout 7 years ago
We put everything in code. We have several layers, but they if you&#x27;re new you can start with the lowest level and make your way up to find out how things are provisioned and configured.<p>We&#x27;re on AWS so we use cloudformation for provisioning and saltstack (<a href="https:&#x2F;&#x2F;saltstack.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;saltstack.com&#x2F;</a>) for configuration management. Cloudformation templates are written using stacker (<a href="http:&#x2F;&#x2F;stacker.readthedocs.io&#x2F;en&#x2F;stable&#x2F;" rel="nofollow">http:&#x2F;&#x2F;stacker.readthedocs.io&#x2F;en&#x2F;stable&#x2F;</a>). All AWS resources are built by running &quot;stacker build&quot; so nothing is done by hand. We have legacy resources that we&#x27;re slowly moving over to Cloudformation, but more than 90% of our infrastructure is in code.<p>On top of cloudformation and salt we built jenkins (CI and docker image creations), spinnaker (deployment pipeline), and kubernetes (deployment target). The jenkins and spinnaker pipelines are also codified in their own respective git repos.<p>All the repos here have sphinx setup for documentation purposes and the repos tend to crosslink for references.
rbjorklinabout 7 years ago
I’ve found Zabbix works decently well and also covers monitoring. Zabbix Maps can be nice to visualize the infrastructure: <a href="https:&#x2F;&#x2F;www.zabbix.com&#x2F;documentation&#x2F;3.4&#x2F;manual&#x2F;config&#x2F;visualisation&#x2F;maps&#x2F;map" rel="nofollow">https:&#x2F;&#x2F;www.zabbix.com&#x2F;documentation&#x2F;3.4&#x2F;manual&#x2F;config&#x2F;visua...</a>
bradknowlesabout 7 years ago
So, one problem I’ve seen with most infrastructure as code solutions and CMDBs is that they do a good job at the tactical level (more or less), and help you answer “how”, “where”, “what”, and maybe “when” questions (depending on how well they support orchestration), they typically do a bad job at the higher level strategic “why” questions.<p>So, why do you structure your lambda jobs accessing CloudWatch Logs that way as opposed to the other way? If you didn’t know that one way works and the other doesn’t, you wouldn’t be able to understand that question. And that might have domino effects on other parts of your system.<p>I haven’t found a good solution to documenting the high level strategic “why” questions, other than to just write down the questions and the answer, with reasoning, in some form of associated documentation — maybe in a wiki or something. But, of course, the underlying issues may change in the near future and invalidate the reasons for your decision. And the high level documentation doesn’t have any way to be compiled directly into the lower level implementation, so of course there is always the risk of drift.<p>I’m still looking for good solutions in this space.
tyingqabout 7 years ago
Vmware&#x27;s tagging support is a lighter, more realistic option vs a &quot;CMDB&quot;.<p>Come up with a key&#x2F;value strategy that covers your need to track things like app name, app category, environment (test, dev, load testing, prod, prod&#x2F;dmz, etc), and it becomes actually usable and up to date versus an always out-of-date CMDB. And it&#x27;s compatible with cloud resource tagging.<p>Sometimes, less is more.
rootsudoabout 7 years ago
I use One Note.<p>But I also use the o365 Suite.<p>Mediawiki is also good, but can be a bore to run another service for that.<p>But in the end a textfile via notepad&#x2F;nano is all you need, really.
评论 #16541614 未加载
outworlderabout 7 years ago
Spinning up new infra: Jenkins crafts Terraform tfvars based on user input, runs plan, asks for confirmation, applies. Terraform state and vars saved to S3. Chef and Ansible for provisioning.<p>&quot;Documentation&quot;, in terms of where stuff is deployed and what is deployed is not really necessary. We save this data to a DynamoDB table, query-able by AWS Lambda functions, so other automation can pick it up and devops can query data.<p>Documentation on how things work comes from dev teams, on how things are deployed indeed comes from us, just simple wiki pages.<p>Services running in Kubernetes, K8s worker instances in auto-scaling groups. If one node dies it is killed and brought up, K8s will reschedule the pods. Same for the pods themselves.<p>Monitoring through Nagios(getting phased out finally), NewRelic and Prometheus. Basic ELK stack for centralized logs.<p>Thinking about rolling out Vault for credential management. Chatops on the pipeline (getting pieces in place first, like the db mentioned earlier)<p>I&#x27;m trying to get the company on board on immutable infrastructure, but it is proving difficult.
FatalBaboonabout 7 years ago
Like many here, I keep it described in ansible and documentation inside a git repository.<p>But I feel like it&#x27;s lacking. After a while you have so many ansible playbooks and roles that they cannot give you a birds-eye view anymore.<p>I think I would MUCH prefer to have some sort of HTML representation, where adding an instance&#x2F;service starts by adding to that representation, and you could click on every link or node to show its golden image setup, ansible configuration, etc.<p>THAT, I could show to a newcomer and he&#x27;d get it.
评论 #16538220 未加载
评论 #16537992 未加载
richardknopabout 7 years ago
By having your infrastructure defined in version control using some sort of domain specific language. For example, by using Terraform and only ever making changes to your infrastructure via Terraform (manual adding&#x2F;editing of stuff in AWS&#x2F;GCP console should be disabled so people can&#x27;t do that). Then all changes to the infrastructure are clearly documented in version control with pull requests.
tmikaeldabout 7 years ago
I use:<p>- <a href="https:&#x2F;&#x2F;www.bookstackapp.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.bookstackapp.com&#x2F;</a> for portable (Markdown), searchable (SQL), manageable (Users) documentation.<p>- Ansible for automation and deployment.<p>- Prometheus for monitoring all the Proxmox nodes and containers.
tyingqabout 7 years ago
Aligning a VMWARE tagging strategy with a cloud tagging strategy is one of my current goals. Things like a full blown CMDB seem to always end in pain, lag, and orphaned records. I&#x27;m happy enough with something basic that spans on-prem + cloud.
tootieabout 7 years ago
Can I piggyback and ask how people keep track of deployed software? Like if I have 50 products deployed some of which haven&#x27;t been touched in 10 years and I want to be able to ramp up a developer to fix a bug on any of them?
评论 #16536535 未加载
evangineerabout 7 years ago
GLPI with FusionInventory for IT Asset Management and Knowledge Base.<p>GitLab for repositories, adhoc documentation via gists and CI&#x2F;CD.<p>Nagios for monitoring.<p>Open to trying other things out if they make sense.
peterwwillisabout 7 years ago
Asset management systems and network inventory databases.
skyisblueabout 7 years ago
Those using AWS ALB, how do you monitor your traffic in realtime? I want to aggregate host names, ip addresses, user agents in realtime.
thrownaway954about 7 years ago
Lansweeper (<a href="https:&#x2F;&#x2F;www.lansweeper.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.lansweeper.com&#x2F;</a>)
cat199about 7 years ago
anyone have any pointers for simple an API driven managment of DNS&#x2F;DHCP?<p>(like, I don&#x27;t want to have to configure 1000 moving parts)<p>typically this seems to fall into the &#x27;roll your own&#x27; or &#x27;giant lumbering enterprise behemoth&#x27; category that does 10 other things. I&#x27;m looking for the sweet spot.
评论 #16537384 未加载
评论 #16543312 未加载
评论 #16542324 未加载
评论 #16539313 未加载
HeadlessChildabout 7 years ago
A configuration manager, Ansible for example. You basically describe your infrastructure with it.
nunezabout 7 years ago
I deploy it with code. For hardware stuff, a CMDB, also maintained with code
dxhdrabout 7 years ago
I&#x27;m curious how ChatOps practitioners handle this.
hypnagogicjerkabout 7 years ago
What about securely storing credentials and passwords?
AdamGibbinsabout 7 years ago
I&#x27;m not sure I understand your question fully? You write documentation, like you do anything. And configure everything with code, so you can go read it (Terraform, Chef&#x2F;Puppet&#x2F;Ansible, etc).
评论 #16536287 未加载