Winter 2011 Handout - Installing Func In the Arm Build Farm

From CDOT Wiki
Jump to: navigation, search


Status

This page status is:DONE.

Title

Installing Func In the Arm Build Farm

Participants

Timothy Furzer - Semester 6 CTYC

Introduction

Func is a multifaceted multi-module application for generating secure connections to one or more remote machines. Managing a build farm of many arm machines has the potential to utilize this software to great potential. Proper installation and configuration of this software goes hand in hand with the development and deployment of other cluster management software such as Puppet and Icinga. Func can perform functions such as executing remote shell commands, calling hardware info, querying RPM databases of one or more machines managed by the Overlord machine, and contributes to CDOTs goal of centralized management

Approach

Before actually putting Func into action on production systems within CDOT I set up a test environment using my current VMWare ESXi infrastructure at home, creating a small 3-system environment with Fedora 13 and core packages. After installing and configuring a traditional func environment, understanding its operation and components to look at when troubleshooting, I could mirror this installation in the ARM build farm and troubleshoot any issues that would arise. Func consists of two parts. Certmaster, which is the mechanism for implementing the PKI encrypted communication between master and minion. The second part of the install is the func command and API system. The install on my little test infrastructure was fairly straightforward in nature.


On all machines involved we need to install the func package, (works on FC7 and above, NOARCH). Since we know CDOT has host files established for our environment with only 3 machines we simply add the machines to the /etc/hosts file. the three machines are names, certmaster, certminion1 and certminion2 respectively.

On the typical VMware environment the minion config file (/etc/certmaster/minion.conf) looks like this

[main]
certmaster = certmaster
log_level = DEBUG
cert_dir = /etc/pki/certmaster
However; we had to make slight modifications for our deployment on ARM

[SEE PICTURE]


By default func ships with a wide variety of modules that can be utilized straight out of the box to execute commands on your system for a list of these pre-included module see https://fedorahosted.org/func/wiki/ModulesList. As well as being extended to add support for the execution of programs written in python, or bash.

Challenges

When transitioning to the ARM build environment, there were a few challenges we had to overcome.

  • Since the ARM arch is relatively new to Fedora , we need to check if it has been successfully built and if we can get it from the YUM repo, or are we going to have to build from source
  • It seems to me like ARM Fedora has some incompatibilities with hardware calls made by func, this is effecting the functionality of some of the modules used in func.
  • By default, func on ARM cannot dynamically configure the minion to use hostnames or IPs. These settings must be specified by the configuration file.

Results

In all of our tests on the ARM machines we successfully deployed func0-25 and it is a functioning state. However; func0-27 is release for the main fedora distribution. What we did for our final release is built the func0-27 package for ARM, and we will be installing it to see if some of the scripts have been update to take into account the ARM architecture. As well, we will continue to iron out any errors with modules or packages.

Here is an example of how we may use func to monitor and control the ARM machines in CDOT and the basic syntax for func commands as well as its successful output.


[EXCERPT OF COMMAND]
{'certminion': [['PID', 'TTY', 'STAT', 'TIME', 'COMMAND'],

['1', '?', 'Ss', '0:01', '/sbin/init'],

['2', '?', 'S', '0:00', '[kthreadd]'],

['3', '?', 'S', '0:00', '[migration/0]'],

['4', '?', 'S', '0:00', '[ksoftirqd/0]'],

['5', '?', 'S', '0:00', '[watchdog/0]'],

['6', '?', 'S', '0:00', '[events/0]'],

['7', '?', 'S', '0:00', '[cpuset]'],

['8', '?', 'S', '0:00', '[khelper]'],

['9', '?', 'S', '0:00', '[netns]'],

['10', '?', 'S', '0:00', '[async/mgr]'],

['11', '?', 'S', '0:00', '[pm]'],

['12', '?', 'S', '0:00', '[sync_supers]'],

['13', '?', 'S', '0:00', '[bdi-default]'],

['14', '?', 'S', '0:00', '[kintegrityd/0]'],

['15', '?', 'S', '0:00', '[kblockd/0]'],

['16', '?', 'S', '0:00', '[kacpid]'],

Links

Timothy Furzer's Blog
Func Website

Acknowledgments

Pictures / Graphics

Hostname Bind Failure(GOES WITH CHALLENGES)
Minion Config Updated for ARM(GOES WITH APPROACH SECTION)
Command Execution(GOES WITH RESULTS SECTION)