背景

你厌恶要手动操作多台机器进行某些重复的操作吗?想象一下,在周五的晚上你想要下班了,但是你得在很多台机器手动发布一些东西,每台机器都要整半小时,整整8台机器,一晚上几个小时可以预见又没了。

ansible使你解脱。写一些配置文件,一条命令执行它,然后等待所有机器同时工作,确认一下没问题,然后举杯庆祝。

一、配置windows主机


1、改powerShell的策略为remotesigned,否则运行不了powerShell脚本文件。



2、检查powershell的版本是否超过3.0,没有就更新



3、配置远程控制



4、查看winrm配置信息

二、配置Linux
1、ubuntu安装ansible



2、修改主机清单内容



3、检查是否能联通



如果成功

10.11.20.20 | SUCCESS => { "changed": false, "ping": "pong" }

常用模块
win_shell,在双引号里面写入你要的命令即可

失败排查


1、如果提示
ansible-win | UNREACHABLE! => { "changed": false, "msg": "plaintext: the specified credentials were rejected by the server", "unreachable": true }
那么在配置主机时,增加


2、如果你的winrm起不来,提示要把网络连接从公共改为专用
win+R快捷键,输入secpol.msc->网络列表管理器策略->所有网络->右键属性->网络位置设置为“用户可以更改”->在网络和internet设置->以太网->点击当前网络->从公共勾选为专用 并且把所有其他的网络名称属性里的位置,都设置成专用

3、如果控制节点ping不通目标节点,将目标节点的防火墙关闭,或配置防火墙出入口策略,比如打开5985出入口

4、执行一些启动命令会启动进程的,要注意两点:

   4.1 要使用async异步来执行,不然控制端会一直卡住

   4.2 设置async等待时间不能太短、poll不能设置为0,因为太短的话进程还没启动完,这边的命令就中断了,那就不会成功启动;而poll为0,就会马上调到下一个命令,所以不能设置为0

案例:控制rpa部署指令

这个案例是写在一个叫windows_commands.yml文件里的,

写好之后,用ansible-playbook windows_commands.yml -vvv  执行就行了

04-21 13:41