在 Ubuntu 上安装 Ansible 的步骤 20.04 LTS
1. 更新 Ubuntu 20.04
在这里,我们使用 Ubuntu 20.04 配置为 Ansible Node 服务器或桌面,因此请转到其命令终端并首先运行您计划设置 Ansible 的 system update 命令。在短期内,在您的 Ubuntu 20.04 服务器中运行给定的命令。
sudo apt update
3. Ansible PPA 安装在 Ubuntu 20.04 上
Ansible 软件包已经存在,可以使用 Ubuntu 20.04 的默认系统存储库进行安装。因此,只需使用 APT 包管理器运行给定的命令即可。
但是,通过默认存储库的版本不是最新版本,因此这里我们使用 Ansible 的 PPA 存储库作为它的最新版本。
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
通过键入 – Y 并点击接受安装包的请求
4. 在 Ubuntu 20.04 上检查 Ansible 版本
让我们使用以下方法检查系统上 Ansible 的安装程序版本
ansible --version
5. 配置主机服务器
要使用 Ansible 管理的服务器必须安装 SSH,并在防火墙中打开端口 22,才能从其他系统(例如随 Ansible 一起安装的系统)访问它们。
例如,您有在 Ubuntu、Debian 和 CentOS 上运行的服务器,您希望使用 Ansible 管理和配置这些服务器。因此,我们需要安装 SSH 服务器并在其上打开端口 22,您可以使用这些命令。
对于Ubuntu和Debian服务器-
sudo apt install openssh-server
sudo systemctl enable ssh
要允许防火墙中的端口 22-
sudo ufw allow 22
对于 RHEL 或 CentOS
sudo dnf install openssh-server
sudo systemctl enable sshd
允许 22 在防火墙-
sudo firewall-cmd --zone=public --permanent --add-port=22/tcp
因此,为了执行本教程,我们有三个服务器 Ubuntu、Debian 和 CentOS,这里是我们的例子中的 IP 地址。
Ubuntu的– 192.168.189.172
CentOS – 192.168.0.102
Debian – 192.168.0.104
6. 在 Ubuntu 上生成 SSH 密钥 20.04
要在远程目标服务器上安装软件包或执行某些部署,请在 localhost(控制节点)上创建一对 SSH 密钥,然后将它们推送到每个远程服务器上,以便我们可以使用 SSH 管理它们。
只需多次键入并按 Enter 键,直到密钥生成完成。
ssh-keygen
7. 将 SSH 密钥复制到远程服务器或主机服务器
现在,将 Ubuntu 20.04 Linux 上生成的密钥推送到要配置或管理的远程服务器。您应该知道远程服务器的用户名或使用默认的 root 用户。
注意:将 h2s 替换为远程服务器的 sudo 用户或使用默认的 root。此外,将 IP 地址替换为服务器的 IP 地址。
例:
ssh-copy-id h2s@192.168.189.172
ssh-copy-id h2s@192.168.0.102
ssh-copy-id h2s@192.168.0.104
现在,在每台服务器上运行以下命令,以便我们可以使用 Ansible 在它们上运行带有 sudo 的命令,而无需输入密码。
echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$(whoami)
如果我们不运行上述命令,那么在运行 Ansible 管理远程服务器时,我们将收到以下错误:
192.168.xx.xx | FAILED | rc=-1 >>
Missing sudo password
8. 为远程主机创建清单文件
在 Ansible 中,我们创建一个文件,用于定义要管理的所有远程主机或目标系统。我们也可以创建一组主机,例如,一组是Web服务器,只包含运行Apache等一些Web服务器的远程系统,另一组可以是运行数据库服务器的Mysql组,依此类推。清单文件也很重要,因为使用它,playbook 中的命令、模块和任务将起作用。
因此,在本教程中,我们有三个远程服务器,让我们将它们添加到 Ansible 主机文件中。
sudo apt install nano -y
sudo nano /etc/ansible/hosts
如果您不想创建任何组,则只需将远程服务器 IP 地址或域名粘贴到文件中,而要创建组,您必须在添加 IP 地址之前指定它。您可以编辑已有示例的默认 Ansible 清单文件值,也可以在文件末尾添加自己的值。
在这里,我为 Web 服务器标识的主机组添加两台服务器,其中一台服务器将定义为单个服务器。
在以下屏幕截图中,你将看到-
192.168.189.172
它是一个取消分组的服务器
而
[webservers]
192.168.0.102
192.168.0.104
位于名为 Web Servers 的组中。创建组的好处是,我们可以向该特定主机组中定义的一整组服务器发出一个命令。例如,我可以同时在名为 Web 服务器的组中添加的所有远程服务器上安装 apache 服务器。同样,您可以定义数据库组和其他数据库组。
注意 – 带有自定义 SSH por t 的库存
如果您使用某些服务器不是默认的 22 SSH 端口,例如,在 Docker 上运行的服务器,那么我们也可以使用 IP 地址来定义它。例-
192.168.0.104 ansible_user=remote-server-username ansible_port=49153
⇒ 在上述命令中,替换 IP 地址、remote-server-username 和端口号,并将其添加到清单文件中。
要保存文件,只需按 Ctrl+X、Type-Y,然后按 Enter 键。
9. Ping 所有添加的远程服务器
由于我们已经成功创建了清单文件,让我们检查一下我们的 Ansible 是否可以 ping 所有添加的服务器,为此 –
要 ping 一组主机 –
ansible -m ping group-name
例子–ansible -m ping web-servers
对单个服务器执行 ping 操作
ansible -m ping ip-address
例子–ansible -m ping 192.168.189.172
全部 ping 通。
ansible -m ping all
输出示例:
192.168.189.172 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
为了检查特定用户,我们可以运行
ansible all -m ping -u your-remote-server-user
注意:将“your-remote-server-user”替换为要检查的用户。
10. Ansible 命令
现在,假设您要在清单文件中定义的一组服务器上安装 Apache Web 服务器。在这里,我们已经命名了一个网络服务器,因此我们使用它,您可以使用您为服务器组提供的任何名称。
命令语法
ansible -b --become-method=sudo -m shell -a 'command to execute' webservers
例如,同时在远程 Debian 和 Ubuntu 系统上运行更新和安装 apache 服务器。
ansible -b --become-method=sudo -m shell -a 'apt update' webservers
安装 Apache
ansible -b --become-method=sudo -m shell -a 'apt install -y apache2' webservers
要对所有定义的远程 PC 运行相同的上述命令,请运行-
ansible -b --become-method=sudo -m shell -a 'apt install -y apache2 ' all
对于取消分组的主机,您可以使用其 IP 地址,例如 –
ansible -b --become-method=sudo -m shell -a 'apt install -y apache2' 192.168.0.104
您还可以使用其他不需要的命令,例如检查正常运行时间-sudo
ansible -m command -a "uptime" group-name/ip-adress
上述相同的命令可用于其他目的,只需将 uptime 替换为您要在远程服务器上执行的命令,并更改组名称/IP 地址即可。
有关更多信息,请参阅官方文档