ansible笔记2--ansible windows基础

  • 1 介绍
  • 2 环境配置
    • 2.1 Windows 环境配置
    • 2.2 linux 环境配置
  • 3 常见用法
  • 4 注意事项
  • 5 说明

1 介绍

Ansible是一种IT自动化工具,它不仅可以用于控制Linux,还可以用来控制Windows。它具备了丰富的功能模块,而且可以通过playbook执行一系列的复杂任务。
笔者最近项目中需要批量控制Windows主机执行相关任务,因此选择使用ansible来实现项目的部署、更新、启动和停止等操作。此处对Windows和linux的基础配置进行详细说明,并通过相关实例加以介绍。

2 环境配置

2.1 Windows 环境配置

  1. 配置执行策略

    查看当前执行策略
    Get-ExecutionPolicy
    配置允许远程执行策略
    Set-ExecutionPolicy RemoteSignedwinrm e winrm/config/listener
    没有错误提示即为正常,没有开启则执行
    winrm qc
    
  2. 配置基础认证

    winrm quickconfig
    查看winrm service listener
    winrm e winrm/config/listener
    为winrm service 配置auth
    winrm set winrm/config/service/auth '@{Basic="true"}'
    为winrm service 配置加密方式为允许非加密
    winrm set winrm/config/service '@{AllowUnencrypted="true"}
    
  3. 关闭防火墙
    若不关闭防火墙,则无法正常访问服务器的相关端口
    Control Panel\System and Security\Windows Firewall\Customize Settings 处的私有网络和共有网络都关闭即可。
    也可以通过以下命令直接关闭防火墙:

    关闭防火墙
    NetSh Advfirewall set allprofiles state off查看防火墙状态
    Netsh Advfirewall show allprofiles
    

    笔者测试配置是否正常和系统版本截图如下:

2.2 linux 环境配置

  1. 软件安装

     pip install ansible pywinrm
    
  2. ansible hosts文件配置
    mkdir /etc/ansible
    vim  /etc/ansible/hosts
    [windows]10.202.21.138
    [windows:vars]
    ansible_ssh_user="user" # 登陆机器用户名称
    ansible_ssh_pass="password" # 登陆密码
    ansible_connection="winrm"
    ansible_ssh_port=5985 # 默认为5985
    ansible_winrm_server_cert_validation=ignore
    
  3. 测试 ansible
    ansible 10.202.21.138 -m win_ping
    此处也可以将 ip 改为上述hosts中的 windows, 若上述hosts的 windows 中包括多个ip,则会对所有的ip执行 win_ping 操作
    

    测试结果:

3 常见用法

ansible 提供了很多常见的操作Windows的模块,例如 win_ping,win_command,win_copy,win_file,win_path,win_shell 等,以下对部分模块进行案例介绍,
详细模块说明参考:Ansible.Windows 常见模块

  1. win_ping 测试机器连通性

    ansible  10.202.21.138 -m win_ping
    输出:
    10.202.21.138 | SUCCESS => {"changed": false, "ping": "pong"
    }
    
  2. 查看windows facts
    ansible 10.202.21.138 -m setup
    输出:
    10.202.21.138 | SUCCESS => {"ansible_facts": {"ansible_architecture": "64-bit", "ansible_architecture2": "x86_64", "ansible_bios_date": "04/01/2014", "ansible_bios_version": "1.7.5-20140531_083030-gandalf", "ansible_date_time": {"date": "2021-02-09", ......"iso8601": "2021-02-09T15:46:52Z", ......"year": "2021"}, "ansible_distribution": "Microsoft Windows Server 2016 Standard", "ansible_distribution_major_version": "10", "ansible_distribution_version": "10.0.14393.0", "ansible_domain": "", "ansible_env": {"ALLUSERSPROFILE": "C:\\ProgramData", "APPDATA": "C:\\Users\\Administrator\\AppData\\Roaming", ......"windir": "C:\\Windows"}, "ansible_fqdn": "WIN-91SUTJ9K7N7", "ansible_hostname": "WIN-91SUTJ9K7N7", "ansible_interfaces": [{"connection_name": "Ethernet", "default_gateway": "10.202.21.129", "dns_domain": null, "interface_index": 8, "interface_name": "Intel(R) PRO/1000 MT Network Connection", "macaddress": "52:54:00:9E:C4:EF"}], "ansible_ip_addresses": ["fe80::d59:4ee4:ff5c:2af4%8", "10.202.21.138", "fe80::5efe:10.202.21.138%3", "2001:0:348b:fb58:2c20:306a:d545:8f82", "fe80::2c20:306a:d545:8f82%6"], "ansible_kernel": "10.0.14393.0", "ansible_lastboot": "2021-02-02 18:16:59Z", ......"ansible_powershell_version": 5, "ansible_processor": ["0", "GenuineIntel", "Intel Core Processor (Broadwell)", "1", "GenuineIntel", "Intel Core Processor (Broadwell)", "2", "GenuineIntel", "Intel Core Processor (Broadwell)", "3", "GenuineIntel", "Intel Core Processor (Broadwell)"], "ansible_processor_cores": 1, "ansible_processor_count": 4, ......"ansible_windows_domain_role": "Stand-alone server", "gather_subset": ["all"], "module_setup": true}, "changed": false
    }
    
  3. 执行win_shell 命令
    ansible windows -m win_shell -a 'date >> C:\xg\date.txt'
    
  4. 创建安装包目录
    ansible 10.202.21.138 -m win_file -a 'path=C:\xg\package state=directory'
    
  5. 同步安装包
    ansible 10.202.21.138 -m win_copy -a 'src=./package/Anaconda2-5.3.1-Windows-x86_64.exe dest=C:\xg\package\Anaconda2-5.3.1-Windows-x86_64.exe'
    
  6. 安装软件
    ansible 10.202.21.138 -m win_package -a 'state=present path=C:\xg\package\Anaconda2-5.3.1-Windows-x86_64.exe arguments=/InstallationType=AllUsers /S'
    
  7. 配置环境变量:(该变量提供了基础py环境)
    ansible 10.202.21.138 -m win_path -a 'state=present elements=C:\ProgramData\Anaconda2'
    注意,环境变量直接单个的添加,如果 elements=aa;bb; 则每次执行后会追加环境变量。
    

4 注意事项

  1. Windows系统必须要关闭防火墙,否则无法正常访问ansible端口
  2. 使用环境变量最好每次单个执行,多个放在一起容易出现多次执行不幂等的情况(追加环境变量)。
  3. 需要确保ansible hosts中的主机用户是登录状态,若注销了该用户则会导致无法通过指定用户访问Windows的情况,从而出现执行失败的现象。

5 说明

  1. 参考文档
    ansible/latest/user_guide/windows_dsc
    Ansible控制windows端设置
    Ansible.Windows 常见模块
    运维派 ansible教程
    运维者说 ansible笔记18篇

  2. 软件环境
    主控机为ubuntu1804 server版本,
    被控机为Windows ,
    登录Windows的客户端工具:ubuntu Desktop系统直接使用内置的 Remmina 即可,mac 系统直接从应用商店下载免费的Parallels Client即可。

ansible笔记2--ansible windows基础相关推荐

  1. ansible笔记(11):初识ansible playbook(二)

    ansible笔记(11):初识ansible playbook(二)有前文作为基础,如下示例是非常容易理解的:--- - hosts: test211remote_user: roottasks:- ...

  2. ansible笔记(5):常用模块之文件操作(二)

    ansible笔记(5):常用模块之文件操作(二)文件操作类模块find模块 find模块可以帮助我们在远程主机中查找符合条件的文件,就像find命令一样.此处我们介绍一些find模块的常用参数,你可 ...

  3. ansible笔记汇总

    写作时间:2022年2月 系统:centos 7.9 ansible版本:2.9.27 推荐ansible使用方法 1.不要只用一组秘钥对,多主机按模块用几组ssh秘钥对(保障安全) 2.ssh秘钥对 ...

  4. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记(8):常用模块之系统类模块(二)user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作.此处我们介绍一些user模块的 ...

  5. ansible笔记(7):常用模块之系统类模块

    ansible笔记(7):常用模块之系统类模块cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令.在了解cron模块的参数之前,先写出一些计划任务的示例,示例 ...

  6. 学习笔记之Windows基础

    Windows基础 系统目录.服务.端口.注册表 常用DOS命令及批处理文件 常见快捷键,以及如何优化系统 登录密码PJ.手动清除密码 系统目录 Windows   系统安装目录 C:\Windows ...

  7. ansible 笔记

    为什么80%的码农都做不了架构师?>>>    CentOS7 安装 ansible yum install ansible 修改配置文件 /etc/ansible/ansible. ...

  8. 学习笔记-Windows 基础服务搭建

    Windows 基础服务搭建 磁盘管理 例1 新建两个 10G 的硬盘,名称为 A-10-1.A-10-2,挂载到主机; 新建镜像卷,使用所有空间,驱动器号为 D. 1. 开始--管理工具--计算机管 ...

  9. 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机

    原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 .作者信息和本声明.否则将追究法律责任. 目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 ...

最新文章

  1. linux读取nand的文件,Linux Kernel 之AP读写Nand Flash上的Yaffs2文件的全过程浅析
  2. 逆转衰老!“70岁”小鼠经过数月治疗,肾脏皮肤血液细胞重返“年轻态”
  3. leetCode C++ 49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
  4. 计算机考研【211 计算机专业院校 官方排名】教育部 第4次“计算机专业”学科评估
  5. html地图无法点击,无法触发谷歌地图标记点击事件从HTML按钮
  6. php检测字符长度(中文)
  7. GridMask:SOTA 数据增广方法,显著改进分类、检测、分割效果
  8. 机器人带陀螺仪走钢丝_一言不合就走钢丝,机器人化身“七变美男子”,萌翻你!...
  9. Android自定义Toast
  10. SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation
  11. [jQuery]回到顶部
  12. curl / libcURL ‘tailmatch()’ Cookie 信息泄露漏洞
  13. 什么是思考?如何主动思考?
  14. 【问题解决方案】Markdown正文中慎用星号否则容易变斜体
  15. Internet Explorer 无法打开 Internet 站点
  16. 如何搭建一个站内搜索引擎(一) 第1章 写在最前
  17. JavaScript里的两个等于号和三个等于号的区别
  18. 计算机组装小白,小白怎么从零开始学组装电脑?
  19. Beautiful english sentences,just for you.
  20. 海康DVR DS-6708HW RTSP url格式笔记

热门文章

  1. 小米生态链之殇?“去小米化”的企业终将会积极拥抱小米
  2. 本人制作的视频汇总(原创视频)
  3. 基于Nodejs的知识信息分享平台的设计和实现
  4. 专题:知乎推荐学习APP评测目录及计划
  5. Git克隆码云代码No such file or directory
  6. Pyinstaller彻底解决打包过大的问题
  7. 软件开源真正意义何在?
  8. Windows 7 更新补丁(解决无法安装Axure RP 9)亲测可用
  9. 一款实用的屏幕绘制标注和鼠标高亮工具:Presentify Mac
  10. 八种基本数据类型变量声明