A list of legacy roles.

GET /api/v1/roles/?format=api&page=3648
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 37865,
    "next": "http://galaxy.ansible.com/api/v1/roles/?format=api&page=3649",
    "previous": "http://galaxy.ansible.com/api/v1/roles/?format=api&page=3647",
    "results": [
        {
            "id": 42054,
            "upstream_id": null,
            "created": "2025-12-10T20:42:25.722162Z",
            "modified": "2026-10-30T16:49:34.610629Z",
            "imported": "2026-10-30T16:49:34.548875",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-etcd",
            "github_branch": "main",
            "commit": "bfbeb9988cc59027252c52ff3150e9046cb99c98",
            "commit_message": "Pin Python 3.13 for the Galaxy import (#10)\n\npython-version '3.x' now gives Python 3.15, on which ansible-galaxy fails to start\n(AttributeError: module 'dataclasses' has no attribute '_is_type').\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "etcd",
            "description": "etcd is a distributed reliable key-value store for the most critical data of a distributed system.§\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-etcd",
                    "original_name": "ansible-role-etcd"
                },
                "tags": [
                    "etcd",
                    "consensus",
                    "keyval"
                ],
                "versions": [
                    {
                        "id": "8b5fb9bc-5bae-420d-b626-8f0bde9292da",
                        "name": "v0.2.1",
                        "release_date": "2026-10-30T17:46:48+01:00"
                    },
                    {
                        "id": "f60c8717-04b2-4862-b03a-92ab1d49b191",
                        "name": "v0.2.0",
                        "release_date": "2026-10-08T13:45:26+02:00"
                    },
                    {
                        "id": "367cc79a-f17b-48f2-97ec-b7b74c387d6c",
                        "name": "v0.1.1",
                        "release_date": "2026-05-08T14:32:46+02:00"
                    }
                ]
            },
            "download_count": 544
        },
        {
            "id": 42055,
            "upstream_id": null,
            "created": "2025-12-10T21:32:37.322042Z",
            "modified": "2026-11-01T00:31:18.243151Z",
            "imported": "2026-11-01T00:31:18.175856",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-chainsmith",
            "github_branch": "main",
            "commit": "e97c21c56354b46c0f5b1cd8ad04282626bb5a13",
            "commit_message": "Remove the temporary output dir and config file (they hold the private keys) (#11)\n\n* Remove the temporary output dir and config file afterwards\n\nchainsmith writes the CA and the private keys to a temporary dir on the\ncontroller, and the role never removed it, nor the temporary config file.\nThe tasks after creating the dir now run in a block, and an always section\nremoves both, also when a task fails. A chainsmith_tmpdir set by the user is\nleft alone. The Molecule test checks that nothing is left on the controller.\n\nCo-Authored-By: Claude Opus 5.5 <[email protected]>\n\n* Remove the commented out debug tasks\n\nCo-Authored-By: Claude Opus 5.5 <[email protected]>\n\n---------\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "chainsmith",
            "description": "Chainsmith is a tool for generating tls chains with server and client certificates.\nThis role installs Chainsmith and runs it to generate and distribute a chain ready to be used by PostgreSQL for encryption in transit and authentication.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-chainsmith",
                    "original_name": "ansible-role-chainsmith"
                },
                "tags": [],
                "versions": [
                    {
                        "id": "7bfe7ef5-329f-4aea-87b3-88f798b0d5ef",
                        "name": "v0.2.4",
                        "release_date": "2026-11-01T00:20:47+00:00"
                    },
                    {
                        "id": "e2aa9a8a-fdbd-4445-ba03-52b8381e27eb",
                        "name": "v0.2.3",
                        "release_date": "2026-10-31T13:21:50+01:00"
                    },
                    {
                        "id": "e74b622a-8b76-491e-8fef-59619f93d06e",
                        "name": "v0.2.2",
                        "release_date": "2026-10-30T17:47:14+01:00"
                    },
                    {
                        "id": "f78b09a8-2955-43e3-9ba2-9671699276e4",
                        "name": "v0.2.1",
                        "release_date": "2026-10-08T17:07:31+02:00"
                    },
                    {
                        "id": "71d41f18-e87f-4a61-83e0-4ad59d6610ac",
                        "name": "v0.2.0",
                        "release_date": "2026-09-07T17:26:52+02:00"
                    },
                    {
                        "id": "79e1830a-3251-444b-9447-e0fa1149cd4d",
                        "name": "v0.1.1",
                        "release_date": "2026-05-08T14:21:14+02:00"
                    },
                    {
                        "id": "b2393e44-6606-4667-9e0c-e8f4cafdd327",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T16:58:50+02:00"
                    }
                ]
            },
            "download_count": 526
        },
        {
            "id": 42056,
            "upstream_id": null,
            "created": "2025-12-10T21:41:25.949118Z",
            "modified": "2026-10-30T16:49:46.581640Z",
            "imported": "2026-10-30T16:49:46.536951",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-firewall",
            "github_branch": "main",
            "commit": "bded86fa62a97679b37337c0729e2d78cd7906f9",
            "commit_message": "Pin Python 3.13 for the Galaxy import (#8)\n\npython-version '3.x' now gives Python 3.15, on which ansible-galaxy fails to start\n(AttributeError: module 'dataclasses' has no attribute '_is_type').\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "firewall",
            "description": "firewalld can be used to manage firewall confoguration on a linux vm.\nThis role configures the firewalld configuration for using PostgreSQL, etcd, stolon-proxy, etc.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-firewall",
                    "original_name": "ansible-role-firewall"
                },
                "tags": [
                    "firewall",
                    "firewalld",
                    "pgvillage"
                ],
                "versions": [
                    {
                        "id": "d51d9a44-a82c-404e-8f0a-b9888b6c6aa5",
                        "name": "v0.2.1",
                        "release_date": "2026-10-30T17:46:44+01:00"
                    },
                    {
                        "id": "df4d9e84-482b-44eb-afbb-81b6a8415dcc",
                        "name": "v0.2.0",
                        "release_date": "2026-10-09T16:50:27+02:00"
                    },
                    {
                        "id": "b10f0974-c345-44cf-9652-1b58e89d2465",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T17:21:03+02:00"
                    }
                ]
            },
            "download_count": 511
        },
        {
            "id": 42057,
            "upstream_id": null,
            "created": "2025-12-10T21:46:38.957769Z",
            "modified": "2026-10-31T22:04:24.017154Z",
            "imported": "2026-10-31T22:04:23.943891",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-keepalived",
            "github_branch": "main",
            "commit": "428df3e8589c1cb393ee6ea841419885ecf504e3",
            "commit_message": "Allow VRRP in firewalld, so the peers see each other (#16)\n\nkeepalived uses VRRP (IP protocol 112), which firewalld blocks by default.\nThe peers then don't see each other, and every peer takes the VIP (seen in\nthe PgVillage vagrant environment: all three router hosts had the VIP).\n\nNew keepalived_firewall_vrrp (default auto: when firewalld is running) and\nkeepalived_firewall_zone. The Molecule test now runs firewalld, so its VIP\nand failover checks only pass with VRRP allowed, and it checks the rule.\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "keepalived",
            "description": "Keepalivd is a tool to manage a VIP in a private datacenter setup.\nThis role installs and configured keepalived so that a VIP is allways available on one of the PgVillage machines.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-keepalived",
                    "original_name": "ansible-role-keepalived"
                },
                "tags": [
                    "keepalived"
                ],
                "versions": [
                    {
                        "id": "5cdd80b4-89fd-4e1e-bc9c-58f5b345cd42",
                        "name": "v0.3.3",
                        "release_date": "2026-10-31T23:02:32+01:00"
                    },
                    {
                        "id": "663eb73d-e159-4b9a-bc26-820279546ede",
                        "name": "v0.3.2",
                        "release_date": "2026-10-30T17:50:30+01:00"
                    },
                    {
                        "id": "3988ee7e-8e76-4148-8eb7-59d4a4ad1c4b",
                        "name": "v0.3.1",
                        "release_date": "2026-10-09T16:50:12+02:00"
                    },
                    {
                        "id": "cfbc3a9d-b9a9-498f-b99d-0d4f91a7dfa8",
                        "name": "v0.3.0",
                        "release_date": "2026-09-15T13:21:44+02:00"
                    },
                    {
                        "id": "62360256-6c69-4a50-8ce8-ad75b1b5ded6",
                        "name": "v0.2.0",
                        "release_date": "2026-06-08T15:19:15+02:00"
                    },
                    {
                        "id": "08ceb1d9-8404-4730-b343-59a83762d332",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T16:53:31+02:00"
                    }
                ]
            },
            "download_count": 513
        },
        {
            "id": 42058,
            "upstream_id": null,
            "created": "2025-12-10T21:47:04.382898Z",
            "modified": "2026-11-01T02:37:59.664459Z",
            "imported": "2026-11-01T02:37:59.597742",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-haproxy",
            "github_branch": "main",
            "commit": "29d7b05a6cdf04320336c55654a94e093b6ac910",
            "commit_message": "Make HAProxy work with SELinux enforcing (#12)\n\nOn EL9 with SELinux enforcing (Rocky 9.8, PGDG haproxy 3.4.7) HAProxy\ndidn't start: name_bind on the stats port and the frontends was denied, the\nroot master process couldn't create the stats socket (dac_override), and\nthe external-check scripts couldn't run (map on bash, search on the haproxy\nhome dir).\n\n- turn on the SELinux boolean haproxy_connect_any (haproxy_selinux_connect_any)\n- the folder of haproxy_socket: root:haproxy, 0750\n- my-haproxy 1.1: map on bin_t and shell_exec_t, search on user_home_dir_t;\n  the module source is kept in haproxy_selinux_dir and the module is\n  reinstalled when it changes, so existing hosts get 1.1 over 1.0\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "haproxy",
            "description": "HAProxy can be used to proxy tcp connectons including PostgreSQL traffic.\nThis role configures HAProxy so that PostgreSQL traffic can be proxies to PgVillage database servers.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-haproxy",
                    "original_name": "ansible-role-haproxy"
                },
                "tags": [
                    "haproxy"
                ],
                "versions": [
                    {
                        "id": "94401819-562a-4308-988a-a83ac52b0566",
                        "name": "v0.3.4",
                        "release_date": "2026-11-01T02:52:20+01:00"
                    },
                    {
                        "id": "98bdebff-a4fd-4263-9bb8-e09a8b78779e",
                        "name": "v0.3.3",
                        "release_date": "2026-11-01T01:20:39+01:00"
                    },
                    {
                        "id": "67ede7b1-9832-40d9-b000-71b6110aa28b",
                        "name": "v0.3.2",
                        "release_date": "2026-10-30T17:46:38+01:00"
                    },
                    {
                        "id": "b29464f8-db96-4179-a13b-349de9d42bbc",
                        "name": "v0.3.1",
                        "release_date": "2026-10-09T16:50:20+02:00"
                    },
                    {
                        "id": "987d7e63-7410-4691-b988-3b637609d002",
                        "name": "v0.3.0",
                        "release_date": "2026-09-18T11:04:28+02:00"
                    },
                    {
                        "id": "197f3357-33e9-45a9-88a6-dda8a9d485c2",
                        "name": "v0.2.0",
                        "release_date": "2026-06-08T15:19:19+02:00"
                    },
                    {
                        "id": "a4dbf612-bcce-4a4b-93a5-a7d9309ce30b",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T16:54:40+02:00"
                    }
                ]
            },
            "download_count": 513
        },
        {
            "id": 42059,
            "upstream_id": null,
            "created": "2025-12-10T21:49:02.153091Z",
            "modified": "2026-11-01T02:37:49.691383Z",
            "imported": "2026-11-01T02:37:49.580861",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-linux",
            "github_branch": "main",
            "commit": "15a78882fd15945bf8249a2a3457f289e773226b",
            "commit_message": "Refresh the dnf metadata once, not for every package (#40)\n\nInstall packages had update_cache on every item of its loop, so dnf reloaded\nthe metadata of all repositories (EPEL via metalink, PGDG, PgVillage) for\nevery package. On EL9 that took about a minute per package: 944s for the\npackage task of a PgVillage database host, also when everything was already\ninstalled. Refresh once before the loop instead. Packages are still\ninstalled one per call.\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "linux",
            "description": "This role manages all linux tasks for a PgVillage PostgreSQL cluster.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-linux",
                    "original_name": "ansible-role-linux"
                },
                "tags": [],
                "versions": [
                    {
                        "id": "6fe0ceb5-0e11-4b90-8a1b-c67a8c0fd525",
                        "name": "v0.3.9",
                        "release_date": "2026-11-01T01:55:24+00:00"
                    },
                    {
                        "id": "f562328c-f645-434c-9df1-da1806979eb9",
                        "name": "v0.3.8",
                        "release_date": "2026-10-31T17:06:40+00:00"
                    },
                    {
                        "id": "186d475c-559b-454d-9180-bfd4f8955871",
                        "name": "v0.3.7",
                        "release_date": "2026-10-30T17:42:53+01:00"
                    },
                    {
                        "id": "c41edf42-3c1a-4b4f-9a38-2238b0b8e5ca",
                        "name": "v0.3.6",
                        "release_date": "2026-10-30T16:23:43+00:00"
                    },
                    {
                        "id": "a4f9c2a1-14f5-411c-bb88-95ed85872d54",
                        "name": "v0.3.5",
                        "release_date": "2026-10-08T13:38:48+02:00"
                    },
                    {
                        "id": "f01958cf-347c-45a4-bfde-becd80453dbb",
                        "name": "v0.3.4",
                        "release_date": "2026-09-07T17:27:15+02:00"
                    },
                    {
                        "id": "87f54749-16fa-4f4b-96d5-e9a5770ab44f",
                        "name": "v0.3.3",
                        "release_date": "2026-07-06T14:26:53+02:00"
                    },
                    {
                        "id": "016b38bc-484f-458d-8172-0d3df632a38f",
                        "name": "v0.3.2",
                        "release_date": "2026-06-17T14:03:41+02:00"
                    },
                    {
                        "id": "8c0f5e25-8c93-4ffa-ad23-9b0e49bdd5bf",
                        "name": "v0.3.1",
                        "release_date": "2026-06-10T09:11:15+02:00"
                    },
                    {
                        "id": "dba50444-7817-4be8-92a2-5b00e66bbf63",
                        "name": "v0.3.0",
                        "release_date": "2026-06-09T16:55:06+02:00"
                    },
                    {
                        "id": "d4412188-1297-4a50-b7c7-05a63db93f14",
                        "name": "v0.2.0",
                        "release_date": "2026-06-09T15:15:15+02:00"
                    }
                ]
            },
            "download_count": 520
        },
        {
            "id": 42060,
            "upstream_id": null,
            "created": "2025-12-10T21:50:54.913017Z",
            "modified": "2026-10-31T19:44:05.596900Z",
            "imported": "2026-10-31T19:44:05.513866",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-minio",
            "github_branch": "main",
            "commit": "a49e5963aec0f26cf007d27584848550e3423f5a",
            "commit_message": "Add molecule tests and run them in CI (#27)\n\nThe MinIO community binaries are no longer published, so test the role with\nminio_use_rustfs on Rocky Linux 9 and 10, with RustFS from the pgvillage\npackage repo, and check the service, TLS, data directory and buckets.\n\nInstall the RustFS client as rustfs-cli: the name rc installed the Plan 9\nrc shell from EPEL as /usr/bin/rc, so creating the buckets failed.\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "minio",
            "description": "Minio is a tool to create a S3 bucket out of a filesystem.\nMinio can do a whole lot more, but this is what Minio is to PgVillage.\nThis role installs and configures minio.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-minio",
                    "original_name": "ansible-role-minio"
                },
                "tags": [
                    "system",
                    "minio",
                    "storage",
                    "objectstorage",
                    "s3"
                ],
                "versions": [
                    {
                        "id": "5512edf4-1c4b-42fb-b528-e28e7275cfde",
                        "name": "v0.3.2",
                        "release_date": "2026-10-31T12:54:52+01:00"
                    },
                    {
                        "id": "6ddd42e0-11bc-4ab5-8852-9552b021453d",
                        "name": "v0.3.1",
                        "release_date": "2026-10-30T17:45:58+01:00"
                    },
                    {
                        "id": "a3b3638d-0178-407b-ae36-35a3a87dc741",
                        "name": "v0.3.0",
                        "release_date": "2026-10-08T14:46:58+02:00"
                    },
                    {
                        "id": "d0cca8c8-4753-4ae4-9944-2a3b60d15e5f",
                        "name": "v0.2.1",
                        "release_date": "2026-06-09T12:57:34+02:00"
                    },
                    {
                        "id": "69c193d6-2fc8-40d5-83cd-1fa14e7da828",
                        "name": "v0.2.0",
                        "release_date": "2026-06-08T15:18:58+02:00"
                    },
                    {
                        "id": "246cd93e-92a8-45e3-8961-11c1211784a9",
                        "name": "v0.1.1",
                        "release_date": "2026-05-08T14:43:24+02:00"
                    },
                    {
                        "id": "c7ce2637-a9b1-47af-8cba-28113d0b1a87",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T15:55:49+02:00"
                    }
                ]
            },
            "download_count": 500
        },
        {
            "id": 42061,
            "upstream_id": null,
            "created": "2025-12-10T21:53:16.875731Z",
            "modified": "2026-11-04T13:15:34.040195Z",
            "imported": "2026-11-04T13:15:33.960353",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-nagios",
            "github_branch": "main",
            "commit": "79bbbda9772070c08d841a3a54a2966908df9894",
            "commit_message": "Merge pull request #10 from pgvillage/feat/multi-instance-fixes\n\nfeat: multicluster support",
            "name": "nagios",
            "description": "Nagios is a tool to monitor endpoints, such as PostgreSQL systems.\nThis role installs postgres-nrpe and additionally adds configuration to configure endpoint monitoring.\nAnd it can enable endpoint monitoring on a cental Nagios monitoring system.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-nagios",
                    "original_name": "ansible-role-nagios"
                },
                "tags": [],
                "versions": [
                    {
                        "id": "b0649f08-8008-4155-acc6-36b15a91444c",
                        "name": "v0.4.0",
                        "release_date": "2026-11-04T14:05:53+01:00"
                    },
                    {
                        "id": "ececc8d9-a3f2-4132-ac62-44acb78e1ee9",
                        "name": "v0.3.1",
                        "release_date": "2026-10-30T17:44:54+01:00"
                    },
                    {
                        "id": "5988ac9f-a360-480a-89b8-5ba3a98444af",
                        "name": "v0.3.0",
                        "release_date": "2026-10-09T16:50:06+02:00"
                    },
                    {
                        "id": "45d5cb5d-c61f-4933-ab24-1699baad8b15",
                        "name": "v0.2.0",
                        "release_date": "2026-06-08T15:18:43+02:00"
                    },
                    {
                        "id": "cfc908ef-7d4b-499d-b822-8979179259c4",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T17:10:52+02:00"
                    }
                ]
            },
            "download_count": 506
        },
        {
            "id": 42062,
            "upstream_id": null,
            "created": "2025-12-10T22:01:17.688079Z",
            "modified": "2026-10-30T16:49:34.663871Z",
            "imported": "2026-10-30T16:49:34.609146",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-pgquartz",
            "github_branch": "main",
            "commit": "8b38172e1433012f5dedded16ecda9dc0ca60103",
            "commit_message": "Pin Python 3.13 for the Galaxy import (#9)\n\npython-version '3.x' now gives Python 3.15, on which ansible-galaxy fails to start\n(AttributeError: module 'dataclasses' has no attribute '_is_type').\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "pgquartz",
            "description": "PgQuartz is a tool to define and execute PostgreSQL jobs.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-pgquartz",
                    "original_name": "ansible-role-pgquartz"
                },
                "tags": [
                    "postgres",
                    "job",
                    "parallel",
                    "step",
                    "shell",
                    "query"
                ],
                "versions": [
                    {
                        "id": "33577992-9b0d-4d22-88c2-6507658a42ec",
                        "name": "v0.3.1",
                        "release_date": "2026-10-30T17:45:22+01:00"
                    },
                    {
                        "id": "38a66e4b-2285-45fc-95f9-694a940d9d13",
                        "name": "v0.3.0",
                        "release_date": "2026-10-09T16:49:49+02:00"
                    },
                    {
                        "id": "b8d69855-34e4-4c0a-8d61-058b5a78202b",
                        "name": "v0.2.0",
                        "release_date": "2026-06-08T15:19:10+02:00"
                    },
                    {
                        "id": "77d94ee3-818d-4e2a-a904-dbde945b161f",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T17:15:41+02:00"
                    }
                ]
            },
            "download_count": 500
        },
        {
            "id": 42063,
            "upstream_id": null,
            "created": "2025-12-10T22:02:22.750372Z",
            "modified": "2026-11-01T00:47:47.605649Z",
            "imported": "2026-11-01T00:47:47.548696",
            "github_user": "pgvillage",
            "username": "pgvillage",
            "github_repo": "ansible-role-pgfga",
            "github_branch": "main",
            "commit": "34b1dcf10ee5d7238b0a0f8a2b8d6c6bae5c3be8",
            "commit_message": "Set up pgfga's own login: ident over the socket, user created by the role (#12)\n\n* Set up pgfga's own login: ident over the socket, user created by the role\n\npgfga runs as pgfga_osuser and now connects over the unix socket as\npgfga_pg_user (default: the same name), with ident/peer authentication. The\nconnection is the default postgresql_dsn (pgfga_default_config: host, port,\nuser, dbname), and pgfga_config is merged over it. The role creates\npgfga_pg_user (LOGIN SUPERUSER) when it doesn't exist, as the PostgreSQL OS\nuser over the socket, and skips that on a standby.\n\nThe Molecule test no longer creates the user in prepare and uses the default\nconnection; verify checks the user and the deployed connection.\n\nCo-Authored-By: Claude Opus 5.5 <[email protected]>\n\n* Molecule: compare the port as a string (Ansible templates \"5432\" to a number)\n\nCo-Authored-By: Claude Opus 5.5 <[email protected]>\n\n* Create the pgfga user with community.postgresql.postgresql_user\n\nInstead of psql: postgresql_query checks whether PostgreSQL is a standby,\nand postgresql_user creates pgfga_pg_user (LOGIN, SUPERUSER) on the primary.\nThe role installs psycopg for these modules (pgfga_python_packages:\npython3-psycopg2, python313-psycopg2 on zypper) and requires\ncommunity.postgresql.\n\nCo-Authored-By: Claude Opus 5.5 <[email protected]>\n\n---------\n\nCo-authored-by: Sebastiaan Mannem <[email protected]>\nCo-authored-by: Claude Opus 5.5 <[email protected]>",
            "name": "pgfga",
            "description": "PgFga is a tool to manage PostgreSQL resources, such as databases, extensions, users and roles.\nOne of the fine things is that PgFga can manage users from LDAP groups.\n",
            "summary_fields": {
                "dependencies": [],
                "namespace": {
                    "id": 25023,
                    "name": "pgvillage",
                    "avatar_url": "https://github.com/pgvillage.png"
                },
                "provider_namespace": {
                    "id": 34480,
                    "name": "pgvillage",
                    "pulp_href": "/api/pulp/api/v3/pulp_ansible/namespaces/34480/"
                },
                "repository": {
                    "name": "ansible-role-pgfga",
                    "original_name": "ansible-role-pgfga"
                },
                "tags": [
                    "postgres",
                    "ldap",
                    "user",
                    "role",
                    "database",
                    "extension"
                ],
                "versions": [
                    {
                        "id": "8473b1af-8045-4d72-bc38-d378eace25e6",
                        "name": "v0.3.2",
                        "release_date": "2026-11-01T00:46:45+00:00"
                    },
                    {
                        "id": "47d4415f-62cc-4df7-8a0a-7db2125472c4",
                        "name": "v0.3.1",
                        "release_date": "2026-10-30T17:50:36+01:00"
                    },
                    {
                        "id": "127e5b63-b4ac-40e7-bf00-22db921c8378",
                        "name": "v0.3.0",
                        "release_date": "2026-10-09T16:49:55+02:00"
                    },
                    {
                        "id": "22fb9af8-d386-4984-a225-47f3467b22a4",
                        "name": "v0.2.0",
                        "release_date": "2026-06-08T15:19:12+02:00"
                    },
                    {
                        "id": "05812a50-1e09-4839-8db9-50262d052caa",
                        "name": "v0.1.0",
                        "release_date": "2026-05-07T17:19:50+02:00"
                    }
                ]
            },
            "download_count": 507
        }
    ]
}