Skip to content

Instantly share code, notes, and snippets.

@nickanderson
nickanderson / newgist-org-mode-example-tangle-content-multiple-files-header-args.org
Last active April 23, 2025 18:26
Example tangling content to different places based on header arguments

Example for tangling the same content to different places based on header arguments

@nickanderson
nickanderson / CFEngine-bundle-parameters-are-optional.org
Created April 17, 2025 23:00
CFEngine Bundle Parameters Are Optional

Bundle parameters are optional.

Both in the sense of implementation, but also from the perspective of use.

I did not know (or if I did, i don’t even remember forgetting) that bundle parameters, if present are optional. In that, a bundle that has parameters can be called without parameters . However, if you call with non-zero parameters you must supply all (that part I knew).

bundle agent __main__
{
@nickanderson
nickanderson / example.org
Created April 17, 2025 21:08
variable index for masin
bundle agent __main__
{
  vars:
      "stuff" slist => { "some", "thing-s", "that's", "not valid", "variable names"};

      "classic_associative_array[$(stuff)]"
        string => string_upcase("$(stuff)");
}
@nickanderson
nickanderson / example-ifelse.org
Created April 17, 2025 13:10
ifelse() for masin
bundle agent php
{
	vars:
		"version" string => ifelse( "debian.!ubuntu", "8.0",
                                          "ubuntu", "8.2",
                                          "centos", "8.3",
                                          "freebsd", "82",
                                           " ¯\_(ツ)_/¯" );
@nickanderson
nickanderson / 20210818082229-variablesmatching_as_data.org
Created January 24, 2025 15:43
Examples illustrating variablesmatching_as_data() in CFEEngine

variablesmatching_as_data() is useful for centralizing information from disparate sources. For example, deriving a list of package names by extracting the values from variables that match a specific name.

 bundle agent package_names_from_variablesmatching_as_data
 # @brief Example illustrating deriving a list of package names from variables named with a specific naming convention
{
  vars:
      "packages_baseline" slist => { "bash-completion", "emacs" };
      "packages_os" slist => { "httpd" };
@nickanderson
nickanderson / README.org
Last active September 14, 2024 19:18
An example of doing something as the result of a promise outcome just for James Just James
@nickanderson The title piqued my interest so I had a read. Bearing in mind that I don't use cfengine,
so it's likely my fault for not understanding, but I would have liked to see how you do different
things _as_a_result_ of the different repaired vs kept vs reached scenarios.

Is it possible to do that? Say create a new file with contents that vary based on which of those
scenarios occured?

Thanks!
@nickanderson
nickanderson / bas-skipped-promises.org
Created July 3, 2024 14:08
Reproduce policy from chat
bundle agent __main__
{

    vars:
    "repo_data" data => '{"one": { "value": "something" }, "two": { "run_class": "linux" } }';
    "repo_names" slist => getindices(repo_data);
    reports:
          "$(this.bundle): yes or/not $(repo_names)"
              if => or(
@nickanderson
nickanderson / select_class.org
Created March 14, 2024 15:10
select_class example
bundle agent __main__
{
  vars:
    # one option for each of 28 days in a month.
    "options" slist => { expandrange( "selected_option_[1-28]", 1 ) };

  classes:
    "selected_option" select_class => { @(options) };
@nickanderson
nickanderson / gourceing-my-org.org
Last active July 9, 2023 18:40
How I generated a gource visualization of some org-files stored in git repositories

I have a long history of using org-mode, but I don’t have a consistent history of tracking it under version control. I have at times and then stopped, I don’t push my git repository anywhere, it does get backed up periodically. Some of my org-mode files get copied around to multiple devices (typically bi-directional sync, but you can get creative with send only and exclusions etc ..). Anyway, I have a few different git repositories that contain org-mode files and I wanted to visualize activity over time. Gource produces a nifty visualization, and you can even interact with it, zooming in, panning around while being able to see user, directory, and file names.

I use this city script to generate videos like https://www.youtube.com/watch?v=b7y0y6sWb2I

#!/bin/bash
set -e
set -u
set -x
@nickanderson
nickanderson / example.org
Last active July 7, 2023 16:44
Example illustrating use of regex_replace() to remove quiet from GRUB_CMDLINE_LINUX_DEFAULT

Example illustrating use of regex_replace() to remove quiet from GRUB_CMDLINE_LINUX_DEFAULT

Use regex_replace() to remove quiet from GRUB_CMDLINE_LINUX_DEFAULT.

bundle agent __main__
{
    methods:
     "init";
     "test";