如何在CentOS 8.2上安装Ansible,以及Ansible使用的详细示例。
原文地址:如何在CentOS 8.2上安装Ansible,以及Ansible使用的详细示例。
在本文中,我将向您展示如何在CentOS 8上安装和使用Ansible。并且配置了4个虚拟机来展示如何使用Ansible管理多个服务器。
Ansible是用于从中央计算机管理和管理多个服务器的服务器。它是服务器管理工具。Ansible不需要在服务器端进行任何配置,例如Chef或Puppet。您只需在计算机上安装Ansible并通过SSH管理或管理服务器。它非常简单易用。
安装Ansible:
CentOS 8的EPEL存储库中提供了Ansible。因此,您可以轻松地在CentOS 8上安装Ansible。
首先,使用以下命令更新DNF软件包存储库缓存:
sudo dnf makecache
现在,要启用EPEL存储库,请使用以下命令安装epel-release软件包:
sudo dnf install epel-release
要确认安装,请按Y,然后按<Enter>键。
应该安装epel-release软件包并启用EPEL存储库。
现在,使用以下命令再次更新DNF软件包存储库缓存:
sudo dnf makecache
现在,使用以下命令安装Ansible:
sudo dnf install ansible
要确认安装,请按Y,然后按<Enter>键。
DNF应该开始从Internet下载所有必需的软件包。
可能会要求您接受EPEL存储库的GPG密钥。按Y,然后按<Enter>键接受它。
DNF应该开始安装所有下载的软件包。
安装完成:
现在,运行以下命令检查版本:
ansible --version
如您所见,我正在运行Ansible 2.9.3,并且运行正常。
为Ansible配置服务器:
要使用Ansible管理服务器,必须在服务器上安装并运行SSH服务器。服务器SSH端口必须打开,并且应该可以从Ansible主机访问服务器。这是使用Ansible的唯一要求。
在本文中,我将使用4个虚拟机(VM)(2个Ubuntu Server 18.04 LTS VM和2个Debian 10 VM)来演示Ansible服务器管理和管理的基础。
4个虚拟机是:
linuxhint-f1a46 – 192.168.20.161
linuxhint-8ee7a – 192.168.20.166
linuxhint-s40 – 192.168.20.171
linuxhint-s41– 192.168.20.170
您可以使用服务器的IP地址通过Ansible进行管理。您也可以使用服务器的DNS名称。
在本文中,我将使用/etc/hosts文件对VM的IP地址进行DNS解析。
如果要继续,请使用vi文本编辑器打开/etc/hosts文件,如下所示:
sudo vi /etc/hosts
现在,添加下面的屏幕快照中标记的行并保存文件。
现在,如下所示在CentOS 8 Ansible主机上生成一个SSH密钥:
ssh-keygen
按<Enter>键。
按<Enter>键。
按<Enter>键。
应该生成SSH密钥。
现在,您必须将SSH密钥上传到要使用Ansible管理的所有服务器。
要将SSH密钥复制到vm1.linuxhint.local服务器,请运行以下命令:
ssh-copy-id shovon @ vm1.linuxhint.local
现在,输入yes,然后按<Enter>键。
现在,输入vm1.linuxhint.local VM的登录密码,然后按<Enter>键。
SSH密钥应被复制。
对vm2.linuxhint.local,vm3.linuxhint.local和vm4.linuxhint.local服务器执行相同的操作。
ssh-copy-id shovon@vm2.linuxhint.local
ssh-copy-id shovon@vm3.linuxhint.local
ssh-copy-id shovon @ vm4.linuxhint.local
将SSH密钥复制到虚拟机后,您应该能够在没有任何密码的情况下通过SSH密钥登录到SSH,如下面的屏幕快照所示。
现在,在每台服务器上运行以下命令,以允许sudo访问而无需密码登录用户。这是Ansible运行任何root命令所必需的。
echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$(whoami)
现在可以从Ansible配置或管理所有服务器。
使用Ansible:
Ansible将其管理的所有主机的列表保存在称为清单文件的文件中。Ansible库存文件只是一个简单的纯文本文件。
首先创建一个新的Ansible项目目录〜/ansible/,然后创建清单文件。
mkdir ~/ansible
现在,导航至〜/ansible目录。
cd ~/ansible
现在,按如下所示创建Ansible库存文件。您可以将此文件命名为任何文件。我称它为hosts。
vi hosts
现在,您可以如下添加服务器。在这里,ansible_user选项用于定义Ansible将用来在这些服务器上运行命令的用户。通常是服务器的登录用户。
您也可以在清单文件中混合服务器的IP地址和DNS名称。
您还可以对服务器进行分组。在这里,我有2个组,即webserver和dbserver。
在webserver组中,我添加了vm1和vm2服务器。在dbserver组中,我添加了vm3和vm4服务器。
创建清单文件后,可以使用Ansible的-i选项使用清单文件。
您可以按以下方式列出清单文件中的所有主机:
ansible -i hosts --list-hosts all
您可以检查所有主机是否都处于活动状态,如下所示:
ansible -i hosts --list-hosts -m ping all
如您所见,所有主机均处于活动状态。
您也可以对单个组中的所有主机执行ping操作。
ansible -i hosts --list-hosts -m ping webserver
您可以使用Ansible运行shell命令,如下所示:
ansible -i hosts -m shell -a 'command' <all|groupName>
您还可以如下运行shell命令(具有sudo特权)。
ansible -i hosts -b --become-method=sudo -m shell -a 'command'<all
|groupName>
例如,您可以使用Ansible更新Webserver组中主机上的APT软件包存储库缓存,如下所示:
ansible -i hosts -b --become-method=sudo -m shell -a 'apt update' webserver
如您所见,APT软件包存储库缓存已针对Web服务器组中的所有主机进行了更新。
让我们尝试在webserver组的所有主机上安装Apache 2 Web服务器。
ansible -i hosts -b --become-method=sudo -m shell -a
'apt install -y apache2' webserver
Apache Web服务器应该已经安装在Web服务器组的所有主机中。
如您所见,Apache Web服务器正在webserver组中的所有主机上工作。
ansible -i hosts -b --become-method=sudo -m shell -a 'curl -sI
http://localhost' webserver
同样,您可以在dbserver组中的所有主机上运行任何命令。
ansible -i hosts -m shell -a 'lsb_release -a' dbserver
您还可以使用Ansible Playbook更轻松地管理服务器。Ansible Playbook不在本文讨论范围之内。阅读Ansible文档以获取有关Ansible Playbook的更多信息。
{{ nComment.author.nickname }}
{{ nComment.time }}