Dynamic Patching via State and Run-time Control
James Hartley
This project stemmed from my desire to approach Unix
administration from the standpoint of cooperating agents. I wanted to explore
how scripts could cooperate to accomplish complex tasks that systems
administrators face day to day. As the number of systems in the data center
increase, it becomes an almost impossible task to maintain systems by hand. By
designing agents that perform various tasks and by chaining these together via
plans and goals, systems can begin to learn how to maintain themselves.
I consider this experiment a first step in learning how
machines can perceive their environment, determine some identity information
about themselves, and act via the Unix API and Unix commands to perform the
complex day-to-day tasks themselves, without administration by humans.
In such as setup, humans become the orchestrators of
activity and not slaves to the servers. Humans set goals and desires and
determine plans, and the software agents attempt to execute these goals by
determining their environment and communicating with other agents required for
the process. This experiment tests the cooperation between agents to complete
the complex task of patching a system automatically once a month. The higher
level design would simply desire the goal of patching, the machines would then
figure out how to patch by combining a series of agents to do the job. In this
article, grabpatch, detach_attach_mirrors, and patchit are the agents that
patch the machine; each performs a task that could be used in different goals
to do different tasks.
Future work will concentrate on new agents and designing
the frame work to introduce goals and desires into the mix.
|