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:
# func target.example.org call hardware info # func "*.example.org" 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("*.example.org;*.example.com") # package controls! client.yumcmd.update() # service controls! client.service.start("acme-server") # hardware info! print client.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)
- 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
- In Depth
- FAQ -- Frequently Asked Questions & Troubleshooting
- Integrating with Provisioning -- an easy way to setup Func in your kickstarts (and tools like Cobbler)
- Command Line Examples -- using "func" from the command line to replace basic SSH tasks
- Python API Examples -- taking Func to the next level for even more power
- Scripting Examples -- example programs that use the Func Python API
- How to Write and Distribute New Modules -- Func is pluggable, learn how to extend it dynamically
- How the Security Model Works -- how does Func's SSL security and PKI work?
- Development Info and Guide -- learn how to contribute to Func (includes git instructions!)
- Globbing -- all about how globbing works, for specifying multiple systems for one command
- Multiplexer -- send commands to multiple servers at the same time in seperate processes
- Async -- background API calls allow for long-running opeartions without persistent network connections
- FuncTransmit -- speak with Func's overlord programmatically without using the Python API.
- FuncBindings -- libraries to speak with Func from various other languages, powered by FuncTransmit
- Delegation -- Delegate Func commands to minions beneath a chain of multiple overlords
- Minion To Minion -- How to have minions contact other minions
- Minion To Minion With Puppet Minions -- How to have minions contact other minions while using the puppet ca infrastructure
- Port Info -- what ports does the system use?
- Articles and Press -- what other people are saying
- Export Module Meta Information -- A way to make other Python Apps to render modules' methods
- Config Files - where they are and what they do
- Facts Framework - a different way to query more things on minions at once
- Groups Api - new pluggable func groups api
- Grep Modules - Query modules for a proper pattern
- Real Time Output - Watch your minions output while they do their jobs.
- Progress Report - Get progress report of your minions easily.
- The Future
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!