Ansible 是一种自动化工具,用于从单台计算机管理多个远程主机。它为您提供了针对大量远程主机的轻松配置。例如,您在多台机器上执行相同的任务,Ansible 为您提供了自动执行这些任务的选项。
Ansible 是 Chef 和 Puppet 等其他流行基础设施自动化工具的更好替代品。您无需在节点上安装任何客户端软件即可通过 Ansible 服务器进行管理。它使用 SSH 连接在节点上执行任务。
本教程将帮助您在 Ubuntu 20.04 LTS Linux 系统上安装和配置 Ansible。
先决条件
我们有一个控制节点来配置 Ansible 服务器,并管理三台节点服务器。这里的控制节点运行的是Ubuntu 20.04 Linux系统。第一个和第三个节点运行在 Ubuntu 18.04 服务器上,第二个节点运行在 centos 7 服务器上。
以下是具有 IP 地址和主机名的节点列表:
- 控制节点 – 10.0.1.10(控制节点)
- 第一个节点 – 10.0.1.101 (web-host1)
- 第二个节点 – 10.0.1.102 (web-host2)
- 第三个节点 – 10.0.1.103 (db-host1)
第 1 步 – 设置 SSH 密钥
您可以为远程 Linux Ansible 主机配置基于密钥的 ssh。因此 SSH 不需要密码。 Ansible 还允许您使用 ssh 密码,但基于密钥的 ssh 更安全。
登录控制节点(10.0.1.10)并生成ssh密钥对:
ssh-keygen -t rsa
只需按“Enter”即可完成命令要求的所有输入。
将公钥复制到您需要通过 SSH 协议连接的所有远程节点。
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.101
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.102
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.103
步骤 2 – 在 Ubuntu 上安装 Ansible
您可以从 Ubuntu 系统上的官方软件包存储库安装 Ansible 服务器。其中有最新的 debian 软件包。执行以下命令在 Ubuntu 系统上设置 Ansible PPA。
sudo apt-add-repository ppa:ansible/ansible
软件更新实用程序将更新系统上的软件包缓存。因此,您必须运行以下命令在 Ubuntu 系统上安装或更新 Ansible
sudo apt update
sudo apt install ansible
输入“Y”进行所有安装确认以完成安装过程。接下来,需要配置 Ansible 服务器
步骤 3 – 配置库存文件
您的服务器已准备好使用 Ansible 进行远程主机管理和自动化。您可以拥有所需的多个主机,并使用单个 Ansible 服务器来管理它们。
在这里,您需要在 Ansible 主机文件 (/etc/ansible/hosts) 中定义远程系统。您还可以创建具有相似类型的主机组。在这里,您需要将主机正确分组。组用于在其下定义的所有远程主机上执行一项任务。
编辑 Ansible 主机配置文件。例如:
sudo nano /etc/ansible/hosts
添加您的主机并将其分组。一个主机可以添加到多个组下.
[webservers]
web-host1
web-host2
[dbservers]
db-host1
下图将帮助您了解组和组下的主机。
单主机变量配置
您需要为主机定义设置。主机特定文件必须与host_vars目录下的主机同名(例如:web-host1)。
sudo mkdir /etc/ansible/host_vars/
sudo vi /etc/ansible/host_vars/web-host1
将 web-host1 的 SSH 设置添加到此文件中。
ansible_ssh_host: 10.0.1.101
ansible_ssh_port: 22
ansible_ssh_user: root
如果您没有使用步骤 1 来建立该主机的 ssh 连接。您还可以将以下方法之一添加到 web-hosts1 配置文件中以进行身份验证。
ansible_ssh_pass: secret_password
ansible_ssh_private_key_file: /home/rahul/.ssh/aws.pem
组变量配置
您可以在组配置下配置组的公共变量设置。组文件名必须与下面的组名(例如:webservers)相同group_vars
目录。
sudo mkdir /etc/ansible/group_vars
sudo vi /etc/ansible/group_vars/webservers
将公共变量添加到该文件中,供该组下添加的所有主机使用。
ansible_ssh_port: 22
ansible_ssh_user: root
第 4 步 – 测试 Ansible 连接
您的 Ansible 已准备好使用。要测试所有节点的连接性,请使用 ping 模块。登录到您的 Ansible 服务器并执行以下命令:
ansible -m ping all
您还可以测试特定主机或组的连接性。
ansible -m ping web-host1
## Specific host
ansible -m ping webservers
## Specific group
您还可以使用 Ansible shell 模块运行任何 Linux 命令。例如,执行以下命令来测试 web-host1 上的可用内存。
ansible -m shell -a 'free -m' web-host1
您还可以为一个组执行相同的任务。只需使用组名而不是主机名。
结论
在本教程中,您学习了在 Ubuntu 20.04 系统上安装 Ansible 服务器。还配置了使用 Ansible 服务器管理的远程主机。