更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Debian 11 Linux系统上安装和使用Ansible的方法

在Debian 11 Linux系统上安装和使用Ansible的方法

更新时间:2023-04-29 09:19:15浏览次数:902+次

本文介绍如何在Debian 11/10 Linux系统上安装和使用Ansible的方法。

前言

Ansible是一个免费的、开源的,也是用Python编写的流行的自动化和配置管理工具之一。要想在Debian 11/10上安装和使用Ansible,得具备以下条件:

3台服务器,带有Debian 11/10控制节点。

在所有服务器上具有sudo权限的用户。

以下是本文设置的IP地址:

Control Node(Debian 111/10):192.168.100.147

Managed Node 1(Rocky Linux 8):192.168.100.118

Managed Node 2(Rocky Linux 8):192.168.100.119

安装Ansible的方法

在本文中,我将介绍在Debian 11/10 Linux控制节点上安装Ansible的几种方法,可用Debian默认的上游存储库、Ubuntu APT存储库或使用pip(Python包管理器)。

以下将使用vim文本编辑器来创建和编辑各种文件:

sudo apt update

sudo apt install vim

1]、使用PIP在Debian 11/10上安装Ansible

Ansible也可以在PIP(Python包管理器)上找到。但首先,我们需要将Python和PIP安装到您的系统中:

sudo apt-get install python3 python3-pip -y

然后使用PIP安装Ansible,如下所示:

sudo pip3 install ansible

检查已安装的版本:

$ ansible --version

ansible [core 2.11.5] 

  config file = /etc/ansible/ansible.cfg

  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

  ansible python module location = /usr/local/lib/python3.7/dist-packages/ansible

  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections

  executable location = /usr/bin/ansible

  python version = 3.7.3 [GCC 8.3.0]

  jinja version = 2.10

  libyaml = True

2]、从默认上游存储库在Debian 11/10上安装Ansible

Ansible存在于默认的Debian存储库中,但可用的版本不是最新的。使用这种方法安装Ansible非常容易,因为它不需要复杂的步骤。

首先,更新系统包索引:

sudo apt update

然后继续在Debian 11/10上安装Ansible,如下所示:

sudo apt install ansible

通过检查已安装的Ansible版本来确认您的安装:

$ which ansible

/usr/bin/ansible

$ ansible --version

ansible 2.7.7

  config file = /etc/ansible/ansible.cfg

  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

  ansible python module location = /usr/lib/python3/dist-packages/ansible

  executable location = /usr/bin/ansible

  python version = 3.7.3 [GCC 8.3.0]

3]、从Ubuntu APT存储库在Debian 11/10上安装Ansible

在这种方法中,我们需要将PPA存储库添加到Debian 11/10系统中。首先,安装一些必需的依赖项,如下所示:

sudo apt-get install gnupg2 curl wget -y

安装了依赖项后,现在添加PPA存储库,如下所示:

sudo vim /etc/apt/sources.list

在文件中,添加以下行:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu bionic main

将Ansible GPG密钥添加到Debian 11/10系统中,如下所示:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

样本输出:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

Executing: /tmp/apt-key-gpghome.SzIqXbWidp/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported

gpg: Total number processed: 1

gpg: imported: 1

现在更新您的APT软件包索引并按如下方式安装Ansible:

sudo apt-get update

sudo apt-get install ansible -y

检查已安装的Ansible版本:

$ ansible --version

ansible 2.10.8

  config file = None

  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

  ansible python module location = /usr/lib/python3/dist-packages/ansible

  executable location = /usr/bin/ansible

  python version = 3.9.2

这里要注意,在安装Ansible完成后,得创建可靠主机清单文件。

注:在控制节点上安装Ansible后,会自动创建/etc/hosts文件。在这个文件中,我们需要添加我们的托管节点。您也可以在主目录中创建自己的库存文件,如下所示。

在文件中,按如下方式添加托管节点:

[Node1]

192.168.100.118 ansible_ssh_user=your_username

[Node2]

192.168.100.119 ansible_ssh_user=your_username

请记住将your_username替换为要在托管主机上使用的用户名。然后在控制节点和托管节点之间创建SSH指纹密钥。

从控制节点配置SSH密钥:

ssh-keygen -t rsa

只需按Enter键直到结束。

然后复制托管节点的公钥,如下所示:

ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@192.168.100.118

ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@192.168.100.119

这允许您的控制节点在没有密码验证的情况下管理节点。

使用Ansible的方法

使用Ansible,可以使用以下语法通过控制节点的命令来管理节点:

ansible -i [inventory_file] -m [module] [host]

现在测试托管节点是否已经添加并且可以访问:

sudo ansible -i ~/.hosts -m ping all

样本输出:

\

ping清单文件中的特定主机,如下所示:

sudo ansible -i ~/.hosts -m ping Node1

或者:

sudo ansible -i ~/.hosts -m ping Node2

您也可以使用free-m命令检查可用空间,如下所示:

sudo ansible -i ~/.hosts -m shell -a "free -m" Node1

样本输出:

\

您也可以使用df-h命令:

sudo ansible -i ~/.hosts -m shell -a "df -h" Node2

样本输出:

\

到这里,再介绍一下使用Ansible安装应用程序的方法。

在本文中,我们将使用playbook文件在托管节点上进行安装。我们将安装Nginx Web服务器、vim,并检查Rocky Linux节点上的系统正常运行时间,因此我们需要在控制节点上创建这个playbook文件:

vim playbook.yaml

在YAML文件中,添加以下信息:

- hosts: all

  become: yes

  tasks:

    - name: Install latest version of nginx on Rocky Linux Node

      yum: name=nginx state=latest

    - name: start nginx

      service:

          name: nginx

          state: started

    - name: Install latest version of vim on Rocky Linux Node

      yum: name=vim   state=latest

    - name: start nginx

      service:

          name: nginx

          state: started

    - name: Check uptime of the remote host

      shell: uptime

      register: command_output

    - debug:

             var: command_output.stdout_lines

现在执行如下所示的playbook文件:

ansible-playbook -i ~/.hosts playbook.yaml

样本输出:

\

最后,可通过使用ansible命令检查托管节点上Nginx的状态来确认这一点:

ansible -i ~/.hosts -m shell -a "systemctl status nginx" all

以下为样本输出信息:

192.168.100.119 | CHANGED | rc=0 >>

 nginx.service - The nginx HTTP and reverse proxy server

   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)

   Active: active (running)

  Process: 1789 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)

  Process: 1787 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)

  Process: 1786 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)

 Main PID: 1791 (nginx)

rockylinux8.linuxvmimages.local systemd[1]: Starting The nginx HTTP and reverse proxy server...

192.168.100.118 | CHANGED | rc=0 >>

 nginx.service - The nginx HTTP and reverse proxy server

   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)

   Active: active (running)

  Process: 1787 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)

  Process: 1785 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)

  Process: 1784 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)

 Main PID: 1789 (nginx)

rockylinux8.linuxvmimages.local systemd[1]: Starting The nginx HTTP and reverse proxy server...

rockylinux8.linuxvmimages.local nginx[1785]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

至此,从结果来看,已经表明您在所有托管节点上成功安装了Nginx。这里也要说一句,如果要使用Ansible安装别的应用程序,按照以上方法就可以达到目的。