提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

  • 前言
  • 一、Windows主机上的配置
  • 1.检查windows客户机powershell版本
  • 2.下载并安装Microsoft .NET Framework 4.5和powershell5.1(如果系统中的版本大于或者等于此版本可以不用执行这一步操作)
  • 3、升级完成后检查powershell版本
  • 4、查看powershell执行策略(如果不是RemoteSigned则修改执行策略)
  • 5、配置winrm service并启动服务(注意需要使用管理员身份启动cmd)
  • 6、查看winrm service启动监听状态
  • 7、修改winrm配置,启用远程连接认证
  • 8、添加防火墙信任规则,允许5985端口通过
  • 二、Centos部分(Ansible管理主机)
  • 依赖python3环境(没有Python3以上的环境才需要安装)
  • 1、安装PIP命令
  • 2、安装pywinrm插件
  • 3、pip安装ansible
  • 4、配置文件hosts
  • 5、验证与windows主机的通信
  • 部署时的坑
  • linux与windows建立信任



前言

使用Centos7去管理公司的多台windows主机,使windows上的文件可以批量更新


一、Windows主机上的配置

1.检查windows客户机powershell版本

输入powershell命令进入powershell模式
输入get-host或者$PSVersionTable命令查看powershell版本

其中win7、window server 2008的默认powershell版本为powershell 4,windows server2012默认版本为 4,window
10默认版本为5.1。

2.下载并安装Microsoft .NET Framework 4.5和powershell5.1(如果系统中的版本大于或者等于此版本可以不用执行这一步操作)

Microsoft .NET Framework 4.5下载地址:

https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe

powershell5.1下载地址:

https://www.filehorse.com/download-windows-powershell-64/37429/

升级powershell后操作系统需重启。

3、升级完成后检查powershell版本

powershell 命令进入 powershell 模式
get-host 或者 $PSVersionTable 命令查看 powershell 版本

Ansible创建windows用户 ansible部署window软件_windows

4、查看powershell执行策略(如果不是RemoteSigned则修改执行策略)

使用 get-executionpolicy 查看powershell执行策略
使用 set-executionpolicy remotesigned 命令修改策略

Ansible创建windows用户 ansible部署window软件_运维_02

5、配置winrm service并启动服务(注意需要使用管理员身份启动cmd)

使用 winrm quickconfig 命令启动winrm服务
有两个提示[y/n]选择y就可以了

6、查看winrm service启动监听状态

使用 winrm enumerate winrm/config/listener 命令启动监听服务

Ansible创建windows用户 ansible部署window软件_运维_03

7、修改winrm配置,启用远程连接认证

winrm set winrm/config/service/auth ‘@{Basic=“true”}’
winrm set winrm/config/service ‘@{AllowUnencrypted=“true”}’

Ansible创建windows用户 ansible部署window软件_Ansible创建windows用户_04

8、添加防火墙信任规则,允许5985端口通过

入站规则 -->新建规则 -->端口 -->TCP的5985 -->下一步 -->下一步

二、Centos部分(Ansible管理主机)

重点:千万不要yum安装。选择pip安装,或者二进制包安装。否则,即便安装了pywinrm插件也无法管理Windows主机。

依赖python3环境(没有Python3以上的环境才需要安装)

下载源码

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

解压缩

tar -zxvf Python-3.7.0.tgz

依次执行下面命令进行手动编译

cd Python-3.7.0./configure prefix=/usr/local/python37make && make install

添加环境变量( /etc/profile )

export PYTHON_HOME=/usr/local/python37export PATH=$PYTHON_HOME/bin:$PATH

读取文件使环境变量生效

source /etc/profile

测试python3.7

python3.7 -V

1、安装PIP命令

从官网下载pip包到本地,官网链接:https://pypi.org/project/pip/#files

wget https://files.pythonhosted.org/packages/8e/76/66066b7bc71817238924c7e4b448abdb17eb0c92d645769c223f9ace478f/pip-20.0.2.tar.gz

解压

tar -zxvf pip-20.0.2.tar.gz -C /usr/local

安装

cd /usr/local/pip-20.0.2python3 setup.py install

2、安装pywinrm插件

pip install pywinrm

3、pip安装ansible

pip install ansible

4、配置文件hosts

配置文件默认路径:/etc/ansible/hosts,在此配置文件尾巴追加以下信息,ansible_ssh_user是Windows Server的用户名,ansible_ssh_pass是Windows Server的密码

[all:vars]
ansible_ssh_user=administrator
ansible_ssh_pass=123123
ansible_ssh_port=5985
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

[windows]
192.168.9.49

5、验证与windows主机的通信

ansible windows -m win_ping


部署时的坑

一开始从网上查资料是用yum安装的ansible,这样安装的ansible是无法控制windows主机,后面找资料找到ansible需要用pip安装或者离线安装的方法才可以识别到winrm模块。

linux与windows建立信任

windows:命令行进入安装路径,输入:ssh-keygen -t rsa;
windows:其中秘钥输出路径设置为C:\Program Files\OpenSSH\home\当前用户名.ssh,其余全部直接回车;
windows:C:\Program Files\OpenSSH\home\当前用户名.ssh此目录下会生成id_rsa和id_rsa.pub;
windows:拷贝一份id_rsa.pub重命名为authorized_keys;
linux: 进入/root/.ssh,输入:ssh-keygen -t rsa,目录下生成id_rsa和id_rsa.pub;
linux:拷贝一份id_rsa.pub重命名为authorized_keys(在/root/.ssh目录下执行cat id_rsa.pub > authorized_keys);
linux:将windows拷贝来的文件追加至authorized_keys文件中,cat /windows公钥拷贝文件所在目录/id_rsa.pub >> authorized_keys;
windows:将linux的公钥id_rsa.pub文件拷贝至windows,打开C:\Program Files\OpenSSH\home\当前用户名.ssh\authorized_keys文件,将linux的公钥文件的内容直接紧接着该文件本身内容最后复制粘贴在authorized_keys中,不要自行增加多余的换行符空格等;
此时双向scp命令都可以完成免密登录了。