When we talk about federation in a CMDB implementation, it's because there are multiple data sources that need to be combined as a single repository (even if the data is not physically combined into one single database).
Having multiple data sources implies that they will many times refer to the same Configuration Item, raising the question of how to reconcile these records. Traditionally, CMDB products chose a primary key that is used to merge the data; however, my experience shows it's difficult to identify a single attribute that can be universally to identify a CI type. As an example, although a computer serial number might seems a good candidate, we have seen that many products don't provide such attribute, but relies on IP address as the identifier. The same argument can be used for IP address and any other attribute.
At IBM, we decided to take a different approach: instead of relying an attribute or a collection of attributes to uniquely identify a CI, we have defined many naming rules for each CI types and enforce that each data source provides the attribute of at least one rule. So if a product uses serial number to identify a CI, another uses serial number and IP address, and a third one, just IP address, this ingenious approach will be able to determine when they represent the same CI.
So the integration with IBM CCMDB is based on having products providing data according to a common data model in a process named Discovery Library Adapter.
The alternative of implementing this federation / reconciliation approach is to defer the reconciliation of the data instead of doing it before the data is imported into a CMDB. Some products define the concept of many buckets of data that are combined through a reconciliation mechanism. Although this approach simplifies the data loading process, it defers to the user the responsibility of federating and creates another hop in the data chain.
Next we'll talk about how we can use Tivoli products to assist in federating the data into a CMDB.
Friday, April 23, 2010
Federation capability on CMDB
Since the inception of a Configuration Management Database concept, there has been this notion that CMDB needs to be a federated solution. But what qualifies a federation, as the term is certainly overused and stretched in many directions.
Here is wikipedia.org definition of IT Federation:
A Federation is multiple computing and/or network providers agreeing upon standards of operation in a collective fashion. The term may be used when describing the inter-operation of two distinct, formally disconnected, telecommunications networks that may have different internal structures. The term may also be used when groups attempt to delegate collective authority of development to prevent fragmentation.
Well, it doesn't tell a lot, except it says about multiple computers working together. I see two distinct ways to achieve such interoperability:
My recommendation for a CMDB is to have a balance between data integration and real-time federation, where the key attributes of brought to a centralized database and unsupervised or volatile attributes are kept in their original data sources.
Next I will talk how reconciliation is related to federation and CMDB.
Here is wikipedia.org definition of IT Federation:
A Federation is multiple computing and/or network providers agreeing upon standards of operation in a collective fashion. The term may be used when describing the inter-operation of two distinct, formally disconnected, telecommunications networks that may have different internal structures. The term may also be used when groups attempt to delegate collective authority of development to prevent fragmentation.
Well, it doesn't tell a lot, except it says about multiple computers working together. I see two distinct ways to achieve such interoperability:
- data integration, traditionally called ETL (extract, transform and load), where data from a data source is physically moved to another data source. A data integration has the benefits of all the data will be concentrated into one single repository, which addresses an intriguing question about a CMDB: without bringing the data together, how can we build a CMDB if the data sits in an external data without any kind of Change Management process to update it?
- use tools, like IBM InfoSphere Federation Server to portrait the data as a single repository, even if it resides physically in many data sources. The main advantage of this approach is the fact that the data doesn't need to be synchronized and it's retrieved only when needed. It creates the issue of how to keep track of CMDB changes when there are many data sources, and the associated products are updating the data sources at their own will.
My recommendation for a CMDB is to have a balance between data integration and real-time federation, where the key attributes of brought to a centralized database and unsupervised or volatile attributes are kept in their original data sources.
Next I will talk how reconciliation is related to federation and CMDB.
Friday, March 19, 2010
Running KVM and VMware Server in the same machine
After enabling virtualization in the BIOS, I can't start a VMware VM anymore, as I received the following message:
Error while powering on: Failed to initialize monitor device.
To fix this problem, I had the unload the kvm modules:
sudo rmmod kvm_intel
sudo rmmod kvm
After that, I can load a VMware VM. Then, the KVM doesn't work, as you can test by running the following command:
eduardo@eduardo-laptop:~$ kvm-ok
INFO: Your CPU supports KVM extensions
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm
KVM acceleration can NOT be used
Error while powering on: Failed to initialize monitor device.
To fix this problem, I had the unload the kvm modules:
sudo rmmod kvm_intel
sudo rmmod kvm
After that, I can load a VMware VM. Then, the KVM doesn't work, as you can test by running the following command:
eduardo@eduardo-laptop:~$ kvm-ok
INFO: Your CPU supports KVM extensions
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm
KVM acceleration can NOT be used
The fix is right there: run sudo modprobe kvm, then everybody is happy!
Maybe not. After loading the kvm module, the VMware VM just dies. I guess there is no harmony between KVM and VMware. Any ideas?
Maybe not. After loading the kvm module, the VMware VM just dies. I guess there is no harmony between KVM and VMware. Any ideas?
Thursday, February 25, 2010
New version of the TDI IDML Connector
Mat Davis put a lot of work in enhancing and publishing a new version of the IDML Connector. It's available at:
http://www-01.ibm.com/software/brandcatalog/portal/opal/details?NavCode=1TW10CC16
http://www-01.ibm.com/software/brandcatalog/portal/opal/details?NavCode=1TW10CC16
Monday, February 15, 2010
Self provision of virtual machines using IBM Tivoli products (TiSAM, ITM and Omnibus)
Here is a video Eswara and I made showing self-provisioning of virtual machines using TiSAM, ITM and Omnibus.
Enjoy!
Enjoy!
Wednesday, December 9, 2009
How can we integrate with HP CMDB - part 3
Here are some code to interact with HP SM7 Web Services. It uses an AXIS library generated from the WSDL file, available at iTunes or the following link: HP SM7 Axis Library.
locator = new Packages.com.hp.schemas.SM._7.Device_ServiceLocator ();
device = locator.getDevice ();
device.setUsername ("falcon");
response = device.createDevice (request);
task.logmsg ("response: " + response + " message: " + response.getMessage());
messages = response.getMessages ();
for (message in messages) {
task.logmsg ("messages: " + message);
}
ci = new Packages.com.hp.schemas.SM._7.Common.StringType (work.getString ("NAME"));
keys = new Packages.com.hp.schemas.SM._7.DeviceKeysType ();
keys.setConfigurationItem (ci);
instance = new Packages.com.hp.schemas.SM._7.DeviceInstanceType ();
status = new Packages.com.hp.schemas.SM._7.Common.StringType ("In use");
instance.setStatus (status);
computer = new Packages.com.hp.schemas.SM._7.Common.StringType ("computer");
instance.setConfigurationItemType(computer);
application = new Packages.com.hp.schemas.SM._7.Common.StringType ("application");
instance.setAssignmentGroup (application);
messageType = new Packages.com.hp.schemas.SM._7.Common.MessageType();
messageTypes = [messageType];
type = new Packages.com.hp.schemas.SM._7.DeviceModelType (keys, instance, messageTypes, "query");
booleanf = new java.lang.Boolean (false);
booleant = new java.lang.Boolean (true);
request = new Packages.com.hp.schemas.SM._7.CreateDeviceRequest (type, booleanf, booleanf, booleant);
task.logmsg ("request: " + request);
keys = new Packages.com.hp.schemas.SM._7.DeviceKeysType ();
keys.setConfigurationItem (ci);
instance = new Packages.com.hp.schemas.SM._7.DeviceInstanceType ();
status = new Packages.com.hp.schemas.SM._7.Common.StringType ("In use");
instance.setStatus (status);
computer = new Packages.com.hp.schemas.SM._7.Common.StringType ("computer");
instance.setConfigurationItemType(computer);
application = new Packages.com.hp.schemas.SM._7.Common.StringType ("application");
instance.setAssignmentGroup (application);
messageType = new Packages.com.hp.schemas.SM._7.Common.MessageType();
messageTypes = [messageType];
type = new Packages.com.hp.schemas.SM._7.DeviceModelType (keys, instance, messageTypes, "query");
booleanf = new java.lang.Boolean (false);
booleant = new java.lang.Boolean (true);
request = new Packages.com.hp.schemas.SM._7.CreateDeviceRequest (type, booleanf, booleanf, booleant);
task.logmsg ("request: " + request);
device = locator.getDevice ();
device.setUsername ("falcon");
response = device.createDevice (request);
task.logmsg ("response: " + response + " message: " + response.getMessage());
messages = response.getMessages ();
for (message in messages) {
task.logmsg ("messages: " + message);
}
Wednesday, December 2, 2009
How can we integrate with HP CMDB? - Part 2
Nothing like having the opportunity to touch an HP Service Management 7 installation and see first hand what's possible and what's not.
The bottom line is that, like any 'modern' application, HP SM7 makes available Web Service for interacting with the module, like Change Management and Configuration Items.
So, forget what I said before, because it's possible to load data directly into HP SM7 using the Web Service interface.
I didn't find a way to reconcile the data coming from multiple data sources, but at least the parable of not being able to load data into HP SM7 is not true.
The bottom line is that, like any 'modern' application, HP SM7 makes available Web Service for interacting with the module, like Change Management and Configuration Items.
So, forget what I said before, because it's possible to load data directly into HP SM7 using the Web Service interface.
I didn't find a way to reconcile the data coming from multiple data sources, but at least the parable of not being able to load data into HP SM7 is not true.
Subscribe to:
Posts (Atom)