Home

Welcome to Bob Aiello's CM Best Practices Website!

PDF Print E-mail

Please register for our newsletter and event announcements!

Hi, this is the website to support my book on Configuration Management Best Practices. We also provide consulting services to help you implement all of the CM Best Practices described in our book. CM Best Practices Book

Writing any technology book is very challenging because the landscape changes even before the book is off the printer. This website will help elaborate on the key concepts in the book. I hope to hear from you soon!

You can also contact me directly to discuss how our consulting services can help you implement Configuration Management Best Practices or if you would like to join our network of tools and process agnostic CM gurus.

Writing for me is a team sport, so please link with me on linkedin and do drop me a line (again my email address is posted on linkedin) to let me know what you liked most about my book and where I can improve to help you successfully implement Configuration Management Best Practices!

I am glad to make arrangements to give you a signed copy from my own supply at a cost of $30 a book plus postage. I am also available for training and consulting services (more on that soon).

Please register for updates and access to future content.

Bob Aiello
http://www.linkedin.com/in/BobAiello

Title: Configuration Management Best Practices: Practical Methods that Work in the Real World
Publisher: Addison-Wesley Professional
Print ISBN-10: 0-321-68586-5
Print ISBN-13: 978-0-321-68586-5

Available now in print and ebook on InformIT:
http://www.informit.com/store/product.aspx?isbn=0321685865"

Shipping now from Amazon!
http://amzn.com/0321685865

As always, writing for me is a team sport so I am looking forward to your feedback. Please link with me onhttps://www.linkedin.com/in/BobAiello

CM Best Practices on Twitter
Our twitter accounts are https://www.twitter.com/cmbestpractices

My personal twitter https://www.twitter.com/bobaiello

Originally available in pre-published form on Safari Rough Cuts http://www.informit.com/store/product.aspx?isbn=9780321699992

 

 

 

Ben Weatherall

PDF Print E-mail
Written by Bob Aiello   
Monday, 09 April 2012 19:40

Ben Weatherall

Ben Weatherall

Recently we learned that CM expert and dear friend, Ben Weatherall had passed away. Professionally, Ben Weatherall was a leader in the CM community sharing his best practices from Fort Worth, Texas where he practiced Practical CM on a daily basis supporting a modified Agile-SCRUM development methodology. He used a combination of AccuRev, CVS, Bugzilla and AnthillPro (as well as custom tools). He was a member of IEEE, ASEE (Association of Software Engineering Excellence – The SEI’s Dallas based SPIN Affiliate), FWLUG (Fort Worth Linux Uscers Group), NTLUG (North Texas Linux Users Group) and PLUG (Phoenix Linux Users Group).
More importantly, Ben was a man of deep faith and our discussions over the last six months often focused on his acknowledgement that G-d might very well be calling him back home sooner than expected. We will all miss Ben a great deal. In my view, Ben's passing is an indication that G-d needed a good software engineer to manage His build and release process.
Ben's contributions to the CM Community will be shared for many years to come.

Do you have a story about Ben Weatherall? Please drop me a line as we prepare a few fitting articles in memory of our dear friend and colleague.
Last Updated on Monday, 09 April 2012 20:29
 

Using Git to Get Code

Using Git to retrieve a current baseline of the code

Aside from it's popularity as an open source version control system (VCS), Git is also really useful as a way to get current baselines of software. Let's work through a typical example of how this works.

In this example, the systems admin clones a git repository from the awesome GitHub repository which hosts many excellent open source projects. I recently created a GitHub project for CM Best Practices and will be using it to promote tools and procedures for Configuration Audits. But for now, we will use Github to pull down a copy of libpcap, which is used by many projects for low level network monitoring. Next we will configure, build and then install libpcap. This is a common task for a systems administrator.

GNU Make for Building and Installing Linux Packages

I am sometimes surprised to hear that some build engineers are only familiar with Ant and Maven and somehow managed never learned how to use the Make. If you are a build engineer then you really should be familiar with Ant, Maven, Make and also MS Build for Microsoft Windows applications. There are others, but these are the most build tools that you will come across.

1. The first step is to clone the repository, pulling a local copy to your workspace.

[testuser@ip-123-123-123-123 gitwork]$ git clone git://github.com/mcr/libpcap.git
Initialized empty Git repository in /home/testuser/gitwork/libpcap/.git/
remote: Counting objects: 9383, done.
remote: Compressing objects: 100% (2336/2336), done.
remote: Total 9383 (delta 6951), reused 9364 (delta 6933)
Receiving objects: 100% (9383/9383), 2.63 MiB | 1711 KiB/s, done.
Resolving deltas: 100% (6951/6951), done.

2. Next take a look at the files that you have downloaded and most importantly take note of the configure script.
(I will be writing an article in the future on Autoconf and other configure utilities.) The configure script sets the default values necessary in order to build the application. There are also some cool option such as setting the prefix that I will show briefly later in this article. But usually, I just take the defaults and run the configure script as shown in step 3. (Note also that I abbreviated some of the output as indicated below.)


[testuser@ip-123-123-123-123 gitwork]$ ls -lt
total 12
drwxr-xr-x 14 testuser testuser 12288 Apr  8 19:40 libpcap
[testuser@ip-123-123-123-123 gitwork]$ cd libpcap
[testuser@ip-123-123-123-123 libpcap]$ ls -lt
total 2252
-rw-rw-r-- 1 testuser testuser  26446 Apr  8 19:40 CHANGES
-rw-rw-r-- 1 testuser testuser   9541 Apr  8 19:40 CREDITS
drwxrwxr-x 2 testuser testuser   4096 Apr  8 19:40 ChmodBPF
-rw-rw-r-- 1 testuser testuser  17769 Apr  8 19:40 INSTALL.txt
-rw-rw-r-- 1 testuser testuser    873 Apr  8 19:40 LICENSE
-rw-rw-r-- 1 testuser testuser  23318 Apr  8 19:40 Makefile.in
-rw-rw-r-- 1 testuser testuser   4191 Apr  8 19:40 README
-rw-rw-r-- 1 testuser testuser   2214 Apr  8 19:40 README.Win32
-rw-rw-r-- 1 testuser testuser   2810 Apr  8 19:40 README.aix
-rw-rw-r-- 1 testuser testuser   4960 Apr  8 19:40 README.dag
-rw-rw-r-- 1 testuser testuser   8264 Apr  8 19:40 README.hpux
-rw-rw-r-- 1 testuser testuser   5000 Apr  8 19:40 README.linux
-rw-rw-r-- 1 testuser testuser   3521 Apr  8 19:40 README.macosx
-rw-rw-r-- 1 testuser testuser   2045 Apr  8 19:40 README.septel
-rw-rw-r-- 1 testuser testuser   2465 Apr  8 19:40 README.sita
-rw-rw-r-- 1 testuser testuser   1687 Apr  8 19:40 README.tru64
drwxrwxr-x 2 testuser testuser   4096 Apr  8 19:40 SUNOS4
-rw-rw-r-- 1 testuser testuser   1555 Apr  8 19:40 TODO
-rw-rw-r-- 1 testuser testuser     14 Apr  8 19:40 VERSION
drwxrwxr-x 5 testuser testuser   4096 Apr  8 19:40 Win32
-rw-rw-r-- 1 testuser testuser  30161 Apr  8 19:40 aclocal.m4

** OUTPUT ABBREVIATED *****

3. Run the configure script before you try to build the application

[testuser@ip-123-123-123-123 libpcap]$ ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed

** OUTPUT ABBREVIATED *****

4. Next we will build (compile and link) the application using the make command

[testuser@ip-123-123-123-123 libpcap]$ make
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-linux.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-usb-linux.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./fad-getad.c
if grep GIT ./VERSION >/dev/null; then \
read ver <./VERSION; \
echo $ver | tr -d '\012'; \
date +_%Y_%m_%d; \
else \
cat ./VERSION; \
fi | sed -e 's/.*/static const char pcap_version_string[] = "libpcap version &";/' > version.h
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./inet.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./gencode.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./optimize.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./nametoaddr.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./etherent.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./savefile.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./sf-pcap.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./sf-pcap-ng.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-common.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./bpf_image.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./bpf_dump.c
./runlex.sh flex -Ppcap_ -oscanner.c scanner.l
bison -y -p pcap_ -d grammar.y
mv y.tab.c grammar.c
mv y.tab.h tokdefs.h
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c scanner.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -Dyylval=pcap_lval -c

grammar.c
rm -f bpf_filter.c
ln -s ./bpf/net/bpf_filter.c bpf_filter.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c bpf_filter.c

*** OUTPUT ABBREVIATED *******

5. Next you will su to root (or use sudo) and then issue the  make install command to copy the build to the runtime location (e.g. /usr/local/lib)

make install

6. You may want to examine the options available in the configure script. For example, you can set default locations for installation using the --prefix option

[testuser@ip-123-123-123-123 libpcap]$ ./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

*** OUTPUT ABBREVIATED ******

7. Even though you downloaded this code to simply compile and install, you may want to make some customizations and then tagging and branching can help you keep track of your work.

Let's first see what tags we inherited when we cloned the repository

[testuser@ip-123-123-123-123 libpcap]$ git tag
lbl_0_4
libpcap_0_5rel1
libpcap_0_5rel2
libpcap_0_6rel1
libpcap_0_6rel2
libpcap_0_7rel1
libpcap_0_7rel2
libpcap_0_8_bp
libpcap_0_8rel1
libpcap_0_8rel2
libpcap_0_8rel3
libpcap_0_9rel1
libpcap_0_9rel2
libpcap_0_9rel3
libpcap_0_9rel4
libpcap_0_9rel5
libpcap_0_9rel6
libpcap_0_9rel7
libpcap_0_9rel8
libpcap_1_0rel0
libpcap_1_1rel0

Next we will add our own tag for tragging purposes (which will only exist in out local copy)

[testuser@ip-123-123-123-123 libpcap]$ git tag -a v1.0 -m'CMBP Version 1.0'

Conclusion

Version Control Systems are a must-have for controlling changes to source code during the software and systems development effort. In this article we looked at how a systems administrator might use Git to obtain a copy of libpcap and also control local baselines to track any required changes. In future articles, we will cover more details on how to manage branches and baselines using Git. Please drop me a line and let me know what features and challenges you would like us to cover in upcoming issues of the CM Best Practices Newsletter!

Bob Aiello
This e-mail address is being protected from spambots. You need JavaScript enabled to view it

Last Updated on Sunday, 15 April 2012 00:08
 

CMPB Live Virtual Training

PDF Print E-mail
Written by Bob Aiello   
Monday, 09 April 2012 18:48

Based upon industry standards and frameworks this course introduces the technology professional to all of the principles, concepts and hands-on best practices necessary to establish comprehensive configuration and release management functions. Discussing both CM as it is practiced in product companies and IT organizations; Bob Aiello and Leslie Sachs provide expert guidance on establishing configuration management best practices.

Join us for a 2-day Configuration Management Best Practices live virtual training 1pm to 4pm ET - April 17th & 18th
Instructor: Bob Aiello

· Implement effective source code management practices including multiple variants

· Automate application build, package and deployment

· Establish effective IT controls that can support IT governance and compliance

· Utilize industry standards (e.g. IEEE, ISO, EIA) and frameworks (e.g. Cobit, ITIL) to establish best practices

· Create a configuration management function that continuously grows and improves

Registration Link

Daily Schedule
Day 1: 1:00pm-4:00pm ET/10:00am-1:00pm PT
Day 2: 1:00pm-4:00pm ET/10:00am-1:00pm PT

Configuration Management Concepts
Configuration identification
Status accounting
Change control
Configuration auditing (physical and functional)

Source Code Management
Baselines
Sandboxes and workspaces
Variant management
Handling bugfixes
Streams
Merging
Changesets

Build Engineering
Versions IDs and branding executables
Automating the build
Build tools to choose from including Ant, Maven, Make and MS Build
Role of the build engineer
Continuous integration

Environment Configuration
Supporting code promotion
Implementing tokens
Practical use of CMDBs
Managing environments

Change Control
Types of change control
Rightsizing the change control process
The 29 minute change control meeting
Driving the process through change control

Release Management
Packaging the release
Ergonomics of release management
RM as coordination
Driving the RM process

Deployment
Staging the release
Deployment frameworks
Traceability

Architecting Your Application for CM
CM-driven development
How CM facilitates good development
Build engineering as a service

Hardware CM
Managing hardware configuration items
Hybrid hardware/software CM

Process Engineering (Rightsizing)
Agile/waterfall
Hybrid approaches
Agile process maturity

Establishing IT Governance
Establishing IT governance
Transparency
Improving the process

What You Need to Know About Compliance
Common compliance requirements
Establishing IT controls

Standards and Frameworks
What you need to know about standards and frameworks

CM Assessments
Evaluating the existing CM practices
Documenting “as-is” and “to-be”
Writing your CM best practices implementation plan

Virtual Package Includes:

· Easy course access: You attend training right from your computer, and communication is handled by a phone conference bridge utilizing Cisco’s WebEx technology. That means you can access your training course quickly and easily and participate freely.

· Live, expert instruction: See and hear your instructor presenting the course materials and answering your questions in real-time.

· Valuable course materials: Our live-virtual training uses the same valuable course materials as our classroom training. Students will have direct access to the course materials.

· Hands-on exercises: An essential component to any learning experience is applying what you have learned. Using the latest technology, your instructor can provide students with hands-on exercises, group activities, and breakout sessions.

· Real-time communication: Communicate real-time directly with the instructor. Ask questions, provide comments, and participate in the class discussions.

· Peer interaction: Networking with peers has always been a valuable part of any classroom training. Live-virtual training gives you the opportunity to interact with and learn from the other attendees during breakout sessions, course lecture, and Q&A.

· Convenient schedule: Course instruction is divided into modules no longer than three hours per day. This schedule makes it easy for you to get the training you need without taking days out of the office and setting aside projects.

· Small class size: Live-virtual courses are limited to the same small class sizes as our instructor-led training. This provides you with the opportunity for personal interaction with the instructor.

Last Updated on Monday, 09 April 2012 20:44
 

Agile Process Maturity

PDF Print E-mail

Agile process maturity can be understood in many different ways. The most obvious measure of agile process maturity could be in terms of the degree to which the practices adhere to the Agile Manifesto and the Agile Principles[1]. In some ways this could be understood almost in terms of a "purity" measure. In order for this measure to be valid we need to operationalize these principles. So how Agile are you?

Customer Focus

Do you make satisfying the customer through early and continuous delivery of valuable software your highest priority? Does your Agile ALM process harness change for the customer's competitive advantage and welcome changing requirements, even late in development? Your delivery cycle should favor shorter iterations, with delivering working software frequently, from a couple of weeks to a couple of months. Developers and business people should be working together daily throughout the project. Projects are built around motivated individuals and they are provided the environment and support they need and trusted to get the job done. Information is best conveyed face-to-face and working software is the primary measure of progress.

{quote}The Agile ALM should help all of the stakeholders to maintain a constant pace indefinitely in what is known as sustainable development.{/quote} There is also continuous attention to technical excellence and good design, including a focus on simplicity - the art of maximizing the amount of work not done. Self-organizing teams produce the best architectures, requirements, and designs. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. These principles have formed the basis of Agile development for many years now. In order to understand them, you need to consider how to operationalize and implement these principles in practice. Then we will see how they fit into and, of course, facilitate the Agile ALM.

Applying the Principles

Implementing the Agile ALM requires that you understand the Agile values and principles and, more importantly, understand how to utilize them in practical terms. Technology projects require a deep understanding of exactly what the system should do and also how it should work. These are important details that are typically expressed in terms of requirements. There are many different types of requirements from system level response time to functional usage including navigation. Many professionals use Epics[2] and Stories[3] to describe requirements in high-level terms. Writing and maintaining requirements document is often less than fruitful with most requirements document out of date even before they have been approved by the user. Agile takes a pragmatic approach to requirements management that focuses on working software instead of writing requirements documents that are often of limited value.

One very effective way to manage requirements is to supplement them with well written test cases and test scripts. Test cases often contain exactly the same information that you might expect in a requirements document.

Recognition by the Agile Community

Another indication of agile process maturity would be acceptance by the agile community and that can be quite a challenge to achieve.

I will be writing more about Agile process maturity in the near future, but I would like to get your input too. How would you define and measure Agile process maturity?

 



[1] http://agilemanifesto.org/principles.html

 

 
«StartPrev12NextEnd»

Page 1 of 2
Copyright © 2012 CM Best Practices. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.
 

Product News

Polls

what information are you seeking?