搜索

2.2. 准备受管节点

download PDF

受管节点是在清单中列出的系统,它由控制节点根据 playbook 进行配置。您不必在受管主机上安装 Ansible。

先决条件

  • 您已准备好了控制节点。如需更多信息,请参阅 在 RHEL 8 上准备一个控制节点
  • 您有从控制节点进行 SSH 访问的权限。

    重要

    root 用户身份进行直接的 SSH 访问是一个安全风险。要降低这个风险,您将在此节点上创建一个本地用户,并在准备受管节点时配置一个 sudo 策略。然后,控制节点上的 Ansible 可以使用本地用户帐户登录到受管节点,并以不同的用户身份(如 root )运行 playbook。

流程

  1. 创建一个名为 ansible 的用户:

    [root@managed-node-01]# useradd ansible

    控制节点稍后使用这个用户建立与这个主机的 SSH 连接。

  2. ansible 用户设置密码:

    [root@managed-node-01]# passwd ansible
    Changing password for user ansible.
    New password: <password>
    Retype new password: <password>
    passwd: all authentication tokens updated successfully.

    当 Ansible 使用 sudoroot 用户身份执行任务时,您必须输入此密码。

  3. 在受管主机上安装 ansible 用户的 SSH 公钥:

    1. ansible 用户身份登录到控制节点,并将 SSH 公钥复制到受管节点:

      [ansible@control-node]$ ssh-copy-id managed-node-01.example.com
      /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub"
      The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established.
      ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.
    2. 当提示时,输入 yes 进行连接:

      Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
      /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    3. 当提示时,输入密码:

      ansible@managed-node-01.example.com's password: <password>
      
      Number of key(s) added: 1
      
      Now try logging into the machine, with:   "ssh 'managed-node-01.example.com'"
      and check to make sure that only the key(s) you wanted were added.
    4. 通过在控制节点上远程执行命令来验证 SSH 连接:

      [ansible@control-node]$ ssh managed-node-01.example.com whoami
      ansible
  4. ansible 用户创建一个 sudo 配置:

    1. 使用 visudo 命令创建并编辑 /etc/sudoers.d/ansible 文件:

      [root@managed-node-01]# visudo /etc/sudoers.d/ansible

      在普通编辑器中使用 visudo 的好处是,该实用程序提供基本的检查,如用于解析错误,然后再安装该文件。

    2. /etc/sudoers.d/ansible 文件中配置满足您要求的 sudoers 策略,例如:

      • 要为 ansible 用户授予权限,以便在输入 ansible 用户密码后以此主机上的任何用户和组身份运行所有命令,请使用:

        ansible   ALL=(ALL) ALL
      • 要向 ansible 用户授予权限,以便在不输入 ansible 用户密码的情况下以该主机上任何用户和组的身份运行所有命令,请使用:

        ansible   ALL=(ALL) NOPASSWD: ALL

    或者,配置匹配您安全要求的更精细的策略。有关 sudoers 策略的详情,请查看 sudoers (5) 手册页。

验证

  1. 验证您可以在所有受管节点上执行来自控制节点的命令:

    [ansible@control-node]$ ansible all -m ping
    BECOME password: <password>
    managed-node-01.example.com | SUCCESS => {
        	"ansible_facts": {
        	    "discovered_interpreter_python": "/usr/bin/python3"
        	},
        	"changed": false,
        	"ping": "pong"
    }
    ...

    硬编码的所有组会动态包含清单文件中列出的所有主机。

  2. 使用 Ansible command 模块在所有受管节点上运行 whoami 工具来验证特权升级是否正常工作:

    [ansible@control-node]$ ansible all -m command -a whoami
    BECOME password: <password>
    managed-node-01.example.com | CHANGED | rc=0 >>
    root
    ...

    如果命令返回 root,则您在受管节点上正确地配置了 sudo

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.