如何在Linux上安装和测试Ansible

如何在Linux上安装和测试Ansible

Ansible是使用Python语言编写的广泛使用的配置管理工具,可帮助您同时配置一台或多台计算机。 Ansible可用于执行以下任务

  • 从头开始配置单个或多个节点
  • 安置
  • 配置变更
  • 贴片
  • 服务管理
  • 等等

Ansible由于其简单性而被广泛使用。 Ansible代码也是用YAML语言编写的,因此无需在远程计算机上安装代理。 Ansible使用端口22(SSH)连接到远程计算机并进行必要的更改。

可以连接到具有22个端口的远程计算机的计算机可以是控制节点。您可以在其中安装Ansible的控制节点,并且受管节点由控制节点管理。

让我们看一下在控制器节点上安装Ansible的过程。

在CentOS 7上安装Ansible。

Python是安装Ansible的唯一先决条件,因此让我们运行以下命令来安装Python:

$sudo yum install python3 -y

要在CentOS 7上安装Ansible,请首先确保已安装CentOS 7 EPEL存储库。通过运行以下命令来安装epel存储库。

$sudo yum install epel-release

执行以下更新命令以更新系统软件包索引。

$sudo yum update -y

安装存储库后,请使用yum软件包管理器来安装Ansible。运行以下命令以安装Ansible。

$sudo yum install ansible -y

检查Ansible是否已正确安装及其版本。

$ansible -v

在CentOS 8上安装Ansible。

让我们看看如何安装CentOS 8。让我们在CentOS 8上安装Python。

$sudo dnf install python3

安装Python之后,运行以下命令以安装EPEL存储库。

$sudo dnf install epel-release -y

执行以下更新命令以更新系统软件包索引。

$sudo dnf update -y

现在,您准备安装Ansible。运行以下命令以安装Ansible。

$sudo dnf install ansible -y

检查Ansible是否已正确安装及其版本。

$ansible -v

在Ubuntu上安装Ansible。

Python是大多数现代Linux发行版中的默认软件包。如果未安装Python,请运行以下命令以安装Python软件包。

$sudo apt-get install python3

要在Ubuntu上安装Ansible,请首先运行以下命令以安装存储库。

$sudo apt-add-repository ppa:ansible/ansible

执行以下更新命令以更新系统软件包索引。

$sudo apt-get update -y

接下来,安装Ansible。

$sudo apt-get install -y ansible

检查Ansible是否已正确安装及其版本。

$ansible -v

在CentOS,Debian,Ubuntu上使用Python PIP安装Ansible。

您可以使用Python软件包安装程序安装Ansible,无论使用哪种操作系统。运行以下命令以安装python3-pip。

对于CentOS 7及以下版本:

$sudo yum install python3 python3-pip -y

对于CentOS 8:

$sudo dnf install python3 python3-pip -y

对于Ubuntu和Debian:

$sudo apt-get install python3 python3-pip

现在您已经安装了python和pip,让我们在操作系统上运行以下命令来安装Ansible:

$sudo pip3 install ansible

检查Ansible是否已正确安装及其版本。广告宣传

$ansible -v

Ansible控制器主机配置:

开始与其他节点进行通信之前,必须首先设置“主机”文件。该文件包含受管节点的所有IP或主机名。

注意事项注意:不一定总是需要使用hosts文件来连接到受管节点。但是,每次运行所有命令时,都必须使用受管节点服务器的IP或主机名。

运行以下命令以root用户权限创建文件(如果尚不存在):

$sudo touch /etc/ansible/hosts

在写入文件之前,让我们看一下示例主机文件以了解它。

[group_name]alias ansible_ssh_host=your_node_server_ip

主机文件应遵循上述语法。让我们看一下每个参数。

[group_name]:此参数创建一个组。 group_name参数下的所有受管节点IP地址或主机名都分组在同一组中。例如,如果基础结构具有多个Web服务器,则可以在此处添加受管节点的所有IP地址或主机名。

别名:此参数用于为受管节点服务器提供别名,以标识受管节点服务器。例如,如果您的基础结构具有多个Web服务器,则可以指定别名host1,host2和host3。指定别名的主要优点是,当您运行Ansible命令来更改单个服务器的配置时,可以使用别名来标识并执行服务器上所需的任务。

ansible_ssh_host = your_node_server_ip:此参数指向受管节点的IP地址或主机名的别名。

CentOS 8用作Ansible受控节点。如上所述,Ansible使用远程主机上的端口22连接。

假设CentOS受管节点服务器IP地址为192.168.0.2、192.168.0.3和192.168.0.4。

为了使Ansible Controller节点能够与受管节点进行通信,您需要确保可以在端口22(SSH端口)上访问受管节点。运行以下命令,以一次一次检查从控制器到所有三个受管节点的连接。

$ssh [email protected]192.168.0.2
$ssh [email protected]192.168.0.3
$ssh [email protected]192.168.0.4

系统将提示您在所有节点上输入root用户密码。在Ansible控制器和受管节点之间配置无密码身份验证时,Ansible可以非常顺利地工作。密码验证还可以与Ansible命令的各种参数一起使用。

现在,我们已经配置了Ansible控制器和受管节点之间的SSH连接,让我们将hosts文件配置为连接到所有受管节点。如前所述,您可以将多个节点服务器别名添加到组中。在这种情况下,添加所有三个节点并将别名分别分配为host1,host2和host3。添加所有受管节点详细信息之后,hosts文件应如下所示:通过运行以下命令来编辑先前创建的主机文件。

运行以下命令以root特权打开文件。

$sudo vi /etc/ansible/hosts

让我们将以下设置添加到hosts文件。

[node_servers]host1 ansible_ssh_host=192.168.0.2host2 ansible_ssh_host=192.168.0.3host3 ansible_ssh_host=192.168.0.4

此处,所有受管节点IP和别名为 node_servers

现在,让我们从Ansible控制器连接到受管节点。

$ansible -m ping node_servers

上面的命令使用模块ping连接到上面的hosts文件中定义的“ node_servers”组。

该错误可能由于多种原因发生。

  1. 如果未指定用户名,则默认情况下,Ansible将尝试使用当前用户名连接到受管节点。如果该用户在节点服务器上不存在,则会显示以下错误:
  2. 如果ssh端口22未打开以在受管节点上进行连接。 (如上所述,Ansible连接到ssh端口)
  3. 如果主机文件中的IP不正确。

如果以上任何条件失败,您将收到以下错误:

host1 | UNREACHABLE! => {    "changed": false,    "msg": "Failed to connect to the host via ssh.",    "unreachable": true}
host2 | UNREACHABLE! => {    "changed": false,    "msg": "Failed to connect to the host via ssh.",    "unreachable": true}
host3 | UNREACHABLE! => {    "changed": false,    "msg": "Failed to connect to the host via ssh.",    "unreachable": true}

具体来说,让我们告诉Ansible,我们需要使用jasmes用户连接到“ node_servers”组中的受管节点。如下创建group_vars目录。

$sudo mkdir /etc/ansible/group_vars

此目录中的文件专门用于配置可在Ansible剧本中使用的变量。

运行以下命令以创建用于安装的变量文件。

$sudo vim /etc/ansible/group_vars/node_servers.yml

将以下代码添加到文件中。

---ansible_ssh_user: james

YML文件始终在第一行以“ —”开头。完成后,保存并关闭此文件。现在,Ansible将始终使用node_servers组中的james用户,而不管您正在使用哪个用户执行命令。

检查受管节点的连接性。

现在已经设置了主机,并且您具有足够的配置详细信息,可以成功连接到受管节点,您可以尝试使用先前运行的相同命令。

$ansible -m ping servers 

Ansible返回的输出类似于以下内容:

host1 | SUCCESS => {    "changed": false,    "ping": "pong"}
host2 | SUCCESS => {    "changed": false,    "ping": "pong"}

host3 | SUCCESS => {“已更改”:false,“ ping”:“ pong”}

这是确保Ansible连接到受管节点的基本测试。

结论:

您不必为受管节点使用CentOS操作系统。您可以使用上面用于CentOS,RedHat,Ubuntu和其他Linux发行版的相同测试配置。

广告宣传

Sidebar