SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Introduction to FreeNAS
Development

John Hixson
john@ixsystems.com
iXsystems, Inc.
A bit about me
●
●

BSD geek that does geeky BSD things
Maintains jail, plugin, and directory service
systems on FreeNAS

●

Occasional committer to PC-BSD

●

Hacks on FreeBSD once in a blue moon

●

All my time goes into FreeNAS!
A bit about iXsystems
●

Corporate sponsor of PC-BSD

●

Corporate sponsor of FreeNAS

●

Employ several FreeBSD committers

●

●

Sponsor several open source conferences
every year
Contribute heavily to FreeBSD
What this talk will cover
●

What FreeNAS is

●

Adding a feature to the UI

●

Adding software to the operating system

●

How to contribute
What FreeNAS is:
●

100% free and open source network attached
storage operating system

●

Built on FreeBSD and ZFS

●

CIFS, NFS, AFP, iSCSI, etc

●

Over 6 million downloads to date
A quick look at FreeNAS
Adding a feature to the UI
●

Add service entry for the feature

●

Create feature model, form and view

●

Make the middleware aware of feature

●

Add a startup / shutdown script for the feature

●

Javascript to toggle feature on and off
Adding a feature to the UI
➔

Add service entry for the feature

●

Create feature model, form and view

●

Make the middleware aware of feature

●

Add a startup / shutdown script for the feature

●

Javascript to toggle feature on and off
class Migration(SchemaMigration):
def forwards(self, orm):
....
p = orm.Ponies()
p.save()
s = orm.Services()
s.srv_service = 'ponies'
s.srv_enable = False
s.save()
Adding a feature to the UI
●

Add service entry for the feature

➔

Create feature model, form and view

●

Make the middleware aware of feature

●

Add a startup / shutdown script for the feature

●

Javascript to toggle feature on and off
class Ponies(Model):
class Meta:
verbose_name = _(u"Ponies")
verbose_name_plural = _(u"Ponies")
class FreeAdmin:
deletable = False
class PoniesForm(ModelForm):
class Meta:
fields = '__all__'
model = models.Ponies
def core(request):
....
return render(request, 'services/core.html', {
...
'ponies': ponies,
})
def servicesToggleView(request, formname):
form2namemap = {
....
'ponies_toggle': 'ponies',
}
....
Adding a feature to the UI
●

Add service entry for the feature

●

Create feature model, form and view

➔

Make the middleware aware of feature

●

Add a startup / shutdown script for the feature

●

Javascript to toggle feature on and off
class notifier:
....
def _started_ponies(self):
self._system("/usr/sbin/service ponies status")
def _start_ponies(self):
self._system("/usr/sbin/service ponies start")
def _stop_ponies(self):
self._system("/usr/sbin/service ponies stop")
def _restart_ponies(self):
self._system("/usr/sbin/service ponies restart")
Adding a feature to the UI
●

Add service entry for the feature

●

Create feature model, form and view

●

Make the middleware aware of feature

➔

Add a startup / shutdown script for the feature

●

Javascript to toggle feature on and off
exit 0
Adding a feature to the UI
●

Add service entry for the feature

●

Create feature model, form and view

●

Make the middleware aware of feature

●

Add a startup / shutdown script for the feature

➔

Javascript to toggle feature on and off
ponies_on = false;
toggle_ponies = function(obj, onSuccess) {
if (ponies_on == false) {
BrowserPonies.start();
ponies_on = true;
} else {
BrowserPonies.stop();
ponies_on = false;
}
return toggle_service(obj, onSuccess);
}
Let's see the newly added feature
Adding software to the system
●

Add sound driver to kernel config

●

Add mp3 program to NanoBSD config

●

Build images

●

Upgrade system
Adding audio to FreeNAS
➔

Add sound driver to kernel config

●

Add mp3 program to NanoBSD config

●

Build images

●

Upgrade system
...

add_nano_modules 
sound sound/driver/ich sound/driver/hda
Adding audio to FreeNAS
●

Add sound driver to kernel config

➔

Add mp3 program to NanoBSD config

●

Build images

●

Upgrade system
...

add_port audio/mpg123
Adding audio to FreeNAS
●

Add sound driver to kernel config

●

Add mp3 program to NanoBSD config

➔

Build images

●

Upgrade system
[root@freenas /mnt/vol0/git/freenas]# make
No git repo choice is set. Please use "make gitexternal" to build as an external developer or "make gitinternal" to build as an iXsystems internal developer.
You only need to do this once.
*** [git-verify] Error code 1
Stop in /mnt/vol0/git/freenas.
[root@freenas /mnt/vol0/git/freenas]# make git-external
You are set up for external (github) development. You
can use the standard make targets (e.g. build or
release) now.
Adding audio to FreeNAS
●

Add sound driver to kernel config

●

Add mp3 program to NanoBSD config

●

Build images

➔

Upgrade system
FreeNAS with audio
Debugging
●

Logging

●

/var/log/messages

●

/var/log/nginx-*

●

/var/log/debug.log

●

settings.py: DEBUG = True

●

freenas-debug

●

Javascript debuggers in web browsers
How to get involved
●

FreeNAS always needs help!

●

Patches can be submitted

●

Pull requests on github can be made

●

Documentation can be contributed

●

Bugs can be filed

●

Use cases can be documented

●

Help with translations
Where to get the code
●
●

●

●

FreeNAS source code is hosted on GitHub
git clone http://github.com/freenas/freenas.git
freenas
Must be built on FreeBSD or PC-BSD 9.2
system with a full development environment
README file at root of checkout contains build
requirements and instructions
Resources
●

Website: http://www.freenas.org

●

Docs: http://doc.freenas.org

●

Forum: http://forums.freenas.org

●

Bugs: http://bugs.freenas.org

●

Email: http://lists.freenas.org

●

IRC channel on freenode
Conclusion
●

FreeNAS is 100% open source

●

FreeNAS is very powerful

●

●

●

FreeNAS can be extended and customized to fit
your needs
Demonstrating a simple application will
hopefully give those interested that extra kick to
do so!
Everyone can contribute to FreeNAS!
Questions?

Contenu connexe

Tendances

BSD for Linux Users
BSD for Linux UsersBSD for Linux Users
BSD for Linux UsersDru Lavigne
 
BayLISA - FreeNAS 10 by Jordan Hubbard
BayLISA - FreeNAS 10 by Jordan HubbardBayLISA - FreeNAS 10 by Jordan Hubbard
BayLISA - FreeNAS 10 by Jordan HubbardiXsystems
 
SELF 2010: BSD For Linux Users
SELF 2010: BSD For Linux UsersSELF 2010: BSD For Linux Users
SELF 2010: BSD For Linux UsersDru Lavigne
 
Dru lavigne servers-tutorial
Dru lavigne servers-tutorialDru lavigne servers-tutorial
Dru lavigne servers-tutorialDru Lavigne
 
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...iXsystems
 
Lavigne bsdmag-jan13
Lavigne bsdmag-jan13Lavigne bsdmag-jan13
Lavigne bsdmag-jan13Dru Lavigne
 
The True Story of FreeNAS
The True Story of FreeNASThe True Story of FreeNAS
The True Story of FreeNASiXsystems
 
Lavigne aug11 bsdmag
Lavigne aug11 bsdmagLavigne aug11 bsdmag
Lavigne aug11 bsdmagDru Lavigne
 
Installation of LAMP Server with Ubuntu 14.10 Server Edition
Installation of LAMP Server with Ubuntu 14.10 Server EditionInstallation of LAMP Server with Ubuntu 14.10 Server Edition
Installation of LAMP Server with Ubuntu 14.10 Server EditionSammy Fung
 
ESXi PXE Server-Instructions/Documentation
ESXi PXE Server-Instructions/DocumentationESXi PXE Server-Instructions/Documentation
ESXi PXE Server-Instructions/DocumentationJeremy Dixon
 
Compiling linux kernel and submit first patch
Compiling linux kernel and submit first patchCompiling linux kernel and submit first patch
Compiling linux kernel and submit first patchMayur Patil
 

Tendances (20)

Olf2012
Olf2012Olf2012
Olf2012
 
BSD for Linux Users
BSD for Linux UsersBSD for Linux Users
BSD for Linux Users
 
BayLISA - FreeNAS 10 by Jordan Hubbard
BayLISA - FreeNAS 10 by Jordan HubbardBayLISA - FreeNAS 10 by Jordan Hubbard
BayLISA - FreeNAS 10 by Jordan Hubbard
 
SELF 2010: BSD For Linux Users
SELF 2010: BSD For Linux UsersSELF 2010: BSD For Linux Users
SELF 2010: BSD For Linux Users
 
Dru lavigne servers-tutorial
Dru lavigne servers-tutorialDru lavigne servers-tutorial
Dru lavigne servers-tutorial
 
Oclug 2010
Oclug 2010Oclug 2010
Oclug 2010
 
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
 
Lavigne bsdmag-jan13
Lavigne bsdmag-jan13Lavigne bsdmag-jan13
Lavigne bsdmag-jan13
 
Flourish11
Flourish11Flourish11
Flourish11
 
The True Story of FreeNAS
The True Story of FreeNASThe True Story of FreeNAS
The True Story of FreeNAS
 
Lavigne aug11 bsdmag
Lavigne aug11 bsdmagLavigne aug11 bsdmag
Lavigne aug11 bsdmag
 
Tlf2012
Tlf2012Tlf2012
Tlf2012
 
Installation of LAMP Server with Ubuntu 14.10 Server Edition
Installation of LAMP Server with Ubuntu 14.10 Server EditionInstallation of LAMP Server with Ubuntu 14.10 Server Edition
Installation of LAMP Server with Ubuntu 14.10 Server Edition
 
ESXi PXE Server-Instructions/Documentation
ESXi PXE Server-Instructions/DocumentationESXi PXE Server-Instructions/Documentation
ESXi PXE Server-Instructions/Documentation
 
3. introduction of centos
3. introduction of centos3. introduction of centos
3. introduction of centos
 
Introduction to OpenSolaris 2008.11
Introduction to OpenSolaris 2008.11Introduction to OpenSolaris 2008.11
Introduction to OpenSolaris 2008.11
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Compiling linux kernel and submit first patch
Compiling linux kernel and submit first patchCompiling linux kernel and submit first patch
Compiling linux kernel and submit first patch
 
ASP.NET vNext
ASP.NET vNextASP.NET vNext
ASP.NET vNext
 
Bsd ss
Bsd ssBsd ss
Bsd ss
 

En vedette

Delivered management of abdominal trauma
Delivered management of abdominal traumaDelivered management of abdominal trauma
Delivered management of abdominal traumaAntonio Calderon
 
The 50 best pieces of entrepreneurial advice you will ever hear
The 50 best pieces of entrepreneurial advice you will ever hear The 50 best pieces of entrepreneurial advice you will ever hear
The 50 best pieces of entrepreneurial advice you will ever hear WebAble Digital
 
Introduction au hacking by hamoji (1)
Introduction au hacking by hamoji (1)Introduction au hacking by hamoji (1)
Introduction au hacking by hamoji (1)hamoji hamoji
 
Evaluation Question One
Evaluation Question OneEvaluation Question One
Evaluation Question OneAngrySmurf1
 
نصيحتی چند برای سعادت زندگی زن و شوهر
نصيحتی چند برای سعادت زندگی زن و شوهرنصيحتی چند برای سعادت زندگی زن و شوهر
نصيحتی چند برای سعادت زندگی زن و شوهرhemayata
 
Case study Scavolini
Case study ScavoliniCase study Scavolini
Case study Scavoliniit Consult
 
Как онлайн-образование меняет жизнь к лучшему?
Как онлайн-образование меняет жизнь к лучшему?Как онлайн-образование меняет жизнь к лучшему?
Как онлайн-образование меняет жизнь к лучшему?Tanya Ryzhaya
 
Che cosa è la piattaforma software josh?
Che cosa è la piattaforma software josh?Che cosa è la piattaforma software josh?
Che cosa è la piattaforma software josh?it Consult
 
5 Strategies for choosing a worthy CNAM provider
5 Strategies for choosing a worthy CNAM provider5 Strategies for choosing a worthy CNAM provider
5 Strategies for choosing a worthy CNAM providerFlowroute
 
SIP trunking: Weapon of mass communication
SIP trunking: Weapon of mass communicationSIP trunking: Weapon of mass communication
SIP trunking: Weapon of mass communicationFlowroute
 
Knowledge box spring 2013: MISE, un cammino verso la logica di processo
Knowledge box spring 2013: MISE, un cammino verso la logica di processoKnowledge box spring 2013: MISE, un cammino verso la logica di processo
Knowledge box spring 2013: MISE, un cammino verso la logica di processoit Consult
 
Media studies Presentation
Media studies Presentation Media studies Presentation
Media studies Presentation Michael Day
 
Create Brand Evangelists with CNAM
Create Brand Evangelists with CNAMCreate Brand Evangelists with CNAM
Create Brand Evangelists with CNAMFlowroute
 
Brochure josh Scanner
Brochure josh ScannerBrochure josh Scanner
Brochure josh Scannerit Consult
 

En vedette (18)

Delivered management of abdominal trauma
Delivered management of abdominal traumaDelivered management of abdominal trauma
Delivered management of abdominal trauma
 
The 50 best pieces of entrepreneurial advice you will ever hear
The 50 best pieces of entrepreneurial advice you will ever hear The 50 best pieces of entrepreneurial advice you will ever hear
The 50 best pieces of entrepreneurial advice you will ever hear
 
Introduction au hacking by hamoji (1)
Introduction au hacking by hamoji (1)Introduction au hacking by hamoji (1)
Introduction au hacking by hamoji (1)
 
Evaluation Question One
Evaluation Question OneEvaluation Question One
Evaluation Question One
 
Charitable Planned Giving
Charitable Planned GivingCharitable Planned Giving
Charitable Planned Giving
 
Industrias de Tunja
Industrias de TunjaIndustrias de Tunja
Industrias de Tunja
 
نصيحتی چند برای سعادت زندگی زن و شوهر
نصيحتی چند برای سعادت زندگی زن و شوهرنصيحتی چند برای سعادت زندگی زن و شوهر
نصيحتی چند برای سعادت زندگی زن و شوهر
 
Case study Scavolini
Case study ScavoliniCase study Scavolini
Case study Scavolini
 
Как онлайн-образование меняет жизнь к лучшему?
Как онлайн-образование меняет жизнь к лучшему?Как онлайн-образование меняет жизнь к лучшему?
Как онлайн-образование меняет жизнь к лучшему?
 
Che cosa è la piattaforma software josh?
Che cosa è la piattaforma software josh?Che cosa è la piattaforma software josh?
Che cosa è la piattaforma software josh?
 
5 Strategies for choosing a worthy CNAM provider
5 Strategies for choosing a worthy CNAM provider5 Strategies for choosing a worthy CNAM provider
5 Strategies for choosing a worthy CNAM provider
 
SIP trunking: Weapon of mass communication
SIP trunking: Weapon of mass communicationSIP trunking: Weapon of mass communication
SIP trunking: Weapon of mass communication
 
Knowledge box spring 2013: MISE, un cammino verso la logica di processo
Knowledge box spring 2013: MISE, un cammino verso la logica di processoKnowledge box spring 2013: MISE, un cammino verso la logica di processo
Knowledge box spring 2013: MISE, un cammino verso la logica di processo
 
Prueba
PruebaPrueba
Prueba
 
2
22
2
 
Media studies Presentation
Media studies Presentation Media studies Presentation
Media studies Presentation
 
Create Brand Evangelists with CNAM
Create Brand Evangelists with CNAMCreate Brand Evangelists with CNAM
Create Brand Evangelists with CNAM
 
Brochure josh Scanner
Brochure josh ScannerBrochure josh Scanner
Brochure josh Scanner
 

Similaire à Introduction to FreeNAS development by John Hixson

Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-wayRobert Lujo
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Fabrice Bernhard
 
Voiture tech talk
Voiture tech talkVoiture tech talk
Voiture tech talkHoppinger
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Bastian Feder
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneyWeaveworks
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0Masashi Umezawa
 
What makes me "Grunt"?
What makes me "Grunt"? What makes me "Grunt"?
What makes me "Grunt"? Fabien Doiron
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient waySylvain Rayé
 
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...Erich Beyrent
 
Improving Operations Efficiency with Puppet
Improving Operations Efficiency with PuppetImproving Operations Efficiency with Puppet
Improving Operations Efficiency with PuppetNicolas Brousse
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with pythonroskakori
 
Automation - fabric, django and more
Automation - fabric, django and moreAutomation - fabric, django and more
Automation - fabric, django and moreIlian Iliev
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
Don't Fear the Autotools
Don't Fear the AutotoolsDon't Fear the Autotools
Don't Fear the AutotoolsScott Garman
 
IzPack at LyonJUG'11
IzPack at LyonJUG'11IzPack at LyonJUG'11
IzPack at LyonJUG'11julien.ponge
 

Similaire à Introduction to FreeNAS development by John Hixson (20)

Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Voiture tech talk
Voiture tech talkVoiture tech talk
Voiture tech talk
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
 
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneySetting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
 
Drupal Best Practices
Drupal Best PracticesDrupal Best Practices
Drupal Best Practices
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
 
What makes me "Grunt"?
What makes me "Grunt"? What makes me "Grunt"?
What makes me "Grunt"?
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 
Intro django
Intro djangoIntro django
Intro django
 
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
 
Improving Operations Efficiency with Puppet
Improving Operations Efficiency with PuppetImproving Operations Efficiency with Puppet
Improving Operations Efficiency with Puppet
 
Automated Drupal deployment with Git and Capistrano
Automated Drupal deployment with Git and CapistranoAutomated Drupal deployment with Git and Capistrano
Automated Drupal deployment with Git and Capistrano
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with python
 
Automation - fabric, django and more
Automation - fabric, django and moreAutomation - fabric, django and more
Automation - fabric, django and more
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Xdebug from a to x
Xdebug from a to xXdebug from a to x
Xdebug from a to x
 
Don't Fear the Autotools
Don't Fear the AutotoolsDon't Fear the Autotools
Don't Fear the Autotools
 
IzPack at LyonJUG'11
IzPack at LyonJUG'11IzPack at LyonJUG'11
IzPack at LyonJUG'11
 

Plus de iXsystems

History of ZFS (MeetBSD California 2016)
History of ZFS (MeetBSD California 2016)History of ZFS (MeetBSD California 2016)
History of ZFS (MeetBSD California 2016)iXsystems
 
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)iXsystems
 
NeXTBSD aka FreeBSD X
NeXTBSD aka FreeBSD XNeXTBSD aka FreeBSD X
NeXTBSD aka FreeBSD XiXsystems
 
FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)iXsystems
 
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)iXsystems
 
Netflix Update (MeetBSD California 2014 Lightning Talk)
Netflix Update (MeetBSD California 2014 Lightning Talk)Netflix Update (MeetBSD California 2014 Lightning Talk)
Netflix Update (MeetBSD California 2014 Lightning Talk)iXsystems
 
600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)
600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)
600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)iXsystems
 
PBI v10: Application Management Made Easy by Ken Moore
PBI v10: Application Management Made Easy by Ken MoorePBI v10: Application Management Made Easy by Ken Moore
PBI v10: Application Management Made Easy by Ken MooreiXsystems
 

Plus de iXsystems (8)

History of ZFS (MeetBSD California 2016)
History of ZFS (MeetBSD California 2016)History of ZFS (MeetBSD California 2016)
History of ZFS (MeetBSD California 2016)
 
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
 
NeXTBSD aka FreeBSD X
NeXTBSD aka FreeBSD XNeXTBSD aka FreeBSD X
NeXTBSD aka FreeBSD X
 
FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)
 
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
 
Netflix Update (MeetBSD California 2014 Lightning Talk)
Netflix Update (MeetBSD California 2014 Lightning Talk)Netflix Update (MeetBSD California 2014 Lightning Talk)
Netflix Update (MeetBSD California 2014 Lightning Talk)
 
600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)
600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)
600M+ Unsuspecting FreeBSD Users (MeetBSD California 2014)
 
PBI v10: Application Management Made Easy by Ken Moore
PBI v10: Application Management Made Easy by Ken MoorePBI v10: Application Management Made Easy by Ken Moore
PBI v10: Application Management Made Easy by Ken Moore
 

Dernier

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Dernier (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

Introduction to FreeNAS development by John Hixson

  • 1. Introduction to FreeNAS Development John Hixson john@ixsystems.com iXsystems, Inc.
  • 2. A bit about me ● ● BSD geek that does geeky BSD things Maintains jail, plugin, and directory service systems on FreeNAS ● Occasional committer to PC-BSD ● Hacks on FreeBSD once in a blue moon ● All my time goes into FreeNAS!
  • 3. A bit about iXsystems ● Corporate sponsor of PC-BSD ● Corporate sponsor of FreeNAS ● Employ several FreeBSD committers ● ● Sponsor several open source conferences every year Contribute heavily to FreeBSD
  • 4. What this talk will cover ● What FreeNAS is ● Adding a feature to the UI ● Adding software to the operating system ● How to contribute
  • 5. What FreeNAS is: ● 100% free and open source network attached storage operating system ● Built on FreeBSD and ZFS ● CIFS, NFS, AFP, iSCSI, etc ● Over 6 million downloads to date
  • 6.
  • 7. A quick look at FreeNAS
  • 8. Adding a feature to the UI ● Add service entry for the feature ● Create feature model, form and view ● Make the middleware aware of feature ● Add a startup / shutdown script for the feature ● Javascript to toggle feature on and off
  • 9. Adding a feature to the UI ➔ Add service entry for the feature ● Create feature model, form and view ● Make the middleware aware of feature ● Add a startup / shutdown script for the feature ● Javascript to toggle feature on and off
  • 10. class Migration(SchemaMigration): def forwards(self, orm): .... p = orm.Ponies() p.save() s = orm.Services() s.srv_service = 'ponies' s.srv_enable = False s.save()
  • 11. Adding a feature to the UI ● Add service entry for the feature ➔ Create feature model, form and view ● Make the middleware aware of feature ● Add a startup / shutdown script for the feature ● Javascript to toggle feature on and off
  • 12. class Ponies(Model): class Meta: verbose_name = _(u"Ponies") verbose_name_plural = _(u"Ponies") class FreeAdmin: deletable = False
  • 13. class PoniesForm(ModelForm): class Meta: fields = '__all__' model = models.Ponies
  • 14. def core(request): .... return render(request, 'services/core.html', { ... 'ponies': ponies, }) def servicesToggleView(request, formname): form2namemap = { .... 'ponies_toggle': 'ponies', } ....
  • 15. Adding a feature to the UI ● Add service entry for the feature ● Create feature model, form and view ➔ Make the middleware aware of feature ● Add a startup / shutdown script for the feature ● Javascript to toggle feature on and off
  • 16. class notifier: .... def _started_ponies(self): self._system("/usr/sbin/service ponies status") def _start_ponies(self): self._system("/usr/sbin/service ponies start") def _stop_ponies(self): self._system("/usr/sbin/service ponies stop") def _restart_ponies(self): self._system("/usr/sbin/service ponies restart")
  • 17. Adding a feature to the UI ● Add service entry for the feature ● Create feature model, form and view ● Make the middleware aware of feature ➔ Add a startup / shutdown script for the feature ● Javascript to toggle feature on and off
  • 19. Adding a feature to the UI ● Add service entry for the feature ● Create feature model, form and view ● Make the middleware aware of feature ● Add a startup / shutdown script for the feature ➔ Javascript to toggle feature on and off
  • 20. ponies_on = false; toggle_ponies = function(obj, onSuccess) { if (ponies_on == false) { BrowserPonies.start(); ponies_on = true; } else { BrowserPonies.stop(); ponies_on = false; } return toggle_service(obj, onSuccess); }
  • 21. Let's see the newly added feature
  • 22. Adding software to the system ● Add sound driver to kernel config ● Add mp3 program to NanoBSD config ● Build images ● Upgrade system
  • 23. Adding audio to FreeNAS ➔ Add sound driver to kernel config ● Add mp3 program to NanoBSD config ● Build images ● Upgrade system
  • 25. Adding audio to FreeNAS ● Add sound driver to kernel config ➔ Add mp3 program to NanoBSD config ● Build images ● Upgrade system
  • 27. Adding audio to FreeNAS ● Add sound driver to kernel config ● Add mp3 program to NanoBSD config ➔ Build images ● Upgrade system
  • 28. [root@freenas /mnt/vol0/git/freenas]# make No git repo choice is set. Please use "make gitexternal" to build as an external developer or "make gitinternal" to build as an iXsystems internal developer. You only need to do this once. *** [git-verify] Error code 1 Stop in /mnt/vol0/git/freenas. [root@freenas /mnt/vol0/git/freenas]# make git-external You are set up for external (github) development. You can use the standard make targets (e.g. build or release) now.
  • 29. Adding audio to FreeNAS ● Add sound driver to kernel config ● Add mp3 program to NanoBSD config ● Build images ➔ Upgrade system
  • 32. How to get involved ● FreeNAS always needs help! ● Patches can be submitted ● Pull requests on github can be made ● Documentation can be contributed ● Bugs can be filed ● Use cases can be documented ● Help with translations
  • 33. Where to get the code ● ● ● ● FreeNAS source code is hosted on GitHub git clone http://github.com/freenas/freenas.git freenas Must be built on FreeBSD or PC-BSD 9.2 system with a full development environment README file at root of checkout contains build requirements and instructions
  • 34. Resources ● Website: http://www.freenas.org ● Docs: http://doc.freenas.org ● Forum: http://forums.freenas.org ● Bugs: http://bugs.freenas.org ● Email: http://lists.freenas.org ● IRC channel on freenode
  • 35. Conclusion ● FreeNAS is 100% open source ● FreeNAS is very powerful ● ● ● FreeNAS can be extended and customized to fit your needs Demonstrating a simple application will hopefully give those interested that extra kick to do so! Everyone can contribute to FreeNAS!