Red Hat Training

A Red Hat training course is available for RHEL 8

114.4. 使用 Ansible 在 IdM 中配置自动挂载位置、映射和密钥

作为身份管理(IdM)系统管理员,您可以在 IdM 中配置自动挂载位置和映射,以便指定位置中的 IdM 用户可以通过导航到其主机上的特定挂载点来访问 NFS 服务器导出的共享。导出的 NFS 服务器目录和挂载点都在映射中指定。在 LDAP 术语中,位置是此类映射条目的一个容器。

这个示例描述了如何使用 Ansible 来配置 raleigh 位置和映射,其将 nfs-server.idm.example.com:/exports/project 共享作为读写目录挂载到 IdM 客户端上的 /devel/project 挂载点。

先决条件

  • 您需要知道 IdM admin 密码。
  • 您已配置了 Ansible 控制节点以满足以下要求:

    • 您使用 Ansible 版本 2.14 或更高版本。
    • 您已在 Ansible 控制器上安装了 ansible-freeipa 软件包。
    • 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件
    • 示例假定 secret.yml Ansible 库存储了 ipaadmin_password

流程

  1. 在 Ansible 控制节点上,导航到 ~/MyPlaybooks/ 目录:

    $ cd ~/MyPlaybooks/
  2. 复制位于 /usr/share/doc/ansible-freeipa/playbooks/automount/ 目录中的 automount-location-present.yml Ansible playbook 文件:

    $ cp /usr/share/doc/ansible-freeipa/playbooks/automount/automount-location-present.yml automount-location-map-and-key-present.yml
  3. 打开 automount-location-map-and-key-present.yml 文件进行编辑。
  4. 通过在 ipaautomountlocation 任务部分设置以下变量来调整文件:

    • ipaadmin_password 变量设为 IdM admin 的密码。
    • name 变量设为 raleigh
    • 确保 state 变量设置为 present

      这是当前示例修改的 Ansible playbook 文件:

    ---
    - name: Automount location present example
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure automount location is present
        ipaautomountlocation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: raleigh
          state: present
  5. 继续编辑 automount-location-map-and-key-present.yml 文件:

    1. tasks 部分中,添加一个任务来确保存在一个自动挂载映射:

      [...]
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
      [...]
        - name: ensure map named auto.devel in location raleigh is created
          ipaautomountmap:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: auto.devel
            location: raleigh
            state: present
    2. 添加另一个任务,将挂载点和 NFS 服务器信息添加到映射:

      [...]
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
      [...]
        - name: ensure automount key /devel/project is present
          ipaautomountkey:
            ipaadmin_password: "{{ ipaadmin_password }}"
            location: raleigh
            mapname: auto.devel
            key: /devel/project
            info: nfs-server.idm.example.com:/exports/project
            state: present
    3. 添加另一个任务以确保 auto.devel 已连接到 auto.master

      [...]
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
      [...]
      - name: Ensure auto.devel is connected in auto.master:
        ipaautomountkey:
          ipaadmin_password: "{{ ipaadmin_password }}"
          location: raleigh
          mapname: auto.map
          key: /devel
          info: auto.devel
          state: present
  6. 保存该文件。
  7. 运行 Ansible playbook ,并指定 playbook 和清单文件:

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automount-location-map-and-key-present.yml