是否可以在裸机上运行 Ansible 以在多台机器上安装操作系统以及安装 SW 和部署 CODE?
答案1
要通过 Ansible 在裸机上安装操作系统,需要 1) 控制裸机主机的模块和 2) 准备配置基础设施的模块。
还有 Ansible 模块来控制提供配置基础设施的知名框架。例如皮匠或者OpenStack Ironic。不过,这在这里并不重要。当然,这样的配置基础设施可以通过任何方式构建。
不幸的是,裸机“基础设施平台”部分没有太大帮助,并指出所有云模块。
如果没有可用的控制模块,就无法在裸机上运行 Ansible。在托管主机上,Ansible 需要预装软件,已启用联系和升级。举个例子,下面是我的脚本首次启动脚本在 FreeBSD 上启用 Ansible。
#!/bin/sh
VERSION="1.0.0"
USERNAME="admin"
# Install packages
env ASSUME_ALWAYS_YES=YES pkg install security/sudo
env ASSUME_ALWAYS_YES=YES pkg install lang/perl5.30
env ASSUME_ALWAYS_YES=YES pkg install lang/python37
env ASSUME_ALWAYS_YES=YES pkg install security/py-openssl
env ASSUME_ALWAYS_YES=YES pkg install archivers/gtar
# Create user
if (! getent passwd ${USERNAME} > /dev/null); then
if (pw useradd -n ${USERNAME} -s /bin/sh -m); then
printf "[OK] user ${USERNAME} created\n"
else
printf "[ERR] can not create user ${USERNAME}\n"
fi
else
printf "[OK] user ${USERNAME} exists\n"
fi
# Create directories and files
# $HOME/.ssh
if [ ! -e /home/${USERNAME}/.ssh ]; then
if (mkdir /home/${USERNAME}/.ssh); then
printf "[OK] dir /home/${USERNAME}/.ssh created\n"
else
printf "[ERR] can not create dir /home/${USERNAME}/.ssh\n"
fi
else
printf "[OK] dir /home/${USERNAME}/.ssh exists\n"
fi
[ -e /home/${USERNAME}/.ssh ] && chmod 0700 /home/${USERNAME}/.ssh
# $HOME/.ssh/authorized_keys
[ ! -e /home/${USERNAME}/.ssh/authorized_keys ] && \
touch /home/${USERNAME}/.ssh/authorized_keys
[ -e /home/${USERNAME}/.ssh/authorized_keys ] && \
chmod 0600 /home/${USERNAME}/.ssh/authorized_keys
chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}
# Configure sudoers
cp /usr/local/etc/sudoers.dist /usr/local/etc/sudoers
chown root:wheel /usr/local/etc/sudoers
chmod 0440 /usr/local/etc/sudoers
echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> /usr/local/etc/sudoers
# EOF
答案2
裸机是可能的,作为配置用例。Ansible 可以在许多平台上运行,并与许多操作系统和编排器 API 通信。示例:
- 网络剧本用于配置所需的 IP 网络。
- 安装并配置网络启动系统来配置主机。
- 从您最喜欢的 IaaS 提供商启动裸机实例。
- 管理虚拟机管理程序集群。
- 作为首次启动配置的一部分,从每个主机运行 Ansible,可能使用
ansible-pull
包装脚本。 - 操作系统和应用程序配置剧本。
您需要一个 Python 解释器来运行 Ansible、一些系统凭据以及一些可以自动执行的程序。通常,一些管理系统是入门的先决条件,即使只是一台运行 Ansible 的笔记本电脑。
工作量取决于您要做的事情。裸机 AWS EC2 实例可以像虚拟实例一样启动。没有良好 API 的硬件机架可能是一个相当长的剧本。