🟢mac上使用ansible控制多台ubuntu执行命令

在 macOS 上使用 Ansible 控制多台 Ubuntu 服务器执行命令的过程可以分为以下几个步骤:

  1. 安装 Ansible: 首先,你需要在 macOS 上安装 Ansible。你可以使用 pip 或 Homebrew 来安装。

    使用 pip 安装 Ansible:

    pip install ansible

    使用 Homebrew 安装 Ansible:

    brew install ansible
  2. 配置 SSH 连接: 确保你可以通过 SSH 连接到目标 Ubuntu 服务器。你需要在 macOS 上生成 SSH 密钥对,并将公钥添加到每台 Ubuntu 服务器的 ~/.ssh/authorized_keys 文件中。

    生成 SSH 密钥对:

    ssh-keygen -t rsa -b 4096

    将公钥复制到目标服务器:

    ssh-copy-id user@hostname
  3. 配置 Ansible 主机文件: 创建或编辑 Ansible 主机文件(通常位于 /etc/ansible/hosts~/.ansible/hosts),并添加你的 Ubuntu 服务器信息。

    示例主机文件:

    [ubuntu_servers]
    server1 ansible_host=192.168.1.101 ansible_user=root
    server2 ansible_host=192.168.1.102 ansible_user=root
  4. 编写 Ansible Playbook: 创建一个 Ansible Playbook 文件(例如 playbook.yml),定义你想在多台服务器上执行的命令或任务。

    示例 Playbook 文件:

    ---
    - name: Execute command on multiple Ubuntu servers
      hosts: ubuntu_servers
      tasks:
        - name: Run a shell command
          shell: echo "Hello, World!"
  5. 运行 Ansible Playbook: 使用 ansible-playbook 命令来运行你的 Playbook。

    ansible-playbook -i /path/to/your/hosts playbook.yml

    如果你使用的是默认的主机文件位置(如 /etc/ansible/hosts),可以省略 -i 参数。

如果你只需要在多台服务器上批量执行简单的任务,并且不想使用 Playbook,可以直接使用 Ansible 的 ad-hoc 命令。这种方法非常适合快速执行一次性任务。

使用 Ansible Ad-Hoc 命令

Ansible 的 ad-hoc 命令可以让你在不编写 Playbook 的情况下,直接在命令行中执行任务。以下是一些常用的例子:

1. 在多台服务器上执行 Shell 命令

假设你有一个名为 hosts 的库存文件,其中定义了你的服务器列表。你可以使用以下命令在这些服务器上执行 Shell 命令:

BASH复制

要去掉python解释器警告信息

这样,你就可以在 macOS 上使用 Ansible 控制多台 Ubuntu 服务器并执行命令了。如果你有更多复杂的任务,可以根据需要扩展你的 Playbook。

Last updated