37.9. Ansible を使用して、特定のホスト上の IdM ユーザーのログイン名とホームディレクトリーをオーバーライドする

この手順では、idoverrideuser ansible-freeipa モジュールを使用して、特定の Identity Management (IdM) ユーザーに関連付けられた POSIX 属性値をオーバーライドする特定の IdM クライアント用の ID ビューを作成します。この手順では、idm_user という名前の IdM ユーザーがログイン名 user_1234 を使用して host1.idm.example.com という名前の IdM クライアントにログインできるようにする ID ビューの例を使用します。さらに、この ID ビューは idm_user のホームディレクトリーを変更します。そのため、host1 へのログイン後、ユーザーのホームディレクトリーが /home/user_1234/ になります。

前提条件

  • コントロールノードでは、

    • Ansible バージョン 2.14 以降を使用している。
    • ansible-freeipa パッケージがインストールされている。
    • ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している。RHEL 9.4 以降を使用している。
    • secret.yml Ansible vault に ipaadmin_password が保存されている。
  • ターゲットノード (ansible-freeipa モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。

手順

  1. 次の内容を含む Ansible Playbook ファイル add-idoverrideuser-with-name-and-homedir.yml を作成します。

    ---
    - name: Playbook to manage idoverrideuser
      hosts: ipaserver
      become: false
      gather_facts: false
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
      - name: Ensure idview_for_host1 is present
        idview:
          ipaadmin_password: ”{{ ipaadmin_password }}"
          name: idview_for_host1
      - name: Ensure idview_for_host1 is applied to host1.idm.example.com
        idview:
          ipaadmin_password: ”{{ ipaadmin_password }}"
          name: idview_for_host1
          host: host1.idm.example.com
          action: member
      - name: Ensure idm_user is present in idview_for_host1 with homedir /home/user_1234 and name user_1234
        ipaidoverrideuser:
          ipaadmin_password: ”{{ ipaadmin_password }}"
          idview: idview_for_host1
          anchor: idm_user
          name: user_1234
          homedir: /home/user_1234
  2. Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。

    $ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/add-idoverrideuser-with-name-and-homedir.yml
  3. [オプション] root の認証情報を持っている場合は、新しい設定を host1.idm.example.com システムにすぐに適用できます。

    1. システムに root として SSH 接続します。

      $ ssh root@host1
      Password:
    2. SSSD キャッシュを削除します。

      root@host1 ~]# sss_cache -E
    3. SSSD デーモンを再起動します。

      root@host1 ~]# systemctl restart sssd

検証

  1. idm_user として host1SSH 接続します。

    [root@r8server ~]# ssh idm_user@host1.idm.example.com
    Password:
    
    Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229
    [user_1234@host1 ~]$
  2. 作業ディレクトリーを出力します。

    [user_1234@host1 ~]$ pwd
    /home/user_1234/

関連情報

  • ansible-freeipa アップストリームドキュメントの idoverrideuser モジュール