Heim >System-Tutorial >LINUX >Zusammenfassung der Ansible-Nutzung: Ansible-Installation

Zusammenfassung der Ansible-Nutzung: Ansible-Installation

WBOY
WBOYOriginal
2024-08-24 07:31:141037Durchsuche

Zusammenfassung der Ansible-Nutzung: Ansible-Installation

1. Einführung

Ansible ist ein Konfigurationsmanagement- und Anwendungsbereitstellungstool. Seine Funktionen ähneln den aktuellen Branchen-Konfigurationsmanagementtools Chef, Puppet und Saltstack. Ansible wird mit der Python-Sprache entwickelt. Die Ansible-Plattform wurde von Michael DeHaan, dem Autor der bekannten Software Cobbler and Func, erstellt. Die erste Version von Ansible wurde im Februar 2012 veröffentlicht. Ansible verwaltet Maschinen standardmäßig über das SSH-Protokoll, sodass Ansible kein Client-Programm auf dem Server installieren muss. Sie müssen Ansible nur auf einem Server installieren. Nach der Installation von Ansible können Sie andere Server verwalten und steuern. Es ist nicht erforderlich, eine Datenbank dafür zu konfigurieren, und Ansible startet nicht und läuft auch nicht als Daemon weiter. Ansible kann folgende Ziele erreichen:

  • Automatisierte Bereitstellung von Anwendungen
  • Automatisierte Verwaltungskonfiguration
  • Automatisierte kontinuierliche Lieferung
  • Automatisierte (AWS) Cloud-Service-Verwaltung.

Laut den offiziellen Informationen von Ansible gehören zu den Benutzern, die Ansible derzeit nutzen: Evernote, Rackspace, NASA, Atlassian, Twitter usw.

Hinweis: Die obige Einführung stammt aus der Einführung von IBM Developerworks China.

2. Ansible-Installation
1. Leckere Quellinstallation

Nehmen Sie Centos als Beispiel. Ansible ist nicht in der Quelle enthalten, aber in der Fedora-Epel-Quelle ist Ansible vorhanden. Nachdem Sie die Epel-Quelle konfiguriert haben, können Sie es direkt über yum installieren. Hier ist Centos6.8 als Beispiel:

# yum install http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install ansible
2. apt-get-Installation

In Ubuntu und seinen Derivaten können Sie apt-get installieren, indem Sie die PPA-Quelle wie folgt hinzufügen:

$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible

3. Installation des Quellcodes
Die Installation des Quellcodes erfordert Python2.6 oder höher, was von den Modulen Paramiko, PyYAML, Jinja2, httplib2, simplejson und pycrypto abhängt. Die oben genannten Module können jedoch über pip oder easy_install installiert werden. Es richtet sich hauptsächlich an diejenigen, die dies nicht können. Wenn Sie mit dem Internet verbunden sind, können Sie über die Pypi-Site nach dem oben genannten Paket suchen, es herunterladen und über „python setup.py install“ installieren.

Laden Sie abschließend das Ansible-Quellcodepaket von Github oder Pypi herunter und installieren Sie es über Python Setup.py Install. Da der Installationsprozess relativ einfach ist, überspringen wir ihn hier und stellen hauptsächlich die Probleme vor, die nach der Installation auftreten können.

a. Bei der Installation von PyYAML wird der Fehler wie folgt gemeldet:

# python setup.py install
libyaml is not found or a compiler error: forcing --without-libyaml
(if libyaml is installed correctly, you may need to
specify the option --include-dirs or uncomment and
modify the parameter include_dirs in setup.cfg)
running install_lib
running install_egg_info
Removing /usr/lib64/python2.6/site-packages/PyYAML-3.11-py2.6.egg-info
Writing /usr/lib64/python2.6/site-packages/PyYAML-3.11-py2.6.egg-info

Im Centos6.8-System kann das Problem durch yum -y install libyaml package gelöst werden oder das Paket aus der ISO-Datei bereitstellen und über rpm -ivh installieren.

b. Nach der Installation von Ansible ist der Fehler wie folgt:

[root@361way.com ansible-1.9.1]# ansible -h
Traceback (most recent call last):
File "/usr/local/src/ansible-devel/bin/ansible", line 36, in 
from ansible.runner import Runner
File "/usr/local/src/ansible-devel/lib/ansible/runner/__init__.py", line 62, in 
from Crypto.Random import atfork
File "/usr/lib64/python2.6/site-packages/Crypto/Random/__init__.py", line 29, in 
from Crypto.Random import _UserFriendlyRNG
File "/usr/lib64/python2.6/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 38, in 
from Crypto.Random.Fortuna import FortunaAccumulator
File "/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.py", line 39, in 
import FortunaGenerator
File "/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaGenerator.py", line 34, in 
from Crypto.Util.number import ceil_shift, exact_log2, exact_div
File "/usr/lib64/python2.6/site-packages/Crypto/Util/number.py", line 56, in 
if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
AttributeError: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'

Beim Importieren des Paramiko-Pakets wird der Fehler wie folgt gemeldet:

>>> import paramiko
Traceback (most recent call last):
File "", line 1, in 
File "/usr/lib/python2.6/site-packages/paramiko/__init__.py", line 69, in 
from transport import randpool, SecurityOptions, Transport
File "/usr/lib/python2.6/site-packages/paramiko/transport.py", line 32, in 
from paramiko import util
File "/usr/lib/python2.6/site-packages/paramiko/util.py", line 32, in 
from paramiko.common import *
File "/usr/lib/python2.6/site-packages/paramiko/common.py", line 98, in 
from rng import StrongLockingRandomPool
File "/usr/lib/python2.6/site-packages/paramiko/rng.py", line 22, in 
from Crypto.Util.randpool import RandomPool as _RandomPool
File "/usr/lib64/python2.6/site-packages/Crypto/Util/randpool.py", line 30, in 
import Crypto.Random
File "/usr/lib64/python2.6/site-packages/Crypto/Random/__init__.py", line 29, in 
from Crypto.Random import _UserFriendlyRNG
File "/usr/lib64/python2.6/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 38, in 
from Crypto.Random.Fortuna import FortunaAccumulator
File "/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.py", line 39, in 
import FortunaGenerator
File "/usr/lib64/python2.6/site-packages/Crypto/Random/Fortuna/FortunaGenerator.py", line 34, in 
from Crypto.Util.number import ceil_shift, exact_log2, exact_div
File "/usr/lib64/python2.6/site-packages/Crypto/Util/number.py", line 56, in 
if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
AttributeError: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'

Nach einer Online-Suche wurde bestätigt, dass die GMP-Version, von der das Pycrypto-Paket bei der Installation abhängt, falsch ist. Die Details können durch die folgenden Schritte überprüft werden:

[root@361way.com pycrypto-2.6.1]# python setup.py build
running build
running build_py
running build_ext
running build_configure
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

Lösung:

Öffnen Sie die Datei /usr/lib64/python2.6/site-packages/Crypto/Util/number.py. Sie können den Kommentar in Zeile 56 sehen, der erfordert, dass libgmp v5 oder höher ist. Die aktuelle Version des Systems ist 4.1.4. Wenn Sie die folgenden beiden Zeilen vorübergehend auskommentieren, wird Ansible normal ausgeführt.

if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
_warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack 
vulnerability.", PowmInsecureWarning)

Diese Methode ist jedoch nur eine vorübergehende Lösung. Eine bessere Möglichkeit besteht darin, libgmp auf eine Version zu aktualisieren, die den Anforderungen entspricht.

c. Während der Ausführung ist ein Fehler aufgetreten

[root@361way.com src]# ansible test -m raw -a 'uptime'
10.212.52.14 | FAILED => to use the 'ssh' connection type with passwords, you must install the sshpass program
10.212.52.16 | FAILED => to use the 'ssh' connection type with passwords, you must install the sshpass program

Installieren Sie das SSHPass-Programm. Es ist in der Standardquelle nicht verfügbar. Ich habe mich entschieden, es direkt von der Sohu-Quelle herunterzuladen und zu installieren.

3. Ansible-Konfiguration und -Verifizierung

Der von pypi heruntergeladene Quellcode enthält ein Beispielpaket. Sie können diese Beispieldatei wie folgt als Standardkonfiguration verwenden:

[root@361way.com ansible-1.9.1]# mkdir -p /etc/ansible
[root@361way.com ansible-1.9.1]# cp -rp examples/* /etc/ansible/
[root@361way.com ansible-1.9.1]# cd /etc/ansible/

Nachdem Sie die Standard-Beispielkonfigurationsdatei verwendet haben, bearbeiten Sie die Datei /etc/ansible/hosts, um zu überprüfen, ob Ansible verfügbar ist:

[root@361way.com ~]# cat /etc/ansible/hosts
[test]
10.212.52.252 ansible_ssh_user=root ansible_ssh_pass=361way.com
10.212.52.14 ansible_ssh_user=root ansible_ssh_pass=abc123
10.212.52.16 ansible_ssh_user=root ansible_ssh_pass=91it.org

In der obigen Konfiguration habe ich eine Testgruppe konfiguriert. Es gibt drei Hosts in dieser Gruppe. Die Passwörter der drei Hosts sind 361way.com, abc123 und 91it.org.

Hinweis: Die folgenden Benutzer- und Passwortelemente sind optional. Wenn die Schlüsselauthentifizierung konfiguriert ist, können Sie direkt ohne Verwendung eines Passworts arbeiten. Wenn kein Schlüssel verwendet wird, können Sie auch den Parameter -k in ansible verwenden, um vor dem Vorgang nach einem manuellen Passwort zu fragen.

[root@361way.com ~]# ansible test -a 'uptime'
10.212.52.252 | success | rc=0 >>
18:01pm up 21 days 3:24, 3 users, load average: 0.39, 0.38, 0.35
10.212.52.16 | success | rc=0 >>
18:09pm up 329 days 1:01, 2 users, load average: 0.08, 0.03, 0.05
10.212.52.14 | success | rc=0 >>
18:08pm up 329 days 0:23, 2 users, load average: 0.06, 0.06, 0.05

Nachdem Sie die obigen Anweisungen ausgeführt haben, werden die Ergebnisse ausgegeben, die beweisen, dass die Installation erfolgreich war.

Das obige ist der detaillierte Inhalt vonZusammenfassung der Ansible-Nutzung: Ansible-Installation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn