管理用户

用户、Sudo、SSH、可达性验证的配置与准备

Pigsty 需要一个在所有被管理节点上具有免密 SSHSudo 权限的操作系统 用户


用户

通常我们会选择 dbaadmin 这样的名称,但避免使用 rootpostgres


提供密码

如果您可以接受每个 sshsudo 命令的密码提示,则免密要求是可选的。


创建管理员用户

在服务器置备阶段,用户/供应商有责任创建并交付这样的管理员用户。 但如果您没有这样的管理员用户,或者该用户受到限制,您可以使用 Pigsty 本身创建一个:


Sudo

所有 管理员用户 都应该在所有被管理节点上具有免密 sudo 权限。

如果您想从头开始配置具有免密 sudo 权限的管理员用户:

Ansible 依赖 sudo 在被管理节点上以 root 权限执行命令。 因此,在 sudo 不可用的环境中(比如在精简容器内),您可能需要先安装 sudo


SSH

您的当前用户应该能够以相应的管理员用户身份免密 SSH 访问所有被管理节点。

您的当前用户可以是管理员用户本身,但不是必需的,只要您能以管理员用户身份 SSH。

SSH 配置是 Linux 101,但我们会在此处介绍基础知识,以防您不熟悉:

生成 SSH 密钥

如果您没有 SSH 密钥对,请生成一个:

ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa -q

如果您没有密钥对,Pigsty 会在 bootstrap 阶段为您完成此操作。

复制 SSH 密钥

您需要将生成的公钥分发到远程(和本地)服务器,并将其放入所有节点上管理员用户的 ~/.ssh/authorized_keys 文件中。 可以使用 ssh-copy-id 工具。

ssh-copy-id <ip>                        # 交互式密码输入
sshpass -p <password> ssh-copy-id <ip>  # 非交互式(谨慎使用)

使用别名

当无法直接 SSH 访问时(由于跳板机、其他端口、凭据等),考虑在 ~/.ssh/config 中配置 SSH 别名:

Host meta
    HostName 10.10.10.10
    User dba                      # 远程上不同的用户
    IdentityFile /etc/dba/id_rsa  # 不是普通密钥
    Port 24                       # 不是众所周知的端口

并在清单中引用别名,使用 ansible_host 指定真实的 SSH 别名:

nodes:
  hosts:          # 如果节点 `10.10.10.10` 需要 SSH 别名 `meta`
    10.10.10.10: { ansible_host: meta }  # 通过 `ssh meta` 访问

SSH 参数可以直接在 Ansible 中使用,详情请查看 Ansible Inventory Guide


验证可达性

您应该能够从管理节点通过当前用户免密 ssh 访问所有被管理节点。 远程用户(管理员用户)应该有权限运行免密 sudo 命令。