IBM Cloud Docs
配置自动化服务器

配置自动化服务器

自动化服务器用于托管 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 地址从笔记本电脑连接到上一步订购的自动化服务器。 接下来,您必须完成这些任务:

  1. 更新操作系统软件包
  2. 更改 DNS.
  3. 配置网络时间协议(NTP)
  4. 创建两个用户账户,一个供您使用,另一个名为 ansible,可供 Ansible 使用。
  5. 在 VSI 上为 ansible 用户账户 创建 SSH 密钥对,以便连接到 Ansible Linux 主机。
  6. 在笔记本电脑上创建 SSH 密钥对,并将公钥复制到 Ansible 服务器,以便无需密码即可访问服务器。
  7. 加固 SSH.
  8. 安装 Ansible.

更新操作系统软件包

apt update 命令从所有配置源下载软件包信息。 系统知道哪些软件包可以升级,以及从哪里获取这些软件。 apt upgrade 命令会使用这些信息,将所有已安装的软件包升级到最新版本。

  1. 使用 IP 地址和 IBM Cloud® 控制台 ssh root@<public_ip_address> 中的 root 凭据,从笔记本电脑连接到自动化服务器
  2. 在命令行中,使用命令 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 使用的账户。

  1. 使用 IBM Cloud 控制台的 IP 地址和根证书,从笔记本电脑连接到 Linux 服务器 ssh root@<public_ip_address>
  2. 在命令行输入以下命令,并在出现提示时输入密码。
adduser <your_username>
usermod -aG sudo <your_username>
adduser ansible
usermod -aG sudo ansible

为 Ansible 用户创建密钥对

  1. 在命令行中,使用 su - ansible 切换到 ansible 用户。
  2. 要创建配对密钥,请输入 ssh-keygen -b 4096,然后按提示操作。 口令会使 SSH 密钥在自动化中的使用复杂化。

为用户创建配对密钥

假设您使用 Mac 或 Linux 笔记本电脑创建 SSH 密钥对,并创建或更新 SSH 配置文件。

  1. 注销自动化服务器的 SSH 会话。
  2. 如果笔记本电脑上没有配对密钥,请使用 ssh-keygen -b 4096 命令创建一个。 这里建议使用口令。
  3. 将公钥传输到自动化服务器:ssh-copy-id <your_username@<bastion_host_public_ip_address>
  4. 使用文本编辑器创建或更新本地用户 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>

Escwq 保存文件。 然后,就可以使用 ssh <short_name> 命令访问自动化服务器。

加固 SSH

  1. 连接自动化服务器:ssh <short_name>. 此时,SSH 会使用配置文件、用户名、IP 地址和私钥来连接自动化服务器。
  2. 如果使用了密码,请在提示符下输入密码。
  3. 使用以下命令禁用密码验证:sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
  4. 使用以下命令禁用 root 登录:sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/g' /etc/ssh/sshd_config
  5. 使用命令 sudo systemctl restart ssh 重新启动 SSH。