用Windows域帐号进行连接的Ansible

首先

Windows的Active Directory使用Kerberos认证进行用户认证。
因此,在使用Ansible的WinRM连接时,需要使用Kerberos认证来使用Windows域帐户。
要在Ansible中使用Kerberos认证,需要安装python kerberos模块。

而且,用于Ansible的Windows域帐户需要目标机器的管理员权限是必需的。

本文总结了在离线环境下所采取的步骤。

只需提供一个中文版本的选项:Ansible侧环境。

    • OS:CentOS7.6

 

    • Ansible:Ansible2.7

 

    pywinrmインストール済み

Windows系统的环境

本文将使用以下值作为例子。

    • ドメイン:example.com

 

    • Active Directory:windows001

 

    • Windowsドメインアカウント:admin

 

    ターゲットマシン:windows002 , windows003

1. 安装python kerberos模块

首先,安装Kerberos客户端软件包。

$ yum -y install krb5-devel krb5-libs krb5-workstation

将下面的包复制到任何工作文件夹中。

    • kerberos-1.3.0.tar.gz

 

    • requests-kerberos-0.12.0.tar.gz

 

    pykerberos-1.2.1.tar.gz

请转到作业文件夹,并安装Python的Kerberos模块。

$ pip install -f ./ --no-index kerberos-1.3.0.tar.gz
$ pip install -f ./ --no-index requests-kerberos-0.12.0.tar.gz

进行Kerberos客户端的设置(请注意大小写)。

# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

[libdefaults]
 default_realm = EXAMPLE.COM

[realms]
 EXAMPLE.COM = {
  kdc = windows001.example.com
  admin_server = windows001.example.com
  default_domain = example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM

使用 Windows 域帐户名称进行令牌查询

$ kinit admin

由于需要输入密码,所以输入密码。

请使用以下命令确认是否成功获取了令牌票证。

$ klist

4. 编辑hosts文件

[windows]
windows002
windows003

[windows:vars]
ansible_user=admin@EXAMPLE.COM
ansible_password=<パスワード>
ansible_port=5986
ansible_connection=winrm
ansible_winrm_transport=kerberos
ansible_winrm_server_cert_validation=ignore

通过这个方法,可以让Playbook在Windows002和Windows003上运行起来!

广告
将在 10 秒后关闭
bannerAds