透过 Ansible 自动部署节点(下)

透过 Ansible 自动部署节点(下)

此文章的实验环境建于 透过 Ansible 自动部署节点(上) 的基础上,因此建议阅读该文章后再阅读本文章,感谢您的支持!

上次我们提过 Ansible 能控制 Windows 的客户端,那今天让我们亲自来验证一下吧。

实验环境概括

本文章假设您已经设置好上篇的实验环境,这次再追加两个 Windows 实例作为客户端。

  • 虚拟化:阿里云 ECS
  • 内网网段:192.168.1.0/24
角色 IP 地址 操作系统
HTTP 服务器 192.168.1.200 Alibaba Cloud Linux 3.2104 LTS
DNS 服务器 192.168.1.201 Alibaba Cloud Linux 3.2104 LTS
Ansible 控制节点 192.168.1.202 Alibaba Cloud Linux 3.2104 LTS
客户端 1 192.168.1.203 Windows Server 2022 Datacenter
客户端 2 192.168.1.204 Windows Server 2022 Datacenter

配置实验环境

Windows 客户端

参考文章: Get started with OpenSSH for Windows

透过 Ansible 远程控制 Windows 前必须启用 OpenSSH 服务。

首先登入 Windows 客户端以管理员身份打开 PowerShell,并输入以下命令安装 OpenSSH 服务器:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

然后启用 SSH 服务并确保它自启动:

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

当您以 SSH 远程登录 Windows 时,默认的命令行是 cmd.exe。倘若要把它改为 PowerShell,则可执行以下命令:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

现在您应该能从 Ansible 控制节点透过 SSH 远程控制您的 Windows 客户端了:

ssh [email protected]

此后假设您直接透过 SSH 远程控制 Windows,而且把默认终端设置为 PowerShell。

为了提升您在 Windows PowerShell 命令行的体验,强烈建议安装 Chocolatey 包管理器及 Vim 文本编辑器。

执行以下命令安装 Chocolatey:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

然后透过 Chocolatey 安装 Vim:

choco install vim

若要免密登录 Windows 客户端,先把 Ansible 控制节点的 SSH 公钥拷到 $env:ProgramData\ssh\administrators_authorized_keys 目录下,然后执行以下命令:

icacls.exe 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于批量修改 DNS,你可以使用 Ansible自动化该过程。Ansible 是一种自动化工具,可以通过 SSH 连接到多个远程主机并执行任务。 以下是一个示例的 Ansible Playbook,用于批量修改 DNS: ```yaml --- - name: Update DNS hosts: dns_servers become: yes tasks: - name: Update resolv.conf lineinfile: path: /etc/resolv.conf regexp: '^nameserver' line: 'nameserver new_dns_server' notify: restart_dns handlers: - name: restart_dns service: name: systemd-resolved state: restarted ``` 在上面的示例中,我们首先定义了一个名为 "Update DNS" 的 Playbook。然后,我们指定 `hosts` 参数为 `dns_servers`,这是一个包含需要修改 DNS 的主机的主机组。 在任务部分,我们使用 `lineinfile` 模块来查找以 "nameserver" 开头的行,并将其替换为新的 DNS 服务器地址。你需要将 `new_dns_server` 替换为你想要设置的实际 DNS 服务器地址。 最后,在处理程序部分,我们定义了一个名为 "restart_dns" 的处理程序,它将重新启动 `systemd-resolved` 服务以应用新的 DNS 设置。 你可以将上述 Playbook 保存为一个 YAML 文件(例如 `update_dns.yaml`),然后使用以下命令运行它: ```bash ansible-playbook update_dns.yaml ``` 请确保你已经在运行 Ansible 时配置了正确的 SSH 访问凭据,并且 `dns_servers` 中的主机都可以通过 SSH 连接。 这只是一个简单的示例,你还可以根据需要进行更复杂的 DNS 修改操作。请参考 Ansible 文档以获取更多信息和示例。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值