Ansible控制windows

1、    Windows下如何工作

在ansible控制linux的时候,用的是ssh的方式,在windows中,使用的是power shell,在客户端机器上也是不用装任何客户端的。

在控制windows机器的时候,使用的模块为“winrm“。

2、    在控制机上安装

在linux控制机器上安装模块winrm:

pip install "pywinrm>=0.1.1"

3、    动态目录的支持

如果想连接动态目录下的domain账户,那么必须安装python-kerberos模块在控制机上,并且需要安装MIT krb5库。还需要在动态目录中配置正确的账户。

3.1 安装python-kerberos的依赖

# Via Yum
yum -y install python-devel krb5-devel krb5-libs krb5-workstation
 
# Via Apt (Ubuntu)
sudo apt-get install python-dev libkrb5-dev
 
# Via Portage (Gentoo)
emerge -av app-crypt/mit-krb5
emerge -av dev-python/setuptools
 
# Via pkg (FreeBSD)
sudo pkg install security/krb5
 
# Via OpenCSW (Solaris)
pkgadd -d http://get.opencsw.org/now
/opt/csw/bin/pkgutil -U
/opt/csw/bin/pkgutil -y -i libkrb5_3
 
# Via Pacman (Arch Linux)
pacman -S krb5

3.2 安装python-kerberos

安装的时候执行如下指令即可:

pip install kerberos

3.3 配置kerberos

编辑配置文件/etc/krb5.conf,在其中添加如下的信息,在每个想连接的domain中。

找到如下开头的节:

[realms]

添加domain的全称,并且添加主要和次要的动态目录域的全名称,如下例子:

[realms]
 
 MY.DOMAIN.COM = {
  kdc = domain-controller1.my.domain.com
  kdc = domain-controller2.my.domain.com
 }

并且在【domain_realm】节中添加每个你想连接的域:

[domain_realm]
    .my.domain.com = MY.DOMAIN.COM

3.4 测试kerberos连接

如果安装了krb5-workstation(yum)或者krb5-user(apt_get),那么可以用如下的命令测试是否被域控制器授权:

kinit user@MY.DOMAIN.COM

注意域的部分必须是全称,并且必须全部为大写。

查看获得的tickets,可以使用命令如下:

klist

3.5 解决kerberos连接问题

如果使用kerberos不能进行连接,那么检查下列问题:

确保正向和反向DNS在域中能正常解析,在做这个解析的时候,首先ping服务器的名称,然后nslookup服务器的ip地址,会返回服务器的名称

如果在返回的服务器名称和ping的服务器名称不一致,检查动态目录中的DNSScavenging 是开启的,并且DNS和DHCP是相互更新的;

确保ansible控制机在domain中配置了账户属性。

检查ansible控制机的在域控制器中是时钟异步的,kerberos是对时间敏感的,一点时间的偏差会导致tickets失效

确保用的是域全名称,可以使用下面的命令进行检查:

kinit -C user@MY.DOMAIN.COM
klist

当获取到不同的域名称的时候,必须更新配置文件krb5.conf,在其中使用域的全名称。

4、    inventory

ansible对windows的支持依赖于几个常用的变量来表示用户名,密码,连接类型(windows),如下所示:

[windows]
winserver1.example.com
winserver2.example.com

在group_vars/windows.yml中,定义以下inventory变量:

# it is suggested that these be encrypted with ansible-vault:
# ansible-vault edit group_vars/windows.yml
 
ansible_user: Administrator
ansible_password: SecretPasswordGoesHere
ansible_port: 5986
ansible_connection: winrm
# The following is necessary for Python 2.7.9+ when using default WinRM self-signed certificates:
ansible_winrm_server_cert_validation: ignore

5、    关于powershell版本

Powershell为3.0版本或者更高,只有windows7 sp1,windows server 2008 sp1,和以后的版本支持。

6、    哪些模块是可用的

Windows支持的模块在以下网址中可以找到:

http://docs.ansible.com/ansible/list_of_windows_modules.html

可以使用script模块来运行powershell脚本,也可以在playbook中使用,如下:

- hosts: windows
  tasks:
    - script: foo.ps1 --argument --other-argument

注意有的模块并不以win开头,如下:

“slurp”, “raw”, and “setup”

7、    获得windows的fact

ansible winhost.example.com -m setup

8、    Windows的playbook例子

下面例子表示推送和运行powershell脚本的例子:

- name: test script module
  hosts: windows
  tasks:
    - name: run test script
      script: files/test_script.ps1

运行单个命令的时候,使用raw模块,在linux中是使用command或者shell模块:

- name: test raw module
  hosts: windows
  tasks:
    - name: run ipconfig
      raw: ipconfig
      register: ipconfig
    - debug: var=ipconfig

运行DOS命令的时候,可以使用CMD /C开头,并且用双引号进行包括,如下:

- name: another raw module example
  hosts: windows
  tasks:
     - name: Move file on remote Windows Server from one location to another
       raw: CMD /C "MOVE /Y C:\teststuff\myfile.conf C:\builds\smtp.conf"

最后一个例子用win_stat模块测试文件是否存在,注意返回的日期和linux中稍有不同:

- name: test stat module
  hosts: windows
  tasks:
    - name: test stat module on file
      win_stat: path="C:/Windows/win.ini"
      register: stat_file
 
    - debug: var=stat_file
 
    - name: check stat_file result
      assert:
          that:
             - "stat_file.stat.exists"
             - "notstat_file.stat.isdir"
             - "stat_file.stat.size>0"
             - "stat_file.stat.md5"

ansible控制windows的官方翻译的更多相关文章

  1. 【ANSIBLE】ansible控制windows插件安装及运行error与解决方法

    一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: https://pypi.python.org/packages/b6/ac/70 ...

  2. ansible 控制windows

    1.installing on the control machine On a Linux control machine: #pip install "pywinrm>=0.1.1 ...

  3. [转帖]Ansible管理windows集群

    Ansible管理windows集群 http://www.cnblogs.com/Dev0ps/p/10026908.html 写的挺好的 我关注点还是不够好呢 最近公司新项目需要安装400+win ...

  4. 厉害—Ansible管理windows集群

    最近公司新项目需要安装400+windows server 2012系统的工作站,想着怎么能像linux下运用ansible批量管理,linux就很简单了有ssh服务 但是下却没这么简单,但还是有办法 ...

  5. 设置ansible与windows连通性

    1.确认powershell的版本,必须是3.0以上 $PSVersionTable.PSVersion 2.确认winrm是否开启命令:winrm quickconfig 3.在windows配置w ...

  6. ansible控制winserver笔记

    原文地址: https://www.cnblogs.com/kingleft/p/6391652.html 环境描述: ansible控制远程windows .系统必须是sp1 .安装framewor ...

  7. C#实现控制Windows系统关机、重启和注销的方法:

    shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...

  8. 教程-隐藏/显示任务栏-程序不在任务显示-全面控制Windows

    1.隐藏任务条 var  h:THandle; //变量h:=FindWindow('Shell_TrayWnd',nil);ShowWindow(h,SW_hide); 2.显示任务条h:=Find ...

  9. 使用WMI来控制Windows目录 和windows共享机制

    1.使用WMI来控制Windows目录 本文主要介绍如何使用WMI来查询目录是否存在.文件是否存在.如何建立目录.删除目录,删除文件.如何利用命令行拷贝文件,如何利用WMI拷贝文件 using Sys ...

随机推荐

  1. sqlite数据库查询批量

    采网页里的网址,网址每天都变化,而数据库里有几千条数据,通过 select count(*) 来查找数据库里有没有该网址,没有的话就采集入库,所 以如果网页当天更新1千条连接,那采集一次就要selec ...

  2. .NET + OpenCV & Python + OpenCV 配置

    最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省 ...

  3. QQ2013手工去广告

    QQ的广告令人讨厌,虽然网上有很多去广告补丁或者是去广告版,但是总是害怕有被盗号的风险,那除了付费会员还有其他什么方法可以安全的去除qq广告吗?显然有,那就是手动去广告. 很简单,不会比使用去广告补丁 ...

  4. Linux守护进程详解(init.d和xinetd) [转]

    一 Linux守护进程 Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台 的守护进程来执行的 ...

  5. [HDOJ5584]LCM Walk(数论,规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5584 给一个坐标(ex, ey),问是由哪几个点走过来的.走的规则是x或者y加上他们的最小公倍数lcm ...

  6. PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决

    这篇是上一篇 http://www.cnblogs.com/charlesblc/p/5987951.html 的续集. 看有的文章提到mysqli和PDO都支持多重查询,所以下面的url会造成表数据 ...

  7. Git server安装和配置

    yum install git yum install git-dameon toiseGit

  8. Qt之QProgressIndicator(等待提示框)

    简述 很早以前在网上看到一个纯代码实现的旋转动画感觉效果很不错,分享给大家.不得不说,条条大道通罗马,我们需要更多地创造... 详见:QProgressIndicator 简述 效果 源码 使用 更多 ...

  9. 编译器错误消息: CS0016: 未能写入输出文件

    “/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS0016: 未能写入输出文件“c ...

  10. HDU 1158 Employment Planning【DP】

    题意:给出n个月,雇佣一个人所需的钱hire,一个人工作一个月所需要的钱salary,解雇一个人所需要的钱fire,再给出这n个月每月1至少有num[i]个人完成工作,问完成整个工作所花费的最少的钱是 ...