批量控制教程-Ansible管理windows

背景

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

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

一、配置windows主机


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

#检查 
get-executionpolicy 
#设置 
set-executionpolicy remotesigned



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

#检查 
$PSVersionTable.PSVersion



3、配置远程控制

# 启动
winrm winrm qc 
# 设置相关的配置 
winrm set winrm/config/service '@{AllowUnencrypted="true"}' 
winrm set winrm/config/service/auth '@{Basic="true"}'



4、查看winrm配置信息

# 查看winrm配置信息 
winrm get winrm/config

二、配置Linux
1、ubuntu安装ansible

apt update && apt install ansible



2、修改主机清单内容

# 编辑配置文件 
$ sudo vim /etc/ansible/hosts 
#输入以下内容 
[win] 10.11.20.20 
[win:vars] 
ansible_ssh_pass=your_password 
ansible_ssh_user=your_user
ansible_connection=winrm 
ansible_winrm_transport=ntlm
ansible_ssh_port=5985 
ansible_winrm_server_cert_validation=ignore



3、检查是否能联通

# 查看是否ping通 
ansible all -m win_ping 
#在命令后面加上-vvv可以看到更详细的信息 
ansible all -m win_ping -vvv



如果成功

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

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

ansible win -m win_shell -a "dir"

失败排查


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

ansible_winrm_transport=ntlm


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

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

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

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

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

案例:控制rpa部署指令

- name: windows commands
  hosts: 10.11.20.20
  tasks:
    - name: show dir
      win_shell: pwd
      args:
        chdir: "D:\\myproject\\pythonproject"

    - name: Run git pull
      win_shell: |
        git pull "https://user:pass@git.com/your_repo.git" --allow-unrelated-histories master
      args:
        chdir: "D:\\myproject\\pythonproject"
        executable: cmd.exe

    - name: update requirements
      win_shell: "pip install -r D:\\myproject\\pythonproject\\pythonrequirements.txt"
      args:
         chdir: "D:\\myproject\\pythonproject"
        executable: cmd.exe

    - name: stop client
      win_shell: for /f "tokens=2" %i in ('tasklist /v ^| findstr /R "cmd.exe"') do taskkill /T /F /PID %i
      args:
        chdir: "D:\\myproject\\pythonproject"
        executable: cmd.exe
      ignore_errors: yes

    - name: stop machine
      win_shell: for /f "tokens=2" %i in ('tasklist /v ^| findstr /R /C:"python.*\.exe"') do taskkill /T /F /PID %i
      args:
        chdir: "D:\\myproject\\pythonproject"
        executable: cmd.exe
      ignore_errors: yes

    - name: start machine
      win_shell: "python command.py >> output.txt"
      async: 30
      poll: 2
      register: task_result
      args:
        chdir: "D:\\myproject\\pythonproject"
      ignore_errors: yes

    - name: start client
      win_shell: curl www.baidu.com
      args:
        executable: cmd.exe
     

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

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

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于配置 Windows 主机,Ansible 提供了一些模块和功能,使管理和配置变得更加简单。下面是一些在 Ansible 中配置 Windows 的步骤: 1. 确保 Ansible 控制节点已经安装并配置好。Ansible 控制节点可以是 Linux 或 macOS 系统。 2. 在 Ansible 控制节点上安装 `pywinrm` 模块,它是与 Windows 进行远程管理的关键模块。可以使用以下命令安装它: ``` pip install pywinrm ``` 3. 在 Ansible 控制节点上创建一个 `inventory` 文件,用于定义要管理Windows 主机。在该文件中,您可以列出 Windows 主机的 IP 地址或主机名。 4. 配置 Ansible 的 `ansible.cfg` 文件,指定 `inventory` 文件的路径和其他相关配置。 5. 创建一个 Playbook 文件(通常使用 YAML 格式),定义要在 Windows 主机上执行的任务。Playbook 文件中可以使用 Ansible 提供的多个模块来安装软件、配置服务等。 6. 在 Playbook 文件中,可以使用 `winrm_connection` 模块来指定与 Windows 主机建立连接的认证方式和其他连接参数。 7. 运行 Ansible 命令,使用 `-i` 参数指定 inventory 文件的路径,并指定要运行的 Playbook 文件。例如: ``` ansible-playbook -i inventory playbook.yml ``` 这些步骤只是一个概述,具体的配置和任务取决于您的需求和环境。您可以根据实际情况调整和扩展这些步骤。您可以参考 Ansible 的官方文档和示例 Playbook 来获得更详细的指导和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值