{"id":15517559,"url":"https://github.com/bodgit/puppet-yp","last_synced_at":"2025-10-09T04:04:21.957Z","repository":{"id":35625320,"uuid":"39899207","full_name":"bodgit/puppet-yp","owner":"bodgit","description":"Puppet Module for managing YP/NIS","archived":false,"fork":false,"pushed_at":"2021-06-18T22:02:48.000Z","size":220,"stargazers_count":0,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T04:03:42.094Z","etag":null,"topics":["ldap","nis","puppet"],"latest_commit_sha":null,"homepage":"https://forge.puppet.com/bodgit/yp","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bodgit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-29T14:51:57.000Z","updated_at":"2021-06-18T22:02:50.000Z","dependencies_parsed_at":"2022-08-17T21:55:26.700Z","dependency_job_id":null,"html_url":"https://github.com/bodgit/puppet-yp","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/bodgit/puppet-yp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bodgit%2Fpuppet-yp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bodgit%2Fpuppet-yp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bodgit%2Fpuppet-yp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bodgit%2Fpuppet-yp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bodgit","download_url":"https://codeload.github.com/bodgit/puppet-yp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bodgit%2Fpuppet-yp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000755,"owners_count":26082921,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ldap","nis","puppet"],"created_at":"2024-10-02T10:13:46.817Z","updated_at":"2025-10-09T04:04:21.940Z","avatar_url":"https://github.com/bodgit.png","language":"Ruby","readme":"# yp\n\n[![Build Status](https://travis-ci.org/bodgit/puppet-yp.svg?branch=master)](https://travis-ci.org/bodgit/puppet-yp)\n[![Codecov](https://img.shields.io/codecov/c/github/bodgit/puppet-yp)](https://codecov.io/gh/bodgit/puppet-yp)\n[![Puppet Forge version](http://img.shields.io/puppetforge/v/bodgit/yp)](https://forge.puppetlabs.com/bodgit/yp)\n[![Puppet Forge downloads](https://img.shields.io/puppetforge/dt/bodgit/yp)](https://forge.puppetlabs.com/bodgit/yp)\n[![Puppet Forge - PDK version](https://img.shields.io/puppetforge/pdk-version/bodgit/yp)](https://forge.puppetlabs.com/bodgit/yp)\n\n#### Table of Contents\n\n1. [Description](#description)\n2. [Setup - The basics of getting started with yp](#setup)\n    * [What yp affects](#what-yp-affects)\n    * [Setup requirements](#setup-requirements)\n    * [Beginning with yp](#beginning-with-yp)\n3. [Usage - Configuration options and additional functionality](#usage)\n4. [Reference - An under-the-hood peek at what the module is doing and how](#reference)\n5. [Limitations - OS compatibility, etc.](#limitations)\n6. [Development - Guide for contributing to the module](#development)\n\n## Description\n\nThis module manages YP/NIS.\n\nThis module can configure the YP/NIS domain, manage the `ypbind` daemon to\nbind a client to a YP server and create and maintain master \u0026 slave YP servers\nusing `ypserv` and associated daemons. It can also in the special case of\nOpenBSD manage the `ypldap` daemon to fetch YP maps from LDAP.\n\n## Setup\n\n### What yp affects\n\nOn OpenBSD this module will add the traditional `+::...` entries to the bottom\nof the `/etc/passwd` and `/etc/group` files.\n\n### Setup Requirements\n\nYou will need to manage the RPC portmapper by using\n[bodgit/portmap](https://forge.puppet.com/bodgit/portmap) or by other means.\n\nOn Linux you will need to adjust the `/etc/nsswitch.conf` file and PAM\nconfiguration yourself. Both\n[trlinkin/nsswitch](https://forge.puppet.com/trlinkin/nsswitch)\nand\n[herculesteam/augeasproviders_pam](https://forge.puppet.com/herculesteam/augeasproviders_pam)\nare known to work and used in the examples and tests in this module.\n\n### Beginning with yp\n\nBind a client to a YP domain using three YP servers:\n\n```puppet\ninclude ::portmap\n\nclass { '::yp':\n  domain =\u003e 'example.com',\n}\n\nclass { '::yp::bind':\n  domain  =\u003e 'example.com',\n  servers =\u003e ['192.0.2.1', '192.0.2.2', '192.0.2.3'],\n}\n\nClass['::portmap'] ~\u003e Class['::yp::bind'] \u003c~ Class['::yp']\n\nif $::osfamily == 'RedHat' {\n  class { '::nsswitch':\n    passwd    =\u003e ['files', 'nis', 'sss'],\n    shadow    =\u003e ['files', 'nis', 'sss'],\n    group     =\u003e ['files', 'nis', 'sss'],\n    hosts     =\u003e ['files', 'nis', 'dns'],\n    netgroup  =\u003e ['files', 'nis', 'sss'],\n    automount =\u003e ['files', 'nis'],\n    require   =\u003e Class['::yp::bind'],\n  }\n\n  pam { 'nis':\n    ensure    =\u003e present,\n    service   =\u003e 'system-auth-ac',\n    type      =\u003e 'password',\n    control   =\u003e 'sufficient',\n    module    =\u003e 'pam_unix.so',\n    arguments =\u003e [\n      'md5',\n      'shadow',\n      'nis',\n      'nullok',\n      'try_first_pass',\n      'use_authtok',\n    ],\n    require   =\u003e Class['::yp::bind'],\n  }\n}\n```\n\n## Usage\n\nCreate a standalone YP server:\n\n```puppet\ninclude ::portmap\n\nclass { '::yp':\n  domain =\u003e 'example.com',\n}\n\nclass { '::yp::serv':\n  domain =\u003e 'example.com',\n}\n\nClass['::portmap'] ~\u003e Class['::yp::serv'] \u003c- Class['::yp']\n```\n\nCreate a master YP server with two additional slaves:\n\n```puppet\ninclude ::portmap\n\nclass { '::yp':\n  domain =\u003e 'example.com',\n}\n\nclass { '::yp::serv':\n  domain =\u003e 'example.com',\n  maps   =\u003e [\n    'passwd.byname',\n    'passwd.byuid',\n    'group.bygid',\n    'group.byname',\n    'netid.byname',\n  ],\n  slaves =\u003e [\n    '192.0.2.2',\n    '192.0.2.3',\n  ],\n}\n\nClass['::portmap'] ~\u003e Class['::yp::serv'] \u003c- Class['::yp']\n```\n\nCreate a slave YP server pointing at the above master YP server:\n\n```puppet\ninclude ::portmap\n\nclass { '::yp':\n  domain =\u003e 'example.com',\n}\n\nclass { '::yp::serv':\n  domain =\u003e 'example.com',\n  maps   =\u003e [\n    'passwd.byname',\n    'passwd.byuid',\n    'group.bygid',\n    'group.byname',\n    'netid.byname',\n  ],\n  master =\u003e '192.0.2.1',\n}\n\nclass { '::yp::bind':\n  domain =\u003e 'example.com',\n}\n\nClass['::portmap'] ~\u003e Class['::yp::serv'] \u003c- Class['::yp']\nClass['::yp::serv'] -\u003e Class['::yp::bind'] \u003c~ Class['::yp']\n```\n\nFor OpenBSD only, set up `ypldap` to create YP maps from an LDAP server and\nalso bind to it. This is the equivalent to PAM/LDAP on Linux:\n\n```puppet\ninclude ::portmap\n\nclass { '::yp::ldap':\n  domain      =\u003e 'example.com',\n  directories =\u003e {\n    'dc=example,dc=com' =\u003e {\n      bind_dn =\u003e 'cn=ypldap,dc=example,dc=com',\n      bind_pw =\u003e 'password',\n      server  =\u003e '192.0.2.1',\n    },\n  },\n}\n\nclass { '::yp':\n  domain =\u003e 'example.com',\n}\n\nclass { '::yp::bind':\n  domain =\u003e 'example.com',\n}\n\nClass['::portmap'] ~\u003e Class['::yp::ldap'] ~\u003e Class['::yp::bind'] \u003c~ Class['::yp']\n```\n\n## Reference\n\nThe reference documentation is generated with\n[puppet-strings](https://github.com/puppetlabs/puppet-strings) and the latest\nversion of the documentation is hosted at\n[https://bodgit.github.io/puppet-yp/](https://bodgit.github.io/puppet-yp/)\nand available also in the [REFERENCE.md](https://github.com/bodgit/puppet-yp/blob/master/REFERENCE.md).\n\n## Limitations\n\nThis module was primarily written with deploying `ypldap` on OpenBSD in mind\nhowever to do that I realised I had classes for everything bar `ypserv` so I\nadded that and made sure it was portable enough to work on one other OS. It\nworks however I don't expect many people to still be using traditional YP/NIS.\n\nThis module has been built on and tested against Puppet 5 and higher.\n\nThe module has been tested on:\n\n* RedHat Enterprise Linux 6/7\n* OpenBSD 6.0/6.1/6.2/6.3\n\n## Development\n\nThe module relies on [PDK](https://puppet.com/docs/pdk/1.x/pdk.html) and has\nboth [rspec-puppet](http://rspec-puppet.com) and\n[beaker-rspec](https://github.com/puppetlabs/beaker-rspec) tests. Run them\nwith:\n\n```\n$ bundle exec rake spec\n$ PUPPET_INSTALL_TYPE=agent PUPPET_INSTALL_VERSION=x.y.z bundle exec rake beaker:\u003cnodeset\u003e\n```\n\nPlease log issues or pull requests at\n[github](https://github.com/bodgit/puppet-yp).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbodgit%2Fpuppet-yp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbodgit%2Fpuppet-yp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbodgit%2Fpuppet-yp/lists"}