vnode.ypserver

Ansible角色:ypserver

CI

该角色安装和配置YP/NIS服务器,该服务器是OpenBSD和其他BSD*操作系统的一部分。 目前,该角色仅支持OpenBSD,未来计划添加对FreeBSD和NetBSD的支持。

在适用的情况下,该角色参考系统文档,例如yp(8)手册。

需求

操作

使用此角色不需要外部角色和/或模块。

测试与开发

对于测试和开发,此角色依赖以下外部工具:

  • Vagrant(支持VirtualBox或VMWare提供程序)
  • VagrantCloud(特别是generic/openbsd6这个盒子)

角色变量

可用的变量如下所示,包括其默认值(请参阅defaults/main.yml)。 所有这些 被实现。如果发现没有实现,请在GitHub仓库中提交问题

必需的变量

使用该角色时,需要设置以下变量。

ypserver_domain: ""

必需,必须有一个有效的NIS域名。这是您打算配置的NIS域的名称。

ypserver_master: ""

必需,必须列出该域可以访问的NIS主服务器。

ypserver_servers: []

必需,必须列出该域的NIS服务器列表。此列表 必须 包括 ypserver_master 服务器。 注意:如果您只想设置从服务器(针对已存在的主服务器),请确保主服务器 不是 您应用此角色的主机组的一部分。

ypserver_serverinfo: {}

必需,但如果该域的NIS服务器可以在DNS或/etc/hosts中找到,则可以为空。

如果不为空,该字典列出了该域服务器的IPv4和/或IPv6地址。然后,角色将填充/etc/hosts所需的行。如果无法访问或解析服务器,NIS代码将挂起。有关更多详细信息,请参见yp(8)

下面的示例列出了双栈网络中masterslave服务器的地址。

ypserver_serverinfo:
  master:
    - "192.0.2.1"
    - "2001:db8::111:1"
  slave:
    - "192.0.2.2"
    - "2001:db8::111:2"
ypserver_ypservacl: {}

必需,如果设置了ypserver_set_ypserveracl。该字典列出了ypserv.acl(5)文件的规则。此ACL文件允许限制对YP/NIS服务器的访问到适当的网络范围。 如果未设置ypserver_set_ypserveracl,则该变量将创建一个securenet(5) 文件,这是一种更有限的格式。请确保您的规则考虑到这些限制,并通过检查相关手册页来确认。

确保包含您的从服务器以及需要访问YP/NIS的客户端。例如,如果您希望允许本地主机、一个从服务器slave192.0.2.0/24网络客户端,您可以使用:

ypserver_ypservacl:
  - action: allow
    type: host
    host: "localhost"
  - action: allow
    type: host
    host: "master"
  - action: allow
    type: host
    host: "192.0.2.2"
    tag: "slave"
  - action: allow
    type: net
    host: "192.0.2.0"
    mask: "255.255.255.0"
    tag: "Clients"
  - action: deny
    type: all

可选变量

ypserver_usedns: true

指定YP/NIS映射可以使用DNS进行主机名查找。建议保持为true。设置为false时,请确保ypserver_serverinfo和/或ypserver_set_hosts设置正确,以便能够解析您的NIS服务器。

ypserver_unsecure: false

当仅为OpenBSD或FreeBSD客户端提供服务时,建议保持为false

如果设置为truepasswd映射将包含(加密的)密码条目。如果您所有的YP/NIS客户端都运行OpenBSD或FreeBSD,可以安全地将此变量设置为false。有关更多信息,请参见OpenBSD FAQ。请注意,此设置对于解决NIS固有的不安全性帮助不大。

ypserver_nopush: false

除非您需要在从服务器上更新映射的特定措施,否则建议保持为true

如果设置为true,主服务器上的更新映射将不会自动推送到从服务器。 在这种情况下,您需要以其他方式安排从服务器上的更新(例如,使用cron作业或rsync)。

ypserver_source_dir: '/etc'

NIS域的映射所服务的源目录。此目录需要在主服务器上存在,并包含在ypserver_source_maps变量中提到的文件。

ypserver_source_maps:
  passwd: 'master.passwd'
  group: 'group'

该字典列出NIS域主服务器提供给客户端的映射及其源文件。这些文件必须存在于主服务器的ypserver_source_dir目录中。有关其他支持的映射,请参见Makefile.yp(8)

ypserver_passwd_minuid:  1000
ypserver_passwd_maxuid: 32765
ypserver_group_mingid:   1000
ypserver_group_maxgid:  32765

这些变量表示包含在NIS映射中的用户名和组的下限/上限。这可以防止系统账户泄漏到映射中。

支持服务器上多个YP/NIS域的变量

该变量旨在允许在一个服务器上托管多个NIS域。这不是最初希望的用例,因此如果发现问题,请在GitHub上提交问题

ypserver_set_domainname: true

建议将其保持为true,作为您打算作为“主”(默认)域名的域。对于您希望在同一服务器上托管的其他NIS域,必须设置为false

其他设置

这些变量不是角色调用所必需的,默认值应该是可以的。

ypserver_set_hosts: false

如果设置为true,角色会将NIS服务器的IP信息添加到/etc/hosts文件中。这在域不使用DNS查找时通常是有用的(ypserver_usedns设置为false)。请注意,这确实需要ypserver_serverinfo变量中每个NIS服务器的IP信息。

ypserver_set_yppasswdd: false

启用yppasswd服务,允许主服务器上的用户在NIS映射中更改他们的密码。请注意,最近版本的OpenBSD(截至5.9)不再包含此功能。

ypserver_set_ypservacl: false

根据ypserv.acl(5) 文件创建ACL文件/var/yp/ypserv.acl,而不是创建securenet(5)文件。此ACL文件允许限制对YP/NIS服务器的访问到适当的网络范围。需要适当地设置ypserver_ypservacl变量。

ypserver_set_cronjob: true

建议保持为true,除非您需要/希望其他安排。设置定期的cron作业以更新域映射,并检查从服务器上缺失的映射。

作业名称 间隔 注释
更新YP域ypserver_ypdomain 每15分钟 在主服务器上
更新YP域ypserver_ypdomain 每小时的:05 在从服务器上

内部变量

这些变量在角色内部使用,不打算供用户修改。请自行承担修改这些变量的风险。通常,它们对应于底层操作系统中的硬编码值。

ypserver_ypdbdir: '/var/yp'
ypserver_ypdbdir_domain: "{{ ypserver_ypdbdir }}/{{ ypserver_domain }}"
ypserver_securenet: "{{ ypserver_ypdbdir }}/securenet"

依赖项

无。

示例剧本

下面是一个示例,用于创建一个简单的YP/NIS域,包含两个服务器masterslave。该域称为legacy。映射的源文件位于/etc/legacy中。

---
- hosts: ypservers
  roles:
    - role: vnode.ypserver
      vars:
        ypserver_ypdomain: legacy
        ypserver_master: master
        ypserver_servers: "{{ groups['ypservers'] }}"
        ypserver_source_dir: "/etc/{{ ypserver_domain }}"

许可证

MIT

作者信息

该角色由Rogier Krieger于2020年创建。

关于项目

Install and configure a YP/NIS server

安装
ansible-galaxy install vnode.ypserver
许可证
mit
下载
212
拥有者