配置自动化服务器
自动化服务器用于托管 Ansible®。以下架构描述了 Ansible:
- 一个 Ansible 控制节点- Ansible 控制节点是安装 Ansible 的地方、并可通过安全外壳 (SSH) 访问 Ansible Linux® 主机,以及通过 Windows 远程管理 (WinRM) 配置的 Ansible Windows® 主机。 Ansible 需要以下项目:
- 拥有 sudo 权限的非 root 用户。
- 与该用户关联的 SSH 密钥对。
- 清单文件,其中包含要使用 Ansible 管理的 Ansible 主机的信息。
- 详细说明要在 Ansible 主机上执行的任务的游戏本。
- 可选择使用 Ansible Vault 创建加密文件来保存密码等敏感参数。
- 一个或多个 Ansible 主机- Ansible 主机是您的 Ansible 控制节点配置为自动化的任何虚拟机 (VM)。
- 对于 Linux,需要将 Ansible 控制节点的 SSH 公钥添加到系统用户的授权密钥中。 用户可以是 root 或具有 sudo 权限的普通用户。
- 对于 Windows,使用 WinRM 配置的 Ansible 主机需要处于运行状态。
这里选择虚拟服务器实例(VSI)是为了便于部署和外部连接。 不过,如果首选虚拟机,那么其中一些任务仍然适用。
您可以通过公共 IP 地址从笔记本电脑连接到上一步订购的自动化服务器。 接下来,您必须完成这些任务:
- 更新操作系统软件包。
- 更改 DNS.
- 配置网络时间协议(NTP)。
- 创建两个用户账户,一个供您使用,另一个名为 ansible,可供 Ansible 使用。
- 在 VSI 上为 ansible 用户账户 创建 SSH 密钥对,以便连接到 Ansible Linux 主机。
- 在笔记本电脑上创建 SSH 密钥对,并将公钥复制到 Ansible 服务器,以便无需密码即可访问服务器。
- 加固 SSH.
- 安装 Ansible.
更新操作系统软件包
apt update
命令从所有配置源下载软件包信息。 系统知道哪些软件包可以升级,以及从哪里获取这些软件。 apt upgrade
命令会使用这些信息,将所有已安装的软件包升级到最新版本。
- 使用 IP 地址和 IBM Cloud® 控制台
ssh root@<public_ip_address>
中的 root 凭据,从笔记本电脑连接到自动化服务器 - 在命令行中,使用命令
apt update && apt upgrade -y
更新和升级操作系统软件包。
更改 DNS
配置完成后,VSI 将被配置为使用 IBM Cloud DNS 解析器:10.0.80.11 and 10.0.80.12
而不是您的 VMware Cloud Foundation for Classic - Automated 实例 - Active Directory™ DNS (AD/DNS) 服务器。 您可以使用以下命令更改此配置,并将 <addns_1>
和 <addns_2>
更改为 AD/DNS 服务器的 IP 地址。 将 <root_domain>
替换为 VCF for Classic - Automated 实例域。 例如, test.ibmloud.local
sudo sed -i 's/10.0.80.11/<addns_1>/g' /etc/netplan/50-cloud-init.yaml
sudo sed -i 's/10.0.80.12/<addns_2>/g' /etc/netplan/50-cloud-init.yaml
sudo sed -i 's/search: \[\]/search: \[<root_domain>\]/g' /etc/netplan/50-cloud-init.yaml
sudo netplan apply
使用以下命令进行验证。
systemd-resolve --status | grep 'DNS Servers' -A2
resolvectl status
配置 NTP
以下命令将安装 NTP,配置 servertime.service.softlayer.com
为 NTP 时间源,移除 ubuntu.pool.ntp.org
服务器,然后重启 NTP 服务。
apt install ntp -y
sudo sed -i 's/pool 0.ubuntu.pool.ntp.org iburst/#pool 0.ubuntu.pool.ntp.org iburst/g' /etc/ntp.conf
sudo sed -i 's/pool 1.ubuntu.pool.ntp.org iburst/#pool 1.ubuntu.pool.ntp.org iburst/g' /etc/ntp.conf
sudo sed -i 's/pool 2.ubuntu.pool.ntp.org iburst/#pool 2.ubuntu.pool.ntp.org iburst/g' /etc/ntp.conf
sudo sed -i 's/pool 3.ubuntu.pool.ntp.org iburst/#pool 3.ubuntu.pool.ntp.org iburst/g' /etc/ntp.conf
sudo sed -i 's/pool ntp.ubuntu.com/#pool ntp.ubuntu.com/g' /etc/ntp.conf
sudo sed -i '/^# Specify one or more NTP servers./a # IBM Cloud NTP\nserver servertime.service.softlayer.com prefer iburst' /etc/ntp.conf
sudo service ntp restart
命令 ntpq -p
用于验证 NTP。 输出中显示了 remote is 10.0.77.54
行,这是 servertime.service.softlayer.com
的 IP 地址
创建用户
服务器上创建了两个用户。 第一个用户是一个可以用来连接服务器的账户,因为在随后的步骤中,SSH 作为 root 的用户将被移除。 第二个用户是 Ansible 使用的账户。
- 使用 IBM Cloud 控制台的 IP 地址和根证书,从笔记本电脑连接到 Linux 服务器
ssh root@<public_ip_address>
- 在命令行输入以下命令,并在出现提示时输入密码。
adduser <your_username>
usermod -aG sudo <your_username>
adduser ansible
usermod -aG sudo ansible
为 Ansible 用户创建密钥对
- 在命令行中,使用
su - ansible
切换到 ansible 用户。 - 要创建配对密钥,请输入
ssh-keygen -b 4096
,然后按提示操作。 口令会使 SSH 密钥在自动化中的使用复杂化。
为用户创建配对密钥
假设您使用 Mac 或 Linux 笔记本电脑创建 SSH 密钥对,并创建或更新 SSH 配置文件。
- 注销自动化服务器的 SSH 会话。
- 如果笔记本电脑上没有配对密钥,请使用
ssh-keygen -b 4096
命令创建一个。 这里建议使用口令。 - 将公钥传输到自动化服务器:
ssh-copy-id <your_username@<bastion_host_public_ip_address>
。 - 使用文本编辑器创建或更新本地用户 SSH 配置文件,例如
vi ~/.ssh/config
。<short_name>
是您要在 SSH 命令中使用的名称,如ssh <short_name>
。
Host *
Port 22
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
ServerAliveInterval 60
ServerAliveCountMax 30
Host <short_name>
HostName <automation_server_public_ip_address>
User <your_user_name>
IdentityFile <private_key_e.g._~/.ssh/key01>
按 Esc
和 wq
保存文件。 然后,就可以使用 ssh <short_name>
命令访问自动化服务器。
加固 SSH
- 连接自动化服务器:
ssh <short_name>
. 此时,SSH 会使用配置文件、用户名、IP 地址和私钥来连接自动化服务器。 - 如果使用了密码,请在提示符下输入密码。
- 使用以下命令禁用密码验证:
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
。 - 使用以下命令禁用 root 登录:
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/g' /etc/ssh/sshd_config
。 - 使用命令
sudo systemctl restart ssh
重新启动 SSH。