用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上运行起来!