Last modified 11 months ago Last modified on 04/12/16 18:59:05

Func: Fedora Unified Network Controller

You Want The Func

  • Have you ever tried to command or query a large number of systems with SSH? Have you wanted a better way?
  • Have you wanted a way to audit all of your remote commands on all of your systems?
  • Tired of writing shell scripts and parsing command output?
  • Are you fed up with CIM, WBEM, and complicated communication systems that prevent you from doing /real/ work?
  • Well have we got a solution for you. It's Func.

You Can Do Almost Anything With It

A lot of programs, systems, and tools need some way to communicate. Func provides a two-way authenticated system for generically doing these sort of things. You can build your own applications on top of it, and easily expand func by adding in additional modules, whether you want these to work through the func command line or by means of some other application. If you just want to use the func command line, that's great. If you want to build apps on the func tools, that's great too. If this sounds generically vague, it's only because it really is that expandable.

Examples Speak Louder Than Words

Let's use the command line to illustrate some concepts.

From a central management server, you can do:

From bash:

# func call hardware info

# func "*" call yumcmd update

# func "*" call moduleyouwrote functionname 1234 5678 firetruck acmelabs hike! 

Everything also can be scripted from Python:

import func.overlord.client as fc
client = fc.Client("*;*")

# package controls!

# service controls!

# hardware info!

# etc ... etc ..

All you have to do to is follow the simple install instructions and you're up and running.

So, if I want Words, What Is Func?

Func allows for running commands on remote systems in a secure way, like SSH, but offers several improvements.

  • Func allows you to manage an arbitrary group of machines all at once.
  • Func automatically distributes certificates to all "slave" machines. There's almost nothing to configure.
  • Func comes with a command line for sending remote commands and gathering data.
  • There are lots of modules already provided for common tasks.
  • Anyone can write their own modules using the simple Python module API.
  • Everything that can be done with the command line can be done with the Python client API. The hack potential is unlimited.
  • You'll never have to use "expect" or other ugly hacks to automate your workflow.
  • It's really simple under the covers. Func works over XMLRPC and SSL.
  • Since func uses certmaster, any program can use func certificates, latch on to them, and take advantage of secure master-to-slave communication.
  • There are no databases or crazy stuff to install and configure. Again, certificate distribution is automatic too.

What Is Supported

  • Fedora Core 6, Fedora 7, and beyond
  • EL-4, EL-5 and beyond
  • anywhere else someone would like to package it (Talk to us)

Project goals

  • Be crazy-simple to understand
  • Be crazy-simple-to-use
  • Require the bare minimum amount of maintenance and configuration
  • Kick ass.

Tell Me More

  • Get Informed and Get Going
    • Releases -- how to get Func for your favorite platform
    • Source -- get the source code and learn how to contribute
    • Install And Setup Guide -- easy steps to get Func installed and working
    • Modules -- browse the list of modules that ship with func
    • Killer Apps -- see some applications built on top of func as well as ideas for new ones
    • Who Is Func -- Find out who's working on Func
    • Communicate -- Get on the mailing list and IRC! Ask questions, share ideas, contribute patches!
    • Bugs -- How to report bugs,list of open bugs, tickets, issues, etc
  • The Future
    • Func Roadmap? -- plans for the next version of Func
    • Ideas/Planning -- learn about future ideas for Func expansion]
    • FuncWeb -- get up to speed on the Web management application we're building on top of Func


Func was originally written by (and is maintained by) MichaelDeHaan, AdrianLikins, and SethVidal. Additional contributers are listed in the AUTHORS file in git. Thanks to everyone!

Please see the Communicate page for how to get more involved with Func. Patches, ideas, feedback, and questions are always welcome! We look forward to hearing from you!