学习使用ansible自动化运维工具

本文介绍了如何在CentOS7.9环境下,通过yum方式安装Ansible,并使用Ansible的copy模块将文件分发到Linux节点。同时,详细阐述了配置WindowsServer2012R2的WinRM服务,以及在Ansible中使用win_copy模块将文件分发到Windows节点的过程,包括遇到的报错及其解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、虚拟机环境

二、yum方式部署

三、ansible使用

(一)将ansible服务器上文件分发给各节点

1. 创建一个要复制的文件,并复制到Ansible管理主机上

2.编辑Ansible的playbook文件,将copy模块添加到任务列表中

3. 运行playbook

4. 执行结果

(二)ansible实现将文件分发到windows节点

1. Windows server 2012 R2配置winrm

2. ansible服务器安装pywinrm

3. 配置ansible的hosts文件

4. 配置ansible的yml文件

5. 期间遇到的报错


一、虚拟机环境

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"}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

見贤思齊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值