{"id":21484118,"url":"https://github.com/dylex/ansible-hpc","last_synced_at":"2026-03-10T06:04:35.142Z","repository":{"id":66278639,"uuid":"75327338","full_name":"dylex/ansible-hpc","owner":"dylex","description":"Ansible modules for HPC clusters","archived":false,"fork":false,"pushed_at":"2024-07-24T09:48:35.000Z","size":42,"stargazers_count":17,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-16T03:42:26.527Z","etag":null,"topics":["ansible","slurm","warewulf"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dylex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-12-01T19:53:14.000Z","updated_at":"2025-06-26T18:23:46.000Z","dependencies_parsed_at":"2024-02-03T07:20:02.326Z","dependency_job_id":"59b1fe9f-9f2e-4bfe-b431-d0cc60913ff2","html_url":"https://github.com/dylex/ansible-hpc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dylex/ansible-hpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylex%2Fansible-hpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylex%2Fansible-hpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylex%2Fansible-hpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylex%2Fansible-hpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dylex","download_url":"https://codeload.github.com/dylex/ansible-hpc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylex%2Fansible-hpc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30326878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","slurm","warewulf"],"created_at":"2024-11-23T12:50:13.529Z","updated_at":"2026-03-10T06:04:35.123Z","avatar_url":"https://github.com/dylex.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible utilities useful for HPC clusters\n\n## Module and inventory for Warewulf systems manager\n\nThe perl script `warewulf.pl` can be used as an ansible module as well as a dynamic inventory.\nTo use it, pass it to ansible's `-M` (library) and/or `-i` (inventory) arguments, or place it in the corresponding directories.\n\nExample:\n\n```\n- name: boot all nodes from the local disk\n  hosts: warewulf_node\n  local_action: warewulf node={{inventory_hostname}} bootlocal=EXIT\n```\n\nThis is equivalent to (though rather slower than) `wwsh provision set --bootlocal=EXIT`.\n\nRequirements:\n\n* [Warewulf](http://warewulf.lbl.gov/trac), with properly configured and populated database\n* Run ansible (or, in the case of the module, remotely) on the Warewulf host\n* Perl modules: JSON, List::MoreUtils\n\n### Dynamic inventory\n\nWhen used as a dynamic inventory script (i.e., called with `--list` or `--host HOST`), `warewulf.pl` generates a list of hosts based on Warewulf's node database and vnfs list.\n\nIt generates the following host groups:\n\n* warewulf_node: all nodes\n* enabled: enabled nodes\n* one per warewulf cluster\n* one per warewulf group\n* warewulf_vnfs: all VNFS images (using chroot)\n\nIt provides the following host variables:\n\n* warewulf_domain\n* warewulf_netdevs: one key per interface, each with all defined values\n\n#### Alternate Haskell version\n\nThere is also a Haskell application that provides equivalent dynamic inventory functionality.\nIt gets information from \"wwsh node print\" and \"wwsh vnfs list\", but otherwise behaves similarly to the perl version.\nThere is probably no reason to use it.\n\n### Module\n\nAs a module, `warewulf.pl` allows various interactions with the warewulf database.\nYou must pass one of the search arguments (`node`, `vnfs`, `bootstrap`, `file`) to specify which objects to operate on.\nThe argument is a name or list of name patterns by default (but you can search on other fields using `lookup=FIELD`.\nYou may then additionally specify parameters to set values or take actions.\nGenerally this corresponds to the `wwsh` interface.\n\n* node=ITEM\n   * nodename=STR\n   * cluster=STR\n   * domain=STR\n   * groups=LIST\n   * groupadd=LIST\n   * groupdel=LIST\n   * netdev=STR, netadd=STR, netdel=STR\n      * netrename=STR\n      * hwaddr=STR\n      * hwprefix=STR\n      * ipaddr=STR\n      * netmask=STR\n      * network=STR\n      * gateway=STR\n      * fqdn=STR\n      * mtu=STR\n   * enabled=BOOL\n   * bootstrapid=STR\n   * vnfsid=STR\n   * fileids=LIST\n   * fileidadd=LIST\n   * fileiddel=LIST\n   * files=LIST\n   * fileadd=LIST\n   * filedel=LIST\n   * console=STR\n   * kargs=LIST\n   * pxelinux=STR\n   * master=LIST\n   * postnetdown=BOOL\n   * preshell=BOOL\n   * postshell=BOOL\n   * selinux=DISABLED|ENABLED|ENFORCED\n   * bootlocal=UNDEF|NORMAL|EXIT\n   * ipmi_ipaddr=STR\n   * ipmi_netmask=STR\n   * ipmi_username=STR\n   * ipmi_password=STR\n   * ipmi_uid=STR\n   * ipmi_proto=STR\n   * ipmi_autoconfig=STR\n   * ipmi=COMMAND\n* vnfs\n   * name=STR\n   * checksum=STR\n   * chroot=STR\n   * size=STR\n   * vnfs_import=FILE\n   * vnfs_export=FILE\n* bootstrap\n   * name=STR\n   * checksum=STR\n   * size=STR\n   * bootstrap_import=FILE\n   * bootstrap_export=PATH\n   * delete_local_bootstrap=1\n   * build_local_bootstrap=1\n* file\n   * name=STR\n   * mode=STR\n   * checksum=STR\n   * uid=STR\n   * gid=STR\n   * size=STR\n   * path=STR\n   * format=STR\n   * interpreter=STR\n   * origin=STR\n   * sync=1\n   * file_import=FILE\n   * file_export=FILE\n* dhcp=update|restart\n* pxe=update|delete\n\nAdditionally, you can specify `new=1` to create the object if it none exists, or `delete=1` to delete matching objects.\nFinally, if you specify `get=1` the final values of all matching objects will be included in the result, with all properties.\nFor example, `warewulf node=node01 get=1` may return:\n\n```\n{\n   \"changed\" : 0,\n   \"node\" : {\n      \"node01\" : {\n         \"_id\" : \"1\",\n         \"_type\" : \"node\",\n         \"nodename\" : \"node01\",\n         \"name\" : [\"node01\"],\n         \"bootstrapid\" : \"2\",\n         \"vnfsid\" : \"3\"\n         \"fileids\" : [\"4\", \"5\"],\n         \"netdevs\" : {\n            \"eth0\" : {\n               \"name\" : \"eth0\",\n               \"netmask\" : \"255.255.255.0\",\n               \"ipaddr\" : \"10.0.0.1\"\n            }\n         },\n         \"_ipaddr\" : [\"10.0.0.1\"],\n         \"bootlocal\" : 0,\n         \"bootloader\" : \"sda\",\n         \"diskpartition\" : \"sda\",\n         \"diskformat\" : [\"sda1\", \"sda2\"],\n         \"filesystems\" : [\n            \"mountpoint=/:dev=sda1:type=ext4:size=fill\",\n            \"dev=sda2:type=swap:size=2048\"\n         ]\n      }\n   }\n}\n```\n\nSince this module expects to run on the Warewulf server, often it should be used with `local_action` delegation.\n\n## Module for Slurm workload manager\n\nThe python module `slurm.py` provides an interface to [Slurm](https://slurm.schedmd.com/).\nCurrently it provides an interface to `sacctmgr` functionality to manage users and accounts.\nSee the documentation within the module.\n\n## Module for Bright Cluster module\n\nThe python module `bright.py` provides an interface to [Bright Cluster Manager](https://www.brightcomputing.com/documentation) configuration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylex%2Fansible-hpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdylex%2Fansible-hpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylex%2Fansible-hpc/lists"}