SlideShare a Scribd company logo
FUNC
Fedora Unified Network Controller

                           Luca Foppiano
               <lfoppiano@byte-code.com>
Summary
           The big picture
              Solutions
              Features
          What about future?
           Related projects
The big picture
   “turn off all testing virtual machines”
   “restart all crashed web services”
   “update all machines with operation suffix in the name (eg. 
   web*.example.*, customer*, etc)”
Solutions?
   Manual solution
   SSH or Telnet (as your risk)
   Func (https://fedorahosted.org/func)
Manual  solution

                   Obsolete
                   Expensive
                   Impossible on world 
                   distributed network
                   High risk
                   Need to trust unskilled 
                   people
SSH
  Secure
  Bash powered
  Problems with multi­hop
  Requires manual “public key” exchange
  Security issues (one machine has the control of whole 
  networks without any filter)
Func
  Provides Python APIs (and/or CLI command) to manage 
  huge number of machines
       Fedora Unified Network Controller
       A Red Hat and Fedora Project
       Written in Python
       Secure (https based connection)
       Module­based architecture
       Easy to expand by writing new modules
       Security model guarantee by ACLs
       Web interface based on TurboGear (FuncWeb)
Func: quick start
   Two components: certmaster (51235/tcp) and minion 
   (51234/tcp)
   Status or the art: 1 Certmaster, N minions (Proxy module 
   will be available after Google SoC)
   Certmaster needs to sign minions by certificate 
   generation (automatically performed using autosign): 
   certmaster­ca tool.
   Minion needs only to know who is certmaster

   [root@a~]# certmaster-ca --list
   [root@a~]# certmaster-ca --sign hostname.domain.x
   [root@a~]# certmaster-ca --clear hostname.domain.x
Func: starting
   Open a shell on certmaster host

 Python API

   >>> from func.overlord import client
   >>> client1 = client.Client(“*.lan”)
   >>> client1.service.restart(“httpd”)
   >>> client1.command.run(“df ­h”)


 CLI
   [root@a~]# func “*.com” call service restart “httpd”
   [root@a~]# func “*.lan” call command run “df ­h”
What about modules?
   Func based on modules architecture
   A module support new stuff
   20 modules (libVirt, jboss, info, process, command, 
   iptables, nagios, etc)
   Writing a new module is simple. 
   When you write a module, it works on both CLI and 
   PyScripting, no modification on func are needed.
How to write new module
   func­create­module
   By hand

   import func_module
   class NewModule(func_module.FuncModule):
      version = “1.0”
     api_version = “0.1”
      description = “new module”

      def __init__(self):
         pass

      def anAction(self, arg1, arg2):
         pass
Advanced features
   Async mode
     Only on python API (implementation is coming ;­) )
     Useful on long time required commands (eg. Yum update)
   Multiplexer: possibility to launch more than one process
   Globbing
   Grouping
Globbing
 Python API
 >>> from func.overlord import client
 >>> glob1 = client.Client(“customer*; office.example.lan”)
 >>> glob1.yumcmd.update();




 CLI

  [root@a~]# func “*.example.org;*.lan” run yumcmd update
  [root@a~]# func “web*.domain.it;virt*” run 
Grouping
   [root@a~]# cat /etc/func/groups
   [webservers]
   host = office.example.lan, customer01.example.com

   [jbossas] 
   host = *.example.lan



 Python API & CLI Example 
  >>> from func.overlord import client
  >>> client.Client(@webservers).service.restart(“httpd”);


  [root@a~]# func “@webservers” run service restart “httpd”
Future ideas
   Modules module 
   Google Summer of Code:
     Proxy module
     System­config­* module
     User/groups manipulation
   Package on other distributions (Debian, Suse, Ubuntu, 
   etc.)
Related projects
   Symbolic (http://www.opensymbolic.org)
   Puppet (http://reductivelabs.com/trac/puppet)
   Puppet­team 
   (http://projects.byte­code.com/trac/puppet­team)
   Cobbler (http://cobbler.et.redhat.com/)
Thanks ;­)

Questions and answers?

More Related Content

PDF
Fluentd Meetup 2016 - ServerEngine Integration & Windows support
PDF
Hello watchOS2
ODP
Linuxday.at - Lightning Talk
PDF
OHHttpStubs
PPTX
Defcon - Veil-Pillage
PDF
BitTorrent on iOS
PDF
OpenNebulaConf2017EU: Torturing OpenNebula for Fun and Profit by Carlo Daffar...
PPTX
BH Arsenal '14 TurboTalk: The Veil-framework
Fluentd Meetup 2016 - ServerEngine Integration & Windows support
Hello watchOS2
Linuxday.at - Lightning Talk
OHHttpStubs
Defcon - Veil-Pillage
BitTorrent on iOS
OpenNebulaConf2017EU: Torturing OpenNebula for Fun and Profit by Carlo Daffar...
BH Arsenal '14 TurboTalk: The Veil-framework

What's hot (20)

PPTX
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
PDF
Fluentd v0.14 Overview
PDF
Treasure Data Summer Internship Final Report
ODP
Linux multiplexing
PPTX
G rpc lection1
PDF
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit Framework
PPTX
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows Side
PDF
How to create multiprocess server on windows with ruby - rubykaigi2016 Ritta ...
PDF
Mr201309 automated on-execute_test_using_virtual_box_eng
PDF
Vagrant are you still develop in a non-virtual environment-
PDF
Virtual Machine Introspection with Xen
PPTX
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
PDF
Improving monitoring systems Interoperability with OpenMetrics
PDF
Bypassing patchguard on Windows 8.1 and Windows 10
ODP
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
PPTX
Controlling multiple VMs with the power of Python
PDF
What is new in Go 1.8
PDF
Asynchronous programming intro
PDF
Keynote - Fluentd meetup v14
PDF
CSW2017 Qiang li zhibinhu_meiwang_dig into qemu security
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Fluentd v0.14 Overview
Treasure Data Summer Internship Final Report
Linux multiplexing
G rpc lection1
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit Framework
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows Side
How to create multiprocess server on windows with ruby - rubykaigi2016 Ritta ...
Mr201309 automated on-execute_test_using_virtual_box_eng
Vagrant are you still develop in a non-virtual environment-
Virtual Machine Introspection with Xen
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Improving monitoring systems Interoperability with OpenMetrics
Bypassing patchguard on Windows 8.1 and Windows 10
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Controlling multiple VMs with the power of Python
What is new in Go 1.8
Asynchronous programming intro
Keynote - Fluentd meetup v14
CSW2017 Qiang li zhibinhu_meiwang_dig into qemu security
Ad

Viewers also liked (8)

PDF
Is not about it, is all about sailing
PDF
Agile Day 2013 - Agile experience, between successes and failures [EN[
PDF
Meetup Lfoppiano
PDF
Design "user experience" centric applications
PDF
Ltsp Slide
PDF
The Near Future of CSS
PDF
The Presentation Come-Back Kid
PDF
The Buyer's Journey - by Chris Lema
Is not about it, is all about sailing
Agile Day 2013 - Agile experience, between successes and failures [EN[
Meetup Lfoppiano
Design "user experience" centric applications
Ltsp Slide
The Near Future of CSS
The Presentation Come-Back Kid
The Buyer's Journey - by Chris Lema
Ad

Similar to Presentation Lfoppiano Pycon (20)

PDF
Managing your Minions with Func
PDF
Cobbler, Func and Puppet: Tools for Large Scale Environments
PDF
Cobbler, Func and Puppet: Tools for Large Scale Environments
PPTX
One click deployment
PPT
Fabric
PDF
The Fn Project: A Quick Introduction (December 2017)
PDF
Zero to scaleable in ten minutes
PDF
PyParis2017 / Function-as-a-service - a pythonic perspective on severless com...
PDF
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...
KEY
20100425 Configuration Management With Puppet Lfnw
PPTX
A Fabric/Puppet Build/Deploy System
PPTX
Automation in Cloud
PDF
Creating a mature puppet system
PDF
Creating a Mature Puppet System
PPTX
Sonian, Open Source and Sensu
PDF
Symbolic: powerful web interface for Func
PDF
PyParis2017 / Tutorial transcript - Function-as-a-service : a pythonic perspe...
PDF
Automation - fabric, django and more
ODP
cfengine3 at #lspe
PPTX
python_development.pptx
Managing your Minions with Func
Cobbler, Func and Puppet: Tools for Large Scale Environments
Cobbler, Func and Puppet: Tools for Large Scale Environments
One click deployment
Fabric
The Fn Project: A Quick Introduction (December 2017)
Zero to scaleable in ten minutes
PyParis2017 / Function-as-a-service - a pythonic perspective on severless com...
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...
20100425 Configuration Management With Puppet Lfnw
A Fabric/Puppet Build/Deploy System
Automation in Cloud
Creating a mature puppet system
Creating a Mature Puppet System
Sonian, Open Source and Sensu
Symbolic: powerful web interface for Func
PyParis2017 / Tutorial transcript - Function-as-a-service : a pythonic perspe...
Automation - fabric, django and more
cfengine3 at #lspe
python_development.pptx

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Programs and apps: productivity, graphics, security and other tools
PPT
Teaching material agriculture food technology
PDF
cuic standard and advanced reporting.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
MYSQL Presentation for SQL database connectivity
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Approach and Philosophy of On baking technology
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Cloud computing and distributed systems.
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
Machine learning based COVID-19 study performance prediction
Empathic Computing: Creating Shared Understanding
Programs and apps: productivity, graphics, security and other tools
Teaching material agriculture food technology
cuic standard and advanced reporting.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
MYSQL Presentation for SQL database connectivity
NewMind AI Weekly Chronicles - August'25-Week II
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Approach and Philosophy of On baking technology
The AUB Centre for AI in Media Proposal.docx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Per capita expenditure prediction using model stacking based on satellite ima...
Dropbox Q2 2025 Financial Results & Investor Presentation
sap open course for s4hana steps from ECC to s4
Network Security Unit 5.pdf for BCA BBA.
Cloud computing and distributed systems.
Mobile App Security Testing_ A Comprehensive Guide.pdf

Presentation Lfoppiano Pycon

  • 1. FUNC Fedora Unified Network Controller Luca Foppiano <lfoppiano@byte-code.com>
  • 2. Summary The big picture Solutions Features What about future? Related projects
  • 3. The big picture “turn off all testing virtual machines” “restart all crashed web services” “update all machines with operation suffix in the name (eg.  web*.example.*, customer*, etc)”
  • 4. Solutions? Manual solution SSH or Telnet (as your risk) Func (https://fedorahosted.org/func)
  • 5. Manual  solution Obsolete Expensive Impossible on world  distributed network High risk Need to trust unskilled  people
  • 6. SSH Secure Bash powered Problems with multi­hop Requires manual “public key” exchange Security issues (one machine has the control of whole  networks without any filter)
  • 7. Func Provides Python APIs (and/or CLI command) to manage  huge number of machines Fedora Unified Network Controller A Red Hat and Fedora Project Written in Python Secure (https based connection) Module­based architecture Easy to expand by writing new modules Security model guarantee by ACLs Web interface based on TurboGear (FuncWeb)
  • 8. Func: quick start Two components: certmaster (51235/tcp) and minion  (51234/tcp) Status or the art: 1 Certmaster, N minions (Proxy module  will be available after Google SoC) Certmaster needs to sign minions by certificate  generation (automatically performed using autosign):  certmaster­ca tool. Minion needs only to know who is certmaster [root@a~]# certmaster-ca --list [root@a~]# certmaster-ca --sign hostname.domain.x [root@a~]# certmaster-ca --clear hostname.domain.x
  • 9. Func: starting Open a shell on certmaster host Python API >>> from func.overlord import client >>> client1 = client.Client(“*.lan”) >>> client1.service.restart(“httpd”) >>> client1.command.run(“df ­h”) CLI [root@a~]# func “*.com” call service restart “httpd” [root@a~]# func “*.lan” call command run “df ­h”
  • 10. What about modules? Func based on modules architecture A module support new stuff 20 modules (libVirt, jboss, info, process, command,  iptables, nagios, etc) Writing a new module is simple.  When you write a module, it works on both CLI and  PyScripting, no modification on func are needed.
  • 11. How to write new module func­create­module By hand import func_module class NewModule(func_module.FuncModule): version = “1.0”   api_version = “0.1” description = “new module” def __init__(self): pass def anAction(self, arg1, arg2): pass
  • 12. Advanced features Async mode Only on python API (implementation is coming ;­) ) Useful on long time required commands (eg. Yum update) Multiplexer: possibility to launch more than one process Globbing Grouping
  • 13. Globbing Python API >>> from func.overlord import client >>> glob1 = client.Client(“customer*; office.example.lan”) >>> glob1.yumcmd.update(); CLI [root@a~]# func “*.example.org;*.lan” run yumcmd update [root@a~]# func “web*.domain.it;virt*” run 
  • 14. Grouping [root@a~]# cat /etc/func/groups [webservers] host = office.example.lan, customer01.example.com [jbossas]  host = *.example.lan Python API & CLI Example  >>> from func.overlord import client >>> client.Client(@webservers).service.restart(“httpd”); [root@a~]# func “@webservers” run service restart “httpd”
  • 15. Future ideas Modules module  Google Summer of Code: Proxy module System­config­* module User/groups manipulation Package on other distributions (Debian, Suse, Ubuntu,  etc.)
  • 16. Related projects Symbolic (http://www.opensymbolic.org) Puppet (http://reductivelabs.com/trac/puppet) Puppet­team  (http://projects.byte­code.com/trac/puppet­team) Cobbler (http://cobbler.et.redhat.com/)