Maison > Article > Tutoriel système > Résumé de l'utilisation d'ansible : installation d'ansible
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 :
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.
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
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.
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!