目录
1. 创建一个要复制的文件,并复制到Ansible管理主机上
2.编辑Ansible的playbook文件,将copy模块添加到任务列表中
1. Windows server 2012 R2配置winrm
一、虚拟机环境
CentOS Linux release 7.9.2009 (Core)
CPU 4核
内存 4G
二、yum方式部署
yum install epel-release
yum install ansible
三、ansible使用
(一)将ansible服务器上文件分发给各节点
你可以使用Ansible的copy模块将一个文件传输到各个节点,以下是具体步骤:
1. 创建一个要复制的文件,并复制到Ansible管理主机上
2.编辑Ansible的playbook文件,将copy模块添加到任务列表中
例如创建/etc/ansible/send_file_to_nodes.yml:
- name: 传输文件到各个节点
hosts: servers
tasks:
- name: 复制文件到节点上
copy:
src: /path/to/local/file
dest: /path/to/remote/file
3. 运行playbook
ansible-playbook send_file_to_nodes.yml
执行以上步骤后,文件将被复制到所有服务器的指定目录下。注意:目标节点的目标目录必须存在,否则会出现错误。
4. 执行结果

(二)ansible实现将文件分发到windows节点
我们可以通过 Ansible playbook 来执行 ‘win_copy’ 模块传送文件到远程 Windows 主机上的操作,具体命令如下:
1. Windows server 2012 R2配置winrm
打开 PowerShell;
输入该命令:
winrm quickconfig
在问你是否进行继续的操作时候输入 y;
配置加密方式为允许非加密:
winrm set winrm/config/service '@{AllowUnencrypted="true"}';
配置auth:
winrm set winrm/config/service/auth '@{Basic="true"}';
查看配置:
winrm get winrm/config
查看监听:
winrm e winrm/config/listener
2. ansible服务器安装pywinrm
在执行前,先要安装pywinrm
pip install pywinrm
3. 配置ansible的hosts文件
[win01]
192.168.101.26
[win01:vars]
ansible_ssh_port=5985
4. 配置ansible的yml文件
---
- name: Copy file to remote Windows machine
hosts: win01
gather_facts: no
tasks:
- name: Copy file to remote Windows machine
win_copy:
src: "/root/test"
dest: "C:\\abcd"
vars:
ansible_user: Administrator
ansible_password: 123456
ansible_connection: winrm
ansible_winrm_transport: basic
ansible_winrm_server_cert_validation: ignore
在这个 playbook 中,我们指定要复制到远程 Windows 主机的本地文件路径和目标路径。
执行命令:
ansible-playbook send_file_to_windows.yml
执行结果:

5. 期间遇到的报错
(1)执行报错
fatal: [192.168.101.26]: UNREACHABLE! => {"changed": false, "msg": "basic: HTTPSConnectionPool(host='192.168.101.26', port=5986): Max retries exceeded with url: /wsman (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f50eda52fd0>, 'Connection to 192.168.101.26 timed out. (connect timeout=30)'))", "unreachable": true}

(2)解决方案
需要在windows上开启winrm的配置
winrm set winrm/config/service '@{AllowUnencrypted="true"}
winrm set winrm/config/service/auth '@{Basic="true"}'
(3)另一个报错
fatal: [192.168.101.26]: UNREACHABLE! => {"changed": false, "msg": "basic: the specified credentials were rejected by the server", "unreachable": true}
(4)解决方法
winrm set winrm/config/service '@{AllowUnencrypted="true"}
本文介绍了如何在CentOS7.9环境下,通过yum方式安装Ansible,并使用Ansible的copy模块将文件分发到Linux节点。同时,详细阐述了配置WindowsServer2012R2的WinRM服务,以及在Ansible中使用win_copy模块将文件分发到Windows节点的过程,包括遇到的报错及其解决策略。

被折叠的 条评论
为什么被折叠?



