vnode.ypserver
Ansible ロール: ypserver
このロールは、OpenBSDおよび他のBSD*オペレーティングシステムの一部であるYP/NISサーバーをインストールして設定します。 現在、このロールはOpenBSDのみをサポートしており、近い将来にFreeBSDとNetBSDのサポートを追加する予定です。
必要に応じて、このロールはシステムドキュメントを参照します。例として、yp(8)
のマニュアルページがあります。
要件
操作
このロールを使用するためには、外部のロールやモジュールは必要ありません。
テストと開発
テストと開発のために、このロールは以下の外部ツールに依存します:
- Vagrant(VirtualBoxまたはVMWareプロバイダーをサポート)
- VagrantCloud(具体的には、
generic/openbsd6
ボックス)
ロール変数
利用可能な変数は以下にリストされています。デフォルト値を含みます(defaults/main.yml
を参照)。
すべての変数は実装されるべきです。実装されていない場合は、問題を報告してください。
必須変数
ロールを使用する際に設定する必要がある変数。
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)
を参照してください。
以下の例は、デュアルスタックネットワークにおけるmaster
およびslave
サーバーのアドレスを示しています。
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)](https://man.openbsd.org/securenet)
ファイルを代わりに作成しますが、こちらはより制限された形式です。ルールがこれらの制限を考慮していることを確認してください。
必ずスレーブサーバーとYP/NISにアクセスする必要のあるクライアントも含めてください。たとえば、ローカルホスト、1つのスレーブサーバーslave
、および192.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
が正しく設定されていることを確認してください。
ypserver_unsecure: false
OpenBSDやFreeBSDクライアントのみを提供する場合は、false
のままにすることをお勧めします。
true
に設定すると、passwd
マップに(暗号化された)パスワードエントリが含まれます。すべての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
を作成します。これにより、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"
依存関係
なし。
例のプレイブック
以下は、master
とslave
の2つのサーバーでシンプルなYP/NISドメインを作成する例です。ドメインは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
著者情報
このロールは2020年にRogier Kriegerによって作成されました。