Ansible学习笔记(一):部署管理Windows机器遇到的一些坑
在给国盛通上海测试环境做Ansible管理Windows服务器的时候,遇到了一些坑,Google解决掉了,特此记录,坑用红色标记。
一、环境说明
1.Ansible管理主机
操作系统:CentOS 7.4
ip:172.50.1.119
2.Ansible客户端主机
操作系统:Windows Server 2008 R2
ip:172.50.1.172
二、开始部署
1.Windows部分:
(1)升级PowerShell版本到4.0【Windows Server 2012的同学就不需要升级了,Server 2012的PowerShell默认版本就是4.0】
# 1.下载并安装Microsoft .NET Framework 4.5
https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe # 2.下载并安装PowerShell 4.0(Windows Management Framework 4.0
https://download.microsoft.com/download/3/D/6/3D61D262-8549-4769-A660-230B67E15B25/Windows6.1-KB2819745-x64-MultiPkg.msu # 3.重启Windows Server之后,打开PowerShell,查看升级是否成功,如图1所示。
get-host
【图1】
(2)Windows Server开启winrm服务【这个服务 远程管理作用】
以下都在PowerShell中进行
# 1.查看powershell执行策略
get-executionpolicy # 2.更改powershell执行策略为remotesigned【输入y确认】
set-executionpolicy remotesigned # 3.配置winrm service并启动服务
winrm quickconfig # 4.修改winrm配置,启用远程连接认证【这里是PowerShell的命令,如果用cmd的话,@前面的' 和 末尾的' 要去掉的】【如图2所示】
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}' # 5.查看winrm service启动监听状态【如果有应答,说明服务配置并启动成功了】【如图3所示】
winrm enumerate winrm/config/listener
【图2】
【图3】
(3)设置防火墙入站规则
允许5985端口入站通过。这个很简单,略。
2.CentOS部分(Ansible管理主机)
重点:千万不要yum安装。选择pip安装,或者二进制包安装。否则,即便安装了pywinrm插件也无法管理Windows主机。报图4错误。
"msg": "winrm or requests is not installed: No module named winrm"
【图4】
(1)安装pip命令【先安装python3环境:https://www.cnblogs.com/herui1991/p/12305897.html】
# .从官网下载pip包到本地,官网链接:https://pypi.org/project/pip/#files
[root@localhost ~]# wget https://files.pythonhosted.org/packages/8e/76/66066b7bc71817238924c7e4b448abdb17eb0c92d645769c223f9ace478f/pip-20.0.2.tar.gz # .解压
[root@localhost ~]# tar -zxvf pip-20.0..tar.gz -C /usr/local # .安装
[root@localhost ~]# cd /usr/local/pip-20.0.
[root@localhost pip-20.0.]# python3 setup.py install
(2)安装pywinrm插件
[root@localhost ~]# pip install pywinrm
Collecting pywinrm
Using cached pywinrm-0.4..tar.gz ( kB)
Requirement already satisfied: xmltodict in /usr/local/lib/python3./site-packages (from pywinrm) (0.12.)
Requirement already satisfied: requests>=2.9. in /usr/local/lib/python3./site-packages (from pywinrm) (2.22.)
Requirement already satisfied: requests_ntlm>=0.3. in /usr/local/lib/python3./site-packages (from pywinrm) (1.1.)
Requirement already satisfied: six in /usr/local/lib/python3./site-packages (from pywinrm) (1.14.)
Requirement already satisfied: chardet<3.1.,>=3.0. in /usr/local/lib/python3./site-packages (from requests>=2.9.->pywinrm) (3.0.)
Requirement already satisfied: idna<2.9,>=2.5 in /usr/local/lib/python3./site-packages (from requests>=2.9.->pywinrm) (2.8)
Requirement already satisfied: urllib3!=1.25.,!=1.25.,<1.26,>=1.21. in /usr/local/lib/python3./site-packages (from requests>=2.9.->pywinrm) (1.25.)
Requirement already satisfied: certifi>=2017.4. in /usr/local/lib/python3./site-packages (from requests>=2.9.->pywinrm) (2019.11.)
Requirement already satisfied: cryptography>=1.3 in /usr/local/lib/python3./site-packages (from requests_ntlm>=0.3.->pywinrm) (2.8)
Requirement already satisfied: ntlm-auth>=1.0. in /usr/local/lib/python3./site-packages (from requests_ntlm>=0.3.->pywinrm) (1.4.)
Requirement already satisfied: cffi!=1.11.,>=1.8 in /usr/local/lib/python3./site-packages (from cryptography>=1.3->requests_ntlm>=0.3.->pywinrm) (1.14.)
Requirement already satisfied: pycparser in /usr/local/lib/python3./site-packages (from cffi!=1.11.,>=1.8->cryptography>=1.3->requests_ntlm>=0.3.->pywinrm) (2.19)
Installing collected packages: pywinrm
Running setup.py install for pywinrm ... done
Successfully installed pywinrm-0.4.
(3)pip安装ansible
[root@localhost ~]# pip install ansible
(4)配置文件
配置文件默认路径:/etc/ansible/hosts,在此配置文件尾巴追加以下信息,ansible_ssh_user是Windows Server的用户名,ansible_ssh_pass是Windows Server的密码
[windows]
172.50.1.172 ansible_ssh_user="Administrator" ansible_ssh_pass="Password" ansible_ssh_port=5985 ansible_connection="winrm" ansible_winrm_server_cert_validation=ignore
(5)验证通不通,显示SUCCESS表示通了
# ping下通不通
[root@localhost ~]# ansible windows -m win_ping
172.50.1.172 | SUCCESS => {
"changed": false,
"ping": "pong"
}
三、重点与说明
1.重点
(1)升级PowerShell到4.0要先升级.Net Franmwork;
(2)开启winrm服务在CMD下、PowerShell下语法是不一样的,本文是在PowerShell下进行的,有截图为证;
(3)一定要安装pywinrm插件,否则管理Windows Server的时候会报错"msg": "winrm or requests is not installed: No module named winrm"
(4)如果安装了pywinrm还是报这个错,是因为yum安装的ansible无法调用pip安装的pywinrm插件,故而建议用pip安装ansible或者用源码包安装ansible。【这个坑埋得比较深,还是Google解决的,这里吐槽下Baidu搜不到】【用yum安装ansible无法调用pip安装的pywinrm插件,不确定是不是必现,但在我工作的测试环境出现了】
2.说明
ansible详解用法
Ansible学习笔记(一):部署管理Windows机器遇到的一些坑的更多相关文章
- ansible学习笔记一
ansible学习笔记一 参考博客: ansible学习 - 51CTO博客 一.安装 1 .下载epel源 wget -O /etc/yum.repos.d/epel.repo http://mir ...
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- Linux内核学习笔记-2.进程管理
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- linux kernel学习笔记-5内存管理_转
void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. km ...
- Linux学习笔记(五) 账号管理
1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
- Qt学习笔记-Widget布局管理
Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...
- XV6学习笔记(2) :内存管理
XV6学习笔记(2) :内存管理 在学习笔记1中,完成了对于pc启动和加载的过程.目前已经可以开始在c语言代码中运行了,而当前已经开启了分页模式,不过是两个4mb的大的内存页,而没有开启小的内存页.接 ...
- 操作系统学习笔记4 | CPU管理 && 多进程图像
操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件.而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理.所以多进程图像是操作系统的核心图像. 参考资料: 课程:哈 ...
随机推荐
- Java中SMB的应用
目录 SMB 服务操作 Ⅰ SMB简介 Ⅱ SMB配置 2.1 Windows SMB Ⅲ 添加SMB依赖 Ⅳ 路径格式 Ⅴ 操作共享 Ⅵ 登录验证 SMB 服务操作 Ⅰ SMB简介 SMB(全称 ...
- @ControllerAdvice实现优雅地处理异常
@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法加一些逻辑处理.最常用的 ...
- ugui制作伸缩菜单
制作一个类似与这种格式的菜单,可以伸缩滑动的.今天正好项目需要用到类似功能,所以尝试了一下,做出如下的效果 虽然只是一个思路,但是可以扩展.声明一个object物体,为but,通过GetCompone ...
- 用Python实现根据角4点进行矩阵二维插值并画出伪彩色图
哈哈,题目取得这么绕,其实就是自己写了一个很渣的类似图像放大的算法.已知矩阵四周的4点,扩展成更大的矩阵,中间的元素值均匀插入,例如: 矩阵: 1 2 3 4 扩展成3x3的: 1 1.5 2 ...
- 谈谈 InnoDB引擎中的一些索引策略
如果我们在工作能够更好的利用好索引,那将会极大的提升数据库的性能. 覆盖索引 覆盖索引是指在普通索引树中可以得到查询的结果,不需要在回到主键索引树中再次搜索 建立如下这张表来演示覆盖索引: creat ...
- Intellij IDEA使用(一)项目模板类型
概述 IDEA默认打开后,会出现欢迎页面,可以选择打开Project的方式. 对于新建的Project,一般会选择[Create New Project],对于界面中,众多的Project类型,有时候 ...
- RAID磁盘冗余阵列
RAID阵列分类 **一.RAID 0** 1.优点: 充分利用 I/O 总线性能使其带宽翻倍,读/写速度翻倍: 充分利用磁盘空间,利用率为 100%.2.缺点: 不提供数据冗余: 无数据检验,不能保 ...
- Web 开发工具类(3): JsonUtils
JsonUtils 整合了一些对Json的相关操作: package com.evan.common.utils; import java.util.List; import com.fasterxm ...
- 优雅对API进行内部升级改造
优雅对API进行内部升级改造 背景 随着业务的快速发展老的系统将逐渐的无法快速支撑现有业务迭代重构一个必然的过程;然而在底层业务系统重构的过程中,对外提供的API也同时需要进行相应的升级替换;推动外部 ...
- An internal error occurred during: "Launching New_configuration". Path for project must have only on
在Eclipse中按照如下操作 Project -> Properties -> Run/Debug Settings: 1. select "Launching New_con ...