Maison  >  Article  >  Tutoriel système  >  Résumé de l'utilisation d'ansible : installation d'ansible

Résumé de l'utilisation d'ansible : installation d'ansible

WBOY
WBOYoriginal
2024-08-24 07:31:14995parcourir

Résumé de lutilisation dansible : installation dansible

1.Introduction

Ansible est un outil de gestion de configuration et de déploiement d'applications. Ses fonctions sont similaires aux outils de gestion de configuration actuels de l'industrie Chef, Puppet et Saltstack. Ansible est développé en utilisant le langage Python. La plateforme Ansible a été créée par Michael DeHaan, l'auteur des logiciels bien connus Cobbler et Func. La première version d'Ansible a été publiée en février 2012. Ansible gère les machines via le protocole SSH par défaut, Ansible n'a donc pas besoin d'installer un programme client sur le serveur. Il vous suffit d'installer Ansible sur un serveur. Une fois Ansible installé, vous pouvez gérer et contrôler d'autres serveurs. Il n'est pas nécessaire de configurer une base de données pour cela, et Ansible ne démarre pas et ne continue pas à s'exécuter en tant que démons. Ansible peut atteindre les objectifs suivants :

  • Déploiement automatisé des applications
  • Configuration de gestion automatisée
  • Livraison continue automatisée
  • Gestion automatisée des services cloud (AWS).

Selon les informations officielles fournies par Ansible, les utilisateurs utilisant actuellement Ansible incluent : evernote, rackspace, NASA, Atlassian, Twitter, etc.

Remarque : l'introduction ci-dessus provient de l'introduction d'IBM Developerworks Chine.

2.Installation Ansible
1. Miam installation des sources

Prenons centos comme exemple. Il n'y a pas d'ansible dans la source par défaut, mais il y en a dans la source epel de fedora. Après avoir configuré la source epel, vous pouvez l'installer directement via yum. Voici centos6.8 à titre d'exemple :

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

Dans Ubuntu et ses dérivés, vous pouvez installer apt-get en ajoutant ppa source, comme suit :

$ 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 du code source
L'installation du code source nécessite python2.6 ou supérieur, qui dépend des modules paramiko, PyYAML, Jinja2, httplib2, simplejson et pycrypto. Les modules ci-dessus peuvent être installés via pip ou easy_install. Cependant, puisque cette section mentionne l'installation du code source, il s'adresse principalement à ceux qui ne le peuvent pas. Si vous êtes connecté à Internet, vous pouvez rechercher le package ci-dessus via le site pypi, le télécharger et l'installer via python setup.py install.

Enfin, téléchargez le package de code source ansible depuis github ou pypi et installez-le via python setup.py install. Le processus d'installation étant relativement simple, nous l'ignorerons ici et présenterons principalement les problèmes que vous pourriez rencontrer après l'installation.

a. Lors de l'installation de PyYAML, l'erreur est signalée comme suit :

# 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

Dans le système centos6.8, cela peut être résolu via le package yum -y install libyaml, ou fournir le package à partir du fichier ISO et l'installer via rpm -ivh.

b. Après avoir installé ansible, l'erreur est la suivante :

[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'

Lors de l'importation du package paramiko, l'erreur est signalée comme suit :

>>> 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'

Après une recherche en ligne, il a été confirmé que la version GMP dont dépend le package pycrypto lors de l'installation est incorrecte. Les détails peuvent être vérifiés en suivant les étapes suivantes :

[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.

Solution :

Ouvrez le fichier /usr/lib64/python2.6/site-packages/Crypto/Util/number.py, vous pouvez voir le commentaire à la ligne 56, qui nécessite que libgmp soit v5 ou supérieur. La version actuelle du système est la 4.1.4. Si vous commentez temporairement les deux lignes suivantes, Ansible s'exécutera normalement.

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)

Cependant, cette méthode n'est qu'une solution temporaire. Une meilleure façon consiste à mettre à niveau libgmp vers une version qui répond aux exigences.

c. Une erreur se produit lors de l'exécution

[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

Installez le programme sshpass. Il n'est pas disponible dans la source par défaut. J'ai choisi de le télécharger et de l'installer directement depuis la source sohu.

3. Configuration et vérification Ansible

Il existe un package d'exemples dans le code source téléchargé depuis pypi. Vous pouvez utiliser ce fichier d'exemple comme configuration par défaut, comme suit :

[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/

Après avoir utilisé l'exemple de fichier de configuration par défaut, modifiez le fichier /etc/ansible/hosts et vérifiez si ansible est disponible en :

[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

Dans la configuration ci-dessus, j'ai configuré un groupe de test. Il y a trois hôtes dans ce groupe. Les trois hôtes utilisent l'authentification root. Les mots de passe des trois hôtes sont 361way.com, abc123 et 91it.org.

Remarque : les éléments d'utilisateur et de mot de passe suivants sont facultatifs. Lorsque l'authentification par clé est configurée, vous pouvez opérer directement sans utiliser de mot de passe. Si une clé n'est pas utilisée, vous pouvez également utiliser le paramètre -k dans ansible pour demander un mot de passe manuel avant l'opération.

[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

Après avoir exécuté les instructions ci-dessus, les résultats seront affichés, prouvant que l'installation a réussi.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn