GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren und verwenden Sie Ansible unter Debian 11

Ansible ist ein kostenloses Open-Source-Tool und eines der beliebtesten Tools zur Konfigurationsverwaltung. Es ist ein plattformübergreifendes Tool, das Cloud Computing, Konfigurationsmanagement, Paketinstallation und Dienstkonfiguration vereinfacht. Es verwendet eine YAML-Datei, die die Schritte enthält, die der Benutzer auf einem bestimmten Computer ausführen möchte. Mit Ansible können Sie mehr als nur Hosts mit einem einzigen Befehl konfigurieren und verwalten. Ansible ist eine Alternative zu den anderen Konfigurationsverwaltungstools wie Chef und Puppet.

In diesem Artikel zeige ich Ihnen, wie Sie das Ansible-Konfigurationsverwaltungstool unter Debian 11 installieren und verwenden.

Voraussetzungen

  • Drei Server mit Debian 11.
  • Ein Root-Passwort wird auf jedem Server konfiguriert.

Für dieses Tutorial verwenden wir das folgende Setup:

  • Ansible-Steuerung - 192.168.10.9
  • Ansible-Hosts - 192.168.10.10, 192.168.10.11

Installieren Sie Ansible unter Debian 11

Standardmäßig ist das Ansible-Paket nicht im Debian-Standard-Repository enthalten. Es gibt zwei Möglichkeiten, Ansible unter Debian 11 zu installieren.

  1. Verwendung des APT-Befehls
  2. PIP-Befehl verwenden

Installieren Sie Ansible mit APT

Zunächst müssen Sie einige Abhängigkeiten in Ihrem System installieren. Sie können die erforderlichen Abhängigkeiten mit dem folgenden Befehl installieren:

apt-get install gnupg2 curl wget -y

Sobald alle Abhängigkeiten installiert sind, bearbeiten Sie die APT-source.list und fügen das Ansible-Repository hinzu:

nano /etc/apt/sources.list

Fügen Sie die folgende Zeile hinzu:

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

Speichern und schließen Sie die Datei, wenn Sie fertig sind, und fügen Sie dann den Ansible GPG-Schlüssel mit dem folgenden Befehl hinzu:

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

Sie sollten die folgende Ausgabe sehen:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.lFEjztT9TY/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

Aktualisieren Sie nun das Repository und installieren Sie Ansible mit dem folgenden Befehl:

apt-get update
apt-get install ansible -y

Überprüfen Sie nach der Installation von Ansible die Ansible-Version mit dem folgenden Befehl:

ansible --version

Sie sollten die folgende Ausgabe erhalten:

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 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]

Installieren Sie Ansible mit PIP

Zuerst müssen Sie Python und PIP auf Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:

apt-get install python3 python3-pip -y

Verwenden Sie nach Abschluss der Installation den pip-Befehl, um Ansible wie unten gezeigt zu installieren:

pip install ansible

sshpass installieren

sshpass ist ein Befehlszeilentool, mit dem Sie Kennwörter mit SSH-Befehlen bereitstellen können. Hier verwenden wir sshpass auf dem Ansible-Controller-Knoten mit Ansible, um einen Remote-Host zu authentifizieren.

Sie können den sshpass mit dem folgenden Befehl installieren:

apt-get install sshpass -y

Stellen Sie als Nächstes eine Verbindung zum ersten Ansible-Remote-Host her, um Ihren known_hosts einen SSH-Fingerabdruck hinzuzufügen Datei:

ssh [email protected]

Sie werden wie unten gezeigt aufgefordert, ein SSH-Passwort anzugeben:

The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
Password: 

Geben Sie Ihr Passwort ein und drücken Sie die Eingabetaste, um einen SSH-Fingerabdruck hinzuzufügen.

Verbinden Sie sich als Nächstes mit dem zweiten Ansible-Remote-Host, um einen SSH-Fingerabdruck zu Ihrer known_hosts-Datei hinzuzufügen:

ssh [email protected]

Sie werden wie unten gezeigt aufgefordert, ein SSH-Passwort anzugeben:

The authenticity of host '192.168.10.11 (192.168.10.11)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.11' (ECDSA) to the list of known hosts.
Password: 

Geben Sie Ihr Passwort ein und drücken Sie Enter .

Sie können jetzt den Befehl sshpass verwenden, um die SSH-Verbindung zu überprüfen:

sshpass -p yourpassword ssh [email protected]

Ansible-Hosts-Inventardatei erstellen

Als Nächstes müssen Sie eine Inventardatei erstellen, um die IP-Adresse, den Benutzernamen, das Passwort und den SSH-Port Ihres Remote-Hosts zu definieren:

nano ~/.hosts

Fügen Sie die folgenden Zeilen hinzu:

[servers]
server1 ansible_host=192.168.10.10 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22
server2 ansible_host=192.168.10.11 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22

Speichern und schließen Sie die Datei.

Hinweis :In der obigen Datei verwenden wir die IP, den Benutzernamen, das Passwort und den SSH-Port von Remote-Hosts.

Arbeiten mit Ansible

Ansible bietet viele Module, die Ihnen helfen, Remote-Hosts zu verwalten.

Die grundlegende Syntax zum Ausführen von Ansible wie unten gezeigt:

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

Lassen Sie uns die Ping-Verbindung zu allen Hosts überprüfen:

ansible -i ~/.hosts -m ping all

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

server2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Wenn Sie die Ping-Konnektivität des einzigen Servers1 überprüfen möchten, führen Sie den folgenden Befehl aus:

ansible -i ~/.hosts -m ping server1

Sie sollten die folgende Ausgabe erhalten:

server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Sie können das Shell-Modul verwenden, um alle Befehle auf den Remote-Hosts auszuführen.

Um beispielsweise „free -m auszuführen " Befehl auf server2, führen Sie den folgenden Befehl aus:

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

Sie sollten die folgende Ausgabe sehen:

server2 | CHANGED | rc=0 >>
               total        used        free      shared  buff/cache   available
Mem:            1982         128         491           2        1363        1669
Swap:              0           0           0

Um eine "df -h " commad auf server2, führen Sie den folgenden Befehl aus:

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

Sie sollten die folgende Ausgabe erhalten:

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            976M     0  976M   0% /dev
tmpfs           199M  404K  198M   1% /run
/dev/sda1        50G  2.4G   45G   5% /
tmpfs           992M  124K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           199M     0  199M   0% /run/user/0

Ansible stellt ein geeignetes Modul bereit, um beliebige Pakete auf den Remote-Hosts zu installieren.

Zur Installation von Nginx Paket auf server1 führen Sie den folgenden Befehl aus:

ansible -i ~/.hosts -m ansible.builtin.apt -a "name=nginx state=present" server1

Sie sollten die folgende Ausgabe erhalten:

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "cache_update_time": 1631424599,
    "cache_updated": false,
    "changed": true,
    "stderr": "",
    "stderr_lines": [],
        "Upgrading binary: nginx.",
        "Setting up nginx (1.18.0-6.1) ...",
        "Processing triggers for man-db (2.9.4-2) ...",
        "Processing triggers for libc-bin (2.31-13) ..."
    ]
}

Führen Sie den folgenden Befehl aus, um den Status des Nginx-Dienstes auf server1 zu überprüfen:

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

Sie sollten die folgende Ausgabe erhalten:

server1 | CHANGED | rc=0 >>
? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-09-12 05:55:36 UTC; 49s ago
       Docs: man:nginx(8)
    Process: 10761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 10764 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 10871 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 5.8M
        CPU: 54ms
     CGroup: /system.slice/nginx.service
             ??10871 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??10874 nginx: worker process

Sep 12 05:55:36 ansible systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 12 05:55:36 ansible systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Sep 12 05:55:36 ansible systemd[1]: Started A high performance web server and a reverse proxy server.

Ansible bietet ein Benutzermodul zum Erstellen und Verwalten von Benutzern auf den Remote-Hosts.

So erstellen Sie einen neuen Benutzer mit dem Namen user1 Führen Sie auf server1 den folgenden Befehl aus:

ansible -i ~/.hosts -m ansible.builtin.user -a "name=user1 password=yourpassword" server1

Sie sollten die folgende Ausgabe sehen:

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": true,
    "comment": "",
    "create_home": true,
    "group": 1000,
    "home": "/home/user1",
    "name": "user1",
    "password": "NOT_LOGGING_PASSWORD",
    "shell": "/bin/sh",
    "state": "present",
    "system": false,
    "uid": 1000
}

Schlussfolgerung

In diesem Artikel haben Sie gelernt, wie Sie Ansible mit APT und PIP installieren. Sie haben auch gelernt, wie Sie verschiedene Ansible-Module verwenden, um Remote-Hosts zu verwalten. Ich hoffe, Sie haben jetzt genug Verständnis für Ansible. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.


Debian
  1. So installieren und verwenden Sie Debian-Backports

  2. So installieren und verwenden Sie NVM unter Debian 11

  3. So installieren und verwenden Sie FFmpeg unter Debian 10

  4. So verwenden Sie Ansible zum Installieren und Konfigurieren von Redis 6 unter Debian 11

  5. So installieren Sie Ansible unter Debian 11

So installieren und verwenden Sie FFmpeg unter Debian 11

So installieren und verwenden Sie Ansible unter Debian 10

So installieren und verwenden Sie Mono unter Debian 11

So installieren und verwenden Sie PHP Composer unter Debian 11

So installieren und verwenden Sie Tripwire unter Debian 11

So installieren und verwenden Sie Telnet unter Debian 11 Bullseye