Соедините рабочий стол Ubuntu 17.04 с Windows Domain

Как я присоединяюсь к портативному компьютеру под управлением Ubuntu 17.04 к домену окон, я ищу самый легкий путь, поскольку у меня есть ограниченные знания о Ubuntu. Мы смотрим на него как на альтернативу окнам для наших настольных компьютеров. что я, после, как вести (снимки экрана были бы полезны), поскольку у меня есть 30 ноутбуков для установки и затем 30 рабочих станций плюс комплекты IT, если ноутбуки работают успешно.

1
задан 8 May 2017 в 14:47

1 ответ

Общая информация

Как Вы упоминаете для интеграции большого количества хостов, я рекомендовал бы Вам использовать некоторый инструмент управления конфигурацией. Я использую Ansible для таких вещей. Попробуйте его вручную однажды и когда все работает, автоматизируют его.

Как Вы также упоминаете, чтобы сделать это в корпоративной среде, я предложил бы использовать Ubuntu 16.04 вместо 17,04, потому что 17.04 не выпуск долговременной поддержки и поэтому только поддерживается до января 2018.

Дополнительно этот вопрос кажется хорошо удовлетворенным для serverfault.

Практические руководства

Хорошая начальная точка была бы официальной документацией: https://help.ubuntu.com/lts/serverguide/sssd-ad.html. Я также нашел это учебное руководство довольно полезным (и оно имеет много снимков экрана): http://www.wolffhaven45.com/blog/linux/join_ubuntu_workstation_windows_domain/.

Сборник пьес Ansible

На основе упомянутых Практических руководств (и много других) я создал роль Ansible для автоматизации этого процесса. Структура каталогов следующие:

ansible/
├── adIntegration.yaml
└── roles
    └── ad-integration
        ├── handlers
        │   └── main.yaml
        ├── tasks
        │   └── main.yaml
        └── templates
            ├── etc
            │   ├── krb5.conf.jinja2
            │   ├── realmd.conf.jinja2
            │   └── sssd
            │       └── sssd.conf.jinja2
            └── usr
                └── share
                    └── lightdm
                        └── lightdm.conf.d
                            └── 50-ubuntu.conf.jinja2

(Мне нравится помещать файлы в структуру каталогов, напоминающую целевую структуру),

Некоторые файлы снижаются ниже, адаптируются к Вашим потребностям:

adintegration.yaml

---
# execute like:
# ansible-playbook ~/ansible/adIntegration.yaml --inventory ~/ansible/production.hosts
# or
# ansible-playbook ~/ansible/adIntegration.yaml -i ~/ansible/production.hosts
- hosts: "ad-integration"
  remote_user: "admin" # change to whatever user you have with sudo rights
  become: yes
  vars_prompt: # the vars are later used for the join
    - name: "ad_admin_name"
      prompt: "username for AD join"
      private: no
    - name: "ad_admin_password"
      prompt: "password for AD"
      private: yes
      confirm: yes
  roles:
    - role: "ad-integration"
...

main.yaml (обработчики)

---
- name: "restart sssd"
  service:
    name: "sssd"
    state: "restarted"
  listen: "sssd needs restart"
...

main.yaml (задачи)

---
- name: "install needed packages"
  apt:
    name: "{{ item }}"
    state: "present"
  with_items:
    - "adcli"
    - "krb5-user"
    - "libnss-sss"
    - "libpam-sss"
    - "libwbclient-sssd"
    - "realmd"
    - "sssd"
    - "sssd-tools"
    - "samba-common"
# copy this from a working one
- name: "template krb5.conf"
  template:
    src: "etc/krb5.conf.jinja2"
    dest: "/etc/krb5.conf"
    owner: "root"
    group: "root"
    mode: "0644"
    backup: yes
- name: "template realmd.conf"
  template:
    src: "etc/realmd.conf.jinja2"
    dest: "/etc/realmd.conf"
    owner: "root"
    group: "root"
    mode: "0644"
    backup: yes
- name: "join domain"
  shell: "echo '{{ ad_admin_password }}' | realm join COMPANY.COM -U '{{ ad_admin_name }}' --install=/ -v" # --install=/ needed because of realm bug in package detection
  register: "realm_join"
  changed_when: "'Successfully enrolled machine in realm' in realm_join.stderr"
  failed_when: "'Couldn\\'t join realm' in realm_join.stderr"
- name: "template sssd.conf"
  template:
    src: "etc/sssd/sssd.conf.jinja2"
    dest: "/etc/sssd/sssd.conf"
    owner: "root"
    group: "root"
    mode: "0600"
    backup: yes
  notify: "sssd needs restart"
- name: "activate automatic creation of home directories"
  lineinfile:
    dest: "/etc/pam.d/common-session"
    line: "session  optional            pam_mkhomedir.so "
    state: "present"
    insertbefore: "# end of pam-auth-update config"
    backup: yes
- name: "create lightdm directories"
  file:
    path: "/usr/share/lightdm/lightdm.conf.d/"
    state: "directory"
    owner: "root"
    group: "root"
    mode: "0755"
# the important part here is to add greeter-show-manual-login=true under [SeatDefaults]
- name: "activate username on login window"
  template:
    src: "usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf.jinja2"
    dest: "/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf"
    owner: "root"
    group: "root"
    mode: "0644"
    backup: yes
...

realmd.conf.jinja2

[active-directory]
default-client = sssd
os-name = {{ ansible_distribution }}
os-version = {{ ansible_distribution_version }}

[service]
automatic-install = no

[users]
default-home = /home/%D/%U
default-shell = /bin/bash

[company.com]
fully-qualified-names = no
automatic-id-mapping = yes
user-principal = yes
manage-system = no
enumerate = yes

sssd.conf.jinja2

[sssd]
domains = company.com
config_file_version = 2
services = nss, pam

[domain/company.com]
realmd_tags = manages-system joined-with-adcli
ad_domain = company.com
krb5_realm = COMPANY.COM

id_provider = ad
cache_credentials = True
krb5_store_password_if_offline = True
enumerate = True
use_fully_qualified_names = False

fallback_homedir = /home/%d/%u
default_shell = /bin/bash

# maybe needed for older AD schemes
#ldap_id_mapping = False
#ldap_schema = ad
#ldap_user_object_class = person
#ldap_user_name = msSFU30Name
#ldap_user_uid_number = msSFU30UidNumber
#ldap_user_gid_number = msSFU30GidNumber
#ldap_user_home_directory = msSFU30HomeDirectory
#ldap_user_shell = msSFU30LoginShell
#ldap_user_gecos = displayName
#ldap_group_object_class = group
#ldap_group_name = msSFU30Name
#ldap_group_gid_number = msSFU30GidNumber
1
ответ дан 7 December 2019 в 15:36

Другие вопросы по тегам:

Похожие вопросы: