2. 创建库存文件

在此文件中指定要由 Ansible 管理的主机列表

[jack@onitroad ~]$vi inventory.ini
[Centos7]
192.168.1.141
如何使用 Ansible 将 CentOS 7/RHEL 7 服务器加入 Active Directory 域

Ansible for devops 是一个类似于 Chef、Puppet 的 IT 配置管理、部署和编排的开源工具,非常简单易用,因为它使用 SSH 连接到服务器并运行配置的任务,而不是使用代理。

在本教程中,我们将介绍如何将 CentOS 7 /RHEL 7 服务器加入 Active Directory 并限制对指定 AD 安全组的登录访问和 sudo 访问。

3. 运行剧本

让我们做一个语法检查,我们应该在运行角色之前运行它:

[jack@onitroad ~]$ansible-playbook -i inventory.ini join-domain.yml --syntax-check

最后,我们可以使用以下命令运行角色

[jack@onitroad ~]$ansible-playbook -i inventory.ini join-domain.yml
Password for jack@onitroad:
PLAY [Install and configure AD authentication] **
TASK [Install the required packages] ***
changed: [192.168.1.141]
TASK [Install pexpect using pip] 
changed: [192.168.1.141]
TASK [Join system to AD and add the computer object in the Linux OU] 
changed: [192.168.1.141]
TASK [Add default_domain_suffix to sssd.conf] ***
changed: [192.168.1.141]
TASK [Allow the LinuxAdmins AD group to logon to the system] 
changed: [192.168.1.141]
TASK [Add the LinuxAdmins AD Group to sudoers] **
changed: [192.168.1.141]
RUNNING HANDLER [restart realmd] 
changed: [192.168.1.141]
RUNNING HANDLER [restart sssd] **
changed: [192.168.1.141]
PLAY RECAP **
192.168.1.141              : ok=8    changed=8    unreachable=0    failed=0

1. 创建剧本

--
## This playbook installs and configures AD authentication
- name: Install and configure AD authentication
  hosts: all
  gather_facts: no
  become: yes
  become_method: sudo
  vars_prompt:
    - name: "bind_password"
      prompt: "Password for jack@onitroad"
      private: yes
  tasks:
    - name: Install the required packages
      yum:
        name: realmd,sssd,oddjob,oddjob-mkhomedir,adcli,samba-common,samba-common-tools,ntpdate,ntp,python-pip
        state: present
      notify:
        - restart realmd
    - name: Install pexpect using pip
      pip:
        name: pexpect
    - name: Join system to AD and add the computer object in the Linux OU
      expect:
        command: /bin/bash -c "/usr/sbin/realm join jack@onitroad --computer-ou=OU=Linux,OU=Servers,DC=onitroad,DC=LOCAL onitroad.local"
        responses:
          Password for *: "{{ bind_password }}"
    - name: Add default_domain_suffix to sssd.conf
      lineinfile:
        dest: /etc/sssd/sssd.conf
        line: 'default_domain_suffix = onitroad.local'
        insertafter: '^\[sssd\]'
      notify:
        - restart sssd
    - name: Allow the LinuxAdmins AD group to logon to the system
      command: /bin/bash -c "/usr/sbin/realm permit -g jack@onitroad"
    - name: Add the LinuxAdmins AD Group to sudoers
      lineinfile:
        dest: /etc/sudoers
        line: '%jack@onitroad        ALL=(ALL)       ALL'
        insertafter: '^%wheel'
  handlers:
    - name: restart realmd
      service:
        name: realmd
        state: restarted
    - name: restart sssd
      service:
        name: sssd
        state: restarted

vars_prompt 名为 bind_password,我们将其中提示输入管理员 AD 帐户的密码,通过使用选项 private: yes 字符将不会显示。

安装所需的包:在第一次播放中,我们将安装所有必需的包以将系统加入 AD。

使用 pip 安装 pexpect :我们将安装 expect 模块,该模块将响应输入管理员密码的提示

将系统加入 AD 并在 Linux OU 中添加计算机对象:这里我们将加入域并在 OU=Linux,OU=Servers 中添加计算机帐户
将 default_domain_suffix 添加到 sssd.conf :我们将使用 lineinfile 通过指定默认域来更改 sssd.conf。

允许 LinuxAdmins AD 组登录到系统:这里我们将只允许 LinuxAdmins 登录到系统。

将 LinuxAdmins AD 组添加到 sudoers :最后,我们将编辑 sudoers 文件并将 LinuxAdmins 添加到 sudoers。

日期:2020-06-02 22:18:59 来源:oir作者:oir