Unfunded initiatives. They happen everywhere from small mom and pop shops to major multinational Fortune 20 corporations. Everywhere that *I* have ever worked, I've had them, I know. If your unfunded initiative happens to be related to "Configuration Management" within the ITIL space, you just may have found a site to bookmark. As I develop it, I'll blog here on how to accomplish this staggering task. Just because you're doing it without funding, doesn't mean that you get a pass for a half-baked solution. If you're coding it, you should be able to ensure that it's as granular as you need. If something is worth doing, it's worth doing right, right?

First, we'll talk about the process, I suppose. Like everything else, you need to answer the same basic questions...but we'll answer them in a different order.

Why?

Why are you working on this project? Are you working on it because someone said so? Or are you trying to make your environment more supportable? You're probably responsible for a good portion of that environment. Wouldn't it help you do your job, if every night, the environment collected its own configuration information and stored it in a fashion that you can reference? That's one of the most important steps to a supportable environment. You can't support it, if you don't know about it.

What?

What do you need to collect? You need to identify what information you feel will be valuable. Do you need to know if your LDAP environment permits "clear text authentication"? How about an index list of attributes? Do you need to get a list of loaded software and software versions off of your entire infrastructure? What information makes you more successful in your support of your environment? That's the information that you need to collect.

How?

How are you going to collect this information? Obviously it's not going to be GUI based collection, because that will require input from you, even if it's as simple as clicking a single button. Make it systematic. Cron that thing. When you have a crisis, and are not thinking about this collection, you're still going to get your data.

A suggestion? Perl. Perl has all the tools you need to make this occur. Choose a collection point that will minimize the impact to your environment.For instance, you can collect a lot of information out of a directory service. Whether your environment is Novell/eDirectory based, Microsoft/Active Directory based, there is a lot of configuration information in the directory. And, to make things better, you can collect the ENTIRE ENVIRONMENT from one source. Then, when you want additional information, you can sprinkle in a bit of SNMP to collect node specific information like filesystem utilization and loaded software, you can add it into your data structures, and save it for later.

When?

How often does your environment change? Do you have a small organization where you maintain the entire infrastructure, or are you part of one division of a multi-billion dollar organization? The biggest difference between THOSE two, will be the frequency of your collection. Volumes of data are unnecessary if they can't be used, but if you don't have enough information, it's an incomplete picture. Your collection schedule should ensure that you catch the VAST majority of your configuration changes within your collected attributes. Don't collect something four times a day, if it only changes annually. But, if it changes daily, don't collect it weekly. In a larger environment that I support, I plan on 2-4 collection cycles daily.

Who?

Who runs it? This has two answers. First, no interactive user. Second, depending on your environment, you're going to need to perform your collection as an authenticated user. With SNMP, this is simple, as you can use your read only SNMP community (often public), but with LDAP and other sources, you're going to need more access control. Protect the data that you collect, though. If you don't let everyone on your network read it in the environment, why would you let them read the datafile?

Give this some thought. Figure out what information you need? What platforms are you collecting from? What information do you need to know? I'll come back and post some of the criteria and strategies that I'm using.