Slide 1

Slide 1 text

EXTENDING FREEIPA Petr Viktorin [email protected] DevConf, 2014-02-08

Slide 2

Slide 2 text

What is FreeIPA?

Slide 3

Slide 3 text

IPA API UI INSTALL, UPGRADE, MANAGE ipalib plugins backend plugins upgrade plugins 389 directory server certificate system http server kerberos system security services daemon BIND dns server sudo PAM sshd $ ipa user-show jwhite User login: jwhite First name: Jaren Last name: White Home directory: /home/jwhite Login shell: /bin/sh Email address: [email protected] UID: 1699600004 GID: 1699600004 Account disabled: False Password: False Member of groups: ipausers Kerberos keys available: False JSON-RPC

Slide 4

Slide 4 text

LDAP Tree structure object classes & attribute types OIDs http://www.zytrax.com/books/ldap/

Slide 5

Slide 5 text

Extending LDAP Schema install/share/60basev3.ldif Content updating install/updates/40-otp.update ACIs Updater plugins ipaserver/install/plugins/upload_cacrt.py

Slide 6

Slide 6 text

ipaldap “Object–LDAP mapper” see ipaldap-demo.py

Slide 7

Slide 7 text

API plugins Objects & Methods ipalib/plugins/user.py

Slide 8

Slide 8 text

Objects objectclasses, attributes takes_params attribute name (*?+) validators cli_name flags - see ipalib.parameters.Param default permissions

Slide 9

Slide 9 text

Methods run forward execute

Slide 10

Slide 10 text

Callbacks pre_callback Extra validation, generating random password post_callback Updating other entries, tweaking output exc_callback Error handling interactive_prompt_callback Prompting for values

Slide 11

Slide 11 text

Other “plugins” DS plugins UI facets Tests

Slide 12

Slide 12 text

EXTENDING FREEIPA

Slide 13

Slide 13 text

A. Extend the core + tweak everything − gotta play by the rules B. External plugin + do whatever you want − hic sunt leones

Slide 14

Slide 14 text

A. Extend the core 1. Say hello 2. File an RFE ticket 3. Read General Considerations 4. Write a Design page 5. Submit patches 6. Profit!

Slide 15

Slide 15 text

B. External plugin 1. Say hello! 2. Write a plugin 3. Share the plugin 4. Package the plugin 5. Profit!

Slide 16

Slide 16 text

?