Ansible is a configuration management and application deployment tool. Its functions are similar to the current industry configuration management tools Chef, Puppet, and Saltstack. Ansible is developed using the Python language. The Ansible platform was created by Michael DeHaan, the author of the well-known software Cobbler and Func. The first version of Ansible was released in February 2012. Ansible manages machines through the SSH protocol by default, so Ansible does not need to install a client program on the server. You only need to install Ansible on one server. After Ansible is installed, you can manage and control other servers. There is no need to configure a database for it, and Ansible does not start or keep running as daemons. Ansible can achieve the following goals:
According to the official information provided by Ansible, users currently using Ansible include: evernote, rackspace, NASA, Atlassian, twitter, etc.
Note: The above introduction comes from the introduction of ibm developerworks China.
Take centos as an example. There is no ansible in the source by default, but there is ansible in the fedora epel source. After configuring the epel source, you can install it directly through yum. Here is centos6.8 as an example:
# yum install http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm # yum install ansible
In ubuntu and its derivatives, you can install apt-get by adding ppa source, as follows:
$ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible
3. Source code installation
Source code installation requires python2.6 or above, which depends on the modules paramiko, PyYAML, Jinja2, httplib2, simplejson, and pycrypto modules. The above modules can be installed through pip or easy_install. However, since this section mentions source code installation, it is mainly aimed at those that cannot If you are connected to the Internet, you can search for the above package through the pypi site, download it and install it through python setup.py install.
Finally, download the ansible source code package from github or pypi and install it through python setup.py install. Since the installation process is relatively simple, we will skip it here and mainly introduce the problems you may encounter after installation.
a. When installing PyYAML, the error is reported as follows:
# 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
In centos6.8 system, it can be solved through yum -y install libyaml package, or provide the package from the ISO file and install it through rpm -ivh.
b. After installing ansible, the error is as follows:
[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'
When importing the paramiko package, the error is reported as follows:
>>> 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'
After searching online, it was confirmed that the GMP version that the pycrypto package depends on when installing is incorrect. The details can be verified through the following steps:
[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:
Open the /usr/lib64/python2.6/site-packages/Crypto/Util/number.py file, you can see the comment on line 56, which requires libgmp to be v5 or above. The current version of the system is 4.1.4. If you temporarily comment out the following two lines, Ansible will execute normally.
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)
However, this method is only a temporary solution. A better way is to upgrade libgmp to a version that meets the requirements.
c. An error occurs during execution
[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
Install the sshpass program. It is not available in the default source. I chose to download and install it directly from the sohu source.
There is an examles package in the source code downloaded from pypi. You can use this example file as the default configuration, as follows:
[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/
After using the default sample configuration file, edit the /etc/ansible/hosts file and verify whether ansible is available by:
[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 the above configuration, I configured a test group. There are three hosts in this group. All three hosts use root authentication. The passwords of the three hosts are 361way.com, abc123, and 91it.org.
Note: The following user and password items are optional. When key authentication is configured, you can operate directly without using a password. If a key is not used, you can also use the -k parameter in ansible to ask for a manual password before the operation.
[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
After executing the above instructions, the results will be output, proving that the installation is successful.
The above is the detailed content of Summary of ansible usage: ansible installation. For more information, please follow other related articles on the PHP Chinese website!