可以在裸机上运行 ansible 吗?

可以在裸机上运行 ansible 吗?

是否可以在裸机上运行 Ansible 以在多台机器上安装操作系统以及安装 SW 和部署 CODE?

答案1

要通过 Ansible 在裸机上安装操作系统,需要 1) 控制裸机主机的模块和 2) 准备配置基础设施的模块。

  1. 以下是远程管理模块包括例如希皮洛。但是,我不知道有任何用于控制裸机的 Ansible 模块的系统列表。

  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 的硬件机架可能是一个相当长的剧本。

相关内容