Anlegen von mehreren Benutzern / Benutzerkonten

Mit folgendem Promise werden die Benutzer new_user1 bis new_user3 mit Home-Verzeichnissen und definierten UIDs (User IDs) angelegt.

bundle agent add_users
{
        methods:
          "create_users" usebundle => create_users("add_users.users");
 
        vars:
          # Hier die User einpflegen, die angelegt werden sollen
          # Erster User
          "users[new_user1][uid]"               string => "6666";
          "users[new_user1][description]"       string => "NeuerUser1, R4, HZD";
          # Zweiter User
          "users[new_user2][uid]"               string => "6667";
          "users[new_user2][description]"       string => "NeuerUser2, R4, HZD";
          # Dritter User
          "users[new_user3][uid]"               string => "6668";
          "users[new_user3][description]"       string => "NeuerUser3, R4, HZD";
          # Weitere User wie oben reinpacken, je nach Bedarf
 
}
 
bundle agent create_users(info)
{
        vars:
        # Hier die Netzsegemente oder einzelne IPs eintragen, auf denen die User
        # User eingerichtet werden sollen UND ZWAR mit _ anstelle von .  !!!
          "ServerList"   slist  => { "192_168_1" }; # alle Rechner im Subnetz
        # Die User werden von oben übergeben
          "user"                slist  => getindices("$(info)");
 
        classes:
          "server" or => {@(ServerList)};
          "add_${user}" not => userexists( ${user} );
 
        users:
          "add_${user}.server":: # User wird nur angelegt, wenn er nicht existiert
            "$(user)"
              uid => " $($(info)[$(user)][uid])",
              policy => "present",
              description => "$($(info)[$(user)][description])",
              home_dir => "/home/$(user)",
              home_bundle => setup_home_dir("$(user)"),
              #home_bundle_inherit => "true",
              group_primary => "users",
              password => ThePassword,
              shell => "/bin/bash",
                classes => if_repaired("user_added");
 
reports:
    user_added::
        "User $(user) ist hinzugefügt.";
}
 
bundle agent setup_home_dir(user)
{
  files:
        "/home/$(user)/."
          create => "true";
}
 
body password ThePassword
{
        format => "hash";
          data => "jNKlcaMQIuqBY"; # "CFEngine" # erstellt via 'openssl passwd'
}