Rocky Mountain Ruby 2011

Lightning Talk: BDSM Project SM Framework

Lightning Talk: BDSM Project SM Framework

by Wayne E. Seguin

In the video titled 'Lightning Talk: BDSM Project SM Framework' delivered by Wayne E. Seguin at the Rocky Mountain Ruby 2011 event, the speaker introduces the SM framework, a component of the BDSM project designed for system-level scripting management.

The main topic revolves around the functionalities and applications of the SM framework. The core concept is that servers should adopt a submissive role, thereby facilitating better management through scripting.

Key points of the talk include:

  • Definition of SM Framework: The acronym SM stands for System Stack Scripting Management Framework. It installs a command line interface in the /opt/SM directory by default.
  • Purpose: The framework serves as a tool for writing, distributing, and sharing system-level scripts efficiently.
  • Extensions: Users can create extensions, which consist of a directory structure with executable scripts, making it language-agnostic yet benefiting from shell scripting.
  • Module API: The SM framework allows users to include module APIs in their scripting, offering further functionalities through various directories for configurations and command mappings.
  • Example of Usage: An example provided was a 'deploy' extension. By typing 'SM deploy', the framework executes scripts located in the extension’s bin directory.
  • Versioning and Installation: Diligent developers can version their extensions. Installation can be achieved using the 'SM EXT install name URI' command to manage related functionalities grouped together.
  • Overall Scope: The SM framework integrates across your operating system and application stack, potentially layering management systems like Chef on top, providing a cohesive scripting environment.

The video concludes by inviting any questions and sharing a GitHub link for further exploration of the project, emphasizing its scope and utilization in managing server setups efficiently. Overall, the SM framework aims to streamline scripting management for developers and system administrators.

00:00:05.799 Hello! Hey, wake up, pay attention! Let's get this party started. Am I ready to go? Can I go? I'm timing, alright!
00:00:12.920 I'm going to give you very quick information. I made these slides just now, so I haven't thought this through. Essentially, I'm going to talk to you about what originally started as the BDSM project. It's now known as the SM framework, a subset of that project. The whole idea behind it is that servers should be submissive.
00:00:29.320 So, what is this SM framework? What does SM stand for? It’s an acronym that I couldn't figure out how to name properly: System Stack Scripting Management Framework – that pretty much sums it up.
00:00:44.239 What it is involves a core component that installs to /opt/SM if you install as root by default. It provides you with a command line interface and modules, which I will discuss in a few minutes. These modules have an API that can be leveraged, allowing you to write extensions.
00:01:04.680 So, what does the BDSM project or the SM framework do? The answer is: whatever you need it to do. The idea is that it's a framework enabling you to write system-level scripts, distribute them, share them, and perform all sorts of useful tasks.
00:01:28.479 What is an extension? Basically, it is a named directory that contains a bin directory for executable scripts. This means that it is actually language agnostic, but utilizing shell scripting has some significant advantages. You create a shell directory inside your extension, make a functions file there, and you can put shell scripting functions in it.
00:01:49.880 If you add executable shell scripts to your bin directory, these functions will automatically load along with them. So now, what we have is a core CLI, our extensions, and the modules mentioned earlier — the modules' API can be used by extensions.
00:02:01.600 There’s a lot to cover, but basically you have an includes file within the shell, allowing you to include the module APIs. Depending on the modules you include, you may also have additional directories for configuration templates and more. There's also a useful CLI mapping file that allows you to map command-line actions.
00:02:20.280 For example, I have a deploy extension I'm working on. You type 'SM deploy', and if there are executable files in the bin directory of that extension, it gets mapped to a shell function in the functions path or Runway file. If you're a diligent extension developer, you'll also keep them versioned, enabling easy installation with 'SM EXT install name URI'.
00:02:49.600 You provide a name, such as 'SM enginex', along with a valid URI or file system path. Additionally, you can create sets of extensions grouped together for related functionality. You can install them similarly.
00:03:20.720 What is the scope of this project? The scope encompasses your operating system, which has an underlying package manager that manages the OS efficiently. Then there’s your application stack defining the runnable application framework. You can use the SM framework to script that setup.
00:03:59.840 On top of all this, you can layer a content management system, like Chef, and above that, you might want to manage multiple servers. The overall aim of this scope is to offer a single system scripting stack management framework.
00:04:21.160 Again, this is the BDSM project's SM framework. I have a GitHub organization for it, github.com/smm. If you encounter any issues at work that block such sites, you can also visit SMdogrescue.com. If you have questions about this topic, feel free to ask me later.
00:04:27.199 Enjoy! You're weird!