SUSE Linux 11编译安装Ansible自动化运维管理工具

ANSIBLE

Ansible是一个使用Python语言开发的Linux平台下的自动化运维管理工具,它支持远程管理绝大多数Linux或Windows主机。Ansible默认通过SSH协议管理机器,即只需要在管理主机上安装Ansible就可以远程管理Linux主机,被托管节点主机不需要安装。对于Windows机器则是通过与Windows的Winrm Service服务(PowerShell3.0需要以上的版本)进行远程管理。

Ansible需要Python2.6或Python2.7以上(包括3.0以上)的版本支持,目前大多数Linux发行版都默认安装了Python2.6以上的版本。安装Ansible有多种安装方式,比如YUM、apt-get、pip等、或者源码编译安装等。绝大数的情况下都可以参照Ansible官方给出的安装文档进行安装:http://docs.ansible.com/ansible/latest/intro_installation.html

在本文中,将介绍如何在SUSE Linux Enterprise Server 11 SP3上进行编译安装Ansible,并使用SUSE作为管理主机。

编译安装Ansible步骤


1. 安装Python2.7

2. 安装Setuptools37

3. 安装OpenSSL 1.0.2l

4. 安装Python Pypi模块

5. 安装Ansible

6. 配置SSH密钥

7. 远程执行命令

安装前的准备

为了能够顺利完成在SUSE上编译安装软件,我们最好在系统安装完之后,添加一个本地的zypper安装源,它是SUSE的安装镜像文件或SDK镜像文件,里面包含了系统所有的系统基础软件,如编译软件、devel开发包、glibc、头文件、库文件等。

添加ISO镜像源

# zypper in http://172.16.10.6/iso/SLES-11-SP3-x86_64/ SLES-11-SP3-x86_64

添加软件开发工具包(SDK)源

# zypper in http://172.16.10.6/iso/SLE-11-SP3-SDK-DVD1/ SLE-11-SP3-SDK-DVD1

当然,也可以将需要安装的包都直接下载下来传到主机上

linux-69rz:/usr/local/src/ansible_source # ls
Babel-2.3.2.tar.gz        cffi-1.10.0.tar.gz                         paramiko-2.2.2.tar.gz
Jinja2-2.9.6.tar.gz       cryptography-2.1.3.tar.gz                  pyasn1-0.4.2.tar.gz
MarkupSafe-0.23.tar.gz    ecdsa-0.12.tar.gz                          pycparser-2.18.tar.gz
PyNaCl-1.2.0.tar.gz       enum34-1.1.5.tar.gz                        pycrypto-2.6.tar.gz
PyYAML-3.12.tar.gz        idna-2.5.tar.gz                            pycurl-7.19.3.1.tar.gz
Python-2.7.14.tgz         ipaddress-1.0.12.tar.gz                    pytz-2016.6.tar.gz
ansible-2.3.2.0.tar.gz    libffi-3.2.1.tar.gz                        setuptools-37.0.0.zip
ansible-2.4.1.0.tar.gz    libopenssl-devel-0.9.8j-0.50.1.x86_64.rpm  simplejson-3.8.2.tar.gz
asn1crypto-0.23.0.tar.gz  openssl-1.0.2l.tar.gz                      six-1.11.0.tar.gz
bcrypt-3.1.4.tar.gz       pam-devel-1.1.5-0.10.17.x86_64.rpm         zlib-devel-1.2.7-0.10.128.x86_64.rpm

1、安装Python2.7

下载Python https://www.python.org/downloads/

用tar解压并编译安装

# tar -zxf Python-2.7.14.tgz
# ./configure --prefix=/usr/local/python2.7
# make && make install

替换旧版本的Python环境变量、库文件等

# rm -rf /usr/bin/python   #删除旧版本/usr/bin下的python执行程序
# rm -rf /usr/lib64/python  #删除旧版本的/usr/lib64下的python库目录

创建Python2.7程序与lib文件软链接

# ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python2.7
# ln -s /usr/bin/python2.7 /usr/bin/python
# ln -s /usr/local/python2.7/lib/python2.7 /usr/lib64/python2.7
# ln -s /usr/lib64/python2.7 /usr/lib64/python
# ln -s /usr/local/python2.7/include/python2.7 /usr/include/python2.7

安装完后使用python -V查看当前系统的默认Python版本

# python -V
Python 2.7.14

2、安装Setuptools37

下载Setuptools https://pypi.python.org/pypi/setuptools

解压并使用python setup.py install进行安装

# unzip setuptools-37.0.0.zip
# cd setuptools-37.0.0/
# python setup.py install

...
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying setuptools.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying setuptools.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying setuptools.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying setuptools.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying setuptools.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying setuptools.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying setuptools.egg-info/zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFO
creating dist
creating 'dist/setuptools-37.0.0-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing setuptools-37.0.0-py2.7.egg
Copying setuptools-37.0.0-py2.7.egg to /usr/local/python2.7/lib/python2.7/site-packages
Adding setuptools 37.0.0 to easy-install.pth file
Installing easy_install script to /usr/local/python2.7/bin
Installing easy_install-2.7 script to /usr/local/python2.7/bin
 
Installed /usr/local/python2.7/lib/python2.7/site-packages/setuptools-37.0.0-py2.7.egg
Processing dependencies for setuptools==37.0.0
Finished processing dependencies for setuptools==37.0.0

3、安装OpenSSL 1.0.2l

下载 OpenSSL https://www.openssl.org/

安装pam-devel、zlib-devel

# rpm -ivh zlib-devel-1.2.7-0.10.128.x86_64.rpm
# rpm -ivh pam-devel-1.1.5-0.10.17.x86_64.rpm

安装OpenSSL

# tar -zxf openssl-1.0.2l.tar.gz
# cd openssl-1.0.2l/
 
# mv /etc/ssl /etc/ssl_rpm
# ./config --prefix=/usr/local/openssl --openssldir=/etc/ssl shared zlib zlib-dynamic
# make && make install

备份旧版本的openssl

# mkdir /usr/local/openssl_rpm_bak
# mv /usr/bin/openssl /usr/local/openssl_rpm_bak/usr_bin_openssl
# mv /usr/include/openssl /usr/local/openssl_rpm_bak/usr_include_openssl

创建或链接新版本的OpenSSL程序以及库文件

# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# mkdir -pv /usr/lib64/openssl
# ln -s /usr/local/openssl/lib/engines /usr/lib64/openssl/engines
# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
# ldconfig

查看OpenSSL版本信息

# openssl version
OpenSSL 1.0.2l  25 May 2017

4、安装Python Pypi模块

1) Pycparser

安装pycparser https://pypi.python.org/simple/pycparser/

# tar -zxf pycparser-2.18.tar.gz
# cd pycparser-2.18/
# python setup.py install

2) cffi

安装cffi Python模块之前,需要先安装libffi

安装Libffi(http://sourceware.org/libffi/)

# tar -zxf libffi-3.2.1.tar.gz
# ./configure && make && make install

安装 cffi (https://pypi.python.org/simple/cffi/)

# tar zxf cffi-1.10.0.tar.gz
# cd cffi-1.10.0/
# python setup.py install


3) ipaddress

安装ipaddress( https://pypi.python.org/simple/ipaddress/)

# tar -zxf ipaddress-1.0.12.tar.gz
# cd ipaddress-1.0.12/
# python setup.py install

4) enum34

安装enum34 (https://pypi.python.org/simple/enum34/)

# tar -zxf enum34-1.1.5.tar.gz
# cd enum34-1.1.5/
# python setup.py install


5) six

安装six https://pypi.python.org/simple/six/

# tar -zxf six-1.11.0.tar.gz 
# cd six-1.11.0/
# python setup.py install

6) asn1crypto

安装asn1crypto https://pypi.python.org/simple/asn1crypto/

# tar -zxf asn1crypto-0.23.0.tar.gz
# cd asn1crypto-0.23.0/
# python setup.py install


7) idna

安装idna https://pypi.python.org/simple/idna/

# tar -zxf idna-2.5.tar.gz
# cd idna-2.5/
# python setup.py install

8) cryptography

安装cryptography https://pypi.python.org/simple/cryptography/

# tar -zxf cryptography-2.1.3.tar.gz
# cd cryptography-2.1.3/
# python setup.py install

9) pyasn1

安装pyasn1 https://pypi.python.org/simple/pyasn1/

# tar -zxf pyasn1-0.4.2.tar.gz 
# cd pyasn1-0.4.2/
# python setup.py install

10) PyYAML

安装PyYAML https://pypi.python.org/simple/PyYAML/

# tar -zxf PyYAML-3.12.tar.gz
# cd PyYAML-3.12/
# python setup.py install

11) MarkupSafe

安装MarkupSafe https://pypi.python.org/simple/MarkupSafe/

# tar -zxf MarkupSafe-0.23.tar.gz
# cd MarkupSafe-0.23/
# python setup.py install

12) jinja2

安装jinja2 https://pypi.python.org/simple/jinja2/

# tar -zxf Jinja2-2.9.6.tar.gz 
# cd Jinja2-2.9.6/
# python setup.py install

13) simplejson

安装simplejson https://pypi.python.org/simple/simplejson/

# tar -zxf simplejson-3.8.2.tar.gz
# cd simplejson-3.8.2/
# python setup.py install

14) bcrypt

安装bcrypt https://pypi.python.org/simple/bcrypt/

# tar -zxf bcrypt-3.1.4.tar.gz
# cd bcrypt-3.1.4/
# python setup.py install

15) pynacl

安装pynacl https://pypi.python.org/simple/pynacl/

# tar -zxf PyNaCl-1.2.0.tar.gz
# cd PyNaCl-1.2.0/
# python setup.py install

16) pycurl

安装pycurl https://pypi.python.org/simple/pycurl/

# tar -zxf pycurl-7.19.3.1.tar.gz
# cd pycurl-7.19.3.1/
# python setup.py install

17) paramiko

安装paramiko https://pypi.python.org/simple/paramiko/

# tar -zxf paramiko-2.2.2.tar.gz
# cd paramiko-2.2.2/
# python setup.py install

18) pytz

安装pytz https://pypi.python.org/simple/pytz/

# tar -zxf pytz-2016.6.tar.gz
# cd pytz-2016.6/
# python setup.py install


19) babel

安装babel https://pypi.python.org/simple/babel/

# tar -zxf Babel-2.3.2.tar.gz
# cd Babel-2.3.2/
# python setup.py install

20) pycrypto

安装pycrypto https://pypi.python.org/simple/pycrypto/

# tar -zxf pycrypto-2.6.tar.gz
# cd pycrypto-2.6/
# python setup.py install

21) ecdsa

安装ecdsa https://pypi.python.org/simple/ecdsa/

# tar -zxf ecdsa-0.12.tar.gz
# cd ecdsa-0.12/
# python setup.py install

5、安装Ansible

下载Ansible最新版本的源码包 https://pypi.python.org/pypi/ansible

# tar -zxf ansible-2.4.1.0.tar.gz -C /usr/local/
# cd /usr/local/ansible-2.4.1.0/
# python setup.py install

到这Ansible就安装完成了,可以看到Ansible仅仅是作为一个Python的一个Pypi模块被安装使用。相当简单。

接下来创建Ansible配置文件就大功告成了,Ansible的主配置文件目录为/etc/ansible/。我们将配置文件重源码包里拷贝到个目录下:

# mkdir /etc/ansible
linux-69rz:/usr/local/ansible-2.4.1.0 # cp examples/hosts /etc/ansible/
linux-69rz:/usr/local/ansible-2.4.1.0 # cp examples/ansible.cfg /etc/ansible/

我们在/etc/ansible/hosts文件下添加被管理节点的主机或主机组的连接信息,打开这个文件在末尾添加一个组名为[hosts]的组:

#/etc/ansible/hosts END
[hosts]
172.16.10.31
172.16.10.32


6、配置SSH密钥


在Ansible管理主机上配置SSH密钥,我们创建一个rsa类型,字节长度为2048的密钥

linux-69rz:/usr/local/ansible-2.4.1.0 # ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
5d:f1:b9:79:4c:62:13:08:f5:9b:ba:2a:67:09:5c:91 [MD5] [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|          .+o..  |
|          E .+ o |
|           .. B .|
|         ... . X |
|       .S..   = o|
|        o    . . |
|         . ..    |
|        . +  .   |
|         +...    |
+--[MD5]----------+

将SSH密钥发送到被管理节点主机上

linux-69rz:/usr/local/ansible-2.4.1.0 # ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.10.31
linux-69rz:/usr/local/ansible-2.4.1.0 # ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.10.32

7、远程执行命令

那么在编译安装完Ansible之后,我们来测试一下是否能正常使用

linux-69rz:/usr/local/ansible-2.4.1.0 # cp bin/ansible /usr/bin/
linux-69rz:/usr/local/ansible-2.4.1.0 # cp bin/ansible-playbook

linux-69rz:/usr/local/ansible-2.4.1.0 # ansible 172.16.10.31 -m ping
172.16.10.31 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
 
 
linux-69rz:/usr/local/ansible-2.4.1.0 # ansible 172.16.10.31 -m shell -a "hostname"
172.16.10.31 | SUCCESS | rc=0 >>
linux-fkvy

OK, 看上去安装已经完美通过了。来总结一下:

~ Ansible支持绝大多数Linux发行版的安装,如RHEL、SUSE、Ubuntu、Gentoo、FreeBSD、Arch Linux、或者Mac OS等

~ 只有Linux主机才能被作为Ansibe的管理主机,Windows可以被Ansible远程管理

~ 编译安装Ansible时,需要升级Python至2.7以上的版本,并且需要升级OpenSSL软件(同样适用于其他Linux版本的编译安装)

~ 编译安装Ansibe后,需要手动创建Ansible的配置文件

时间: 2024-10-12 22:49:28

SUSE Linux 11编译安装Ansible自动化运维管理工具的相关文章

CheungSSH 史上最牛的比Ansible更好用的自动化运维管理工具

CheungSSH自动化运维管理工具 说明:CheungSSH自动化运维管理工具是由[张其川 Cheung Kei-Chuen]开发的易于部署安装,操作简单.功能实用.无需安装任何插件.提供技术支持.授权免费使用的一款运维利器. 一.下载安装CheungSSH 特别提示:    CheungSSH由于是批量的管理操作, 所以暂时不支持交互式,比如vi,top,ping等等:当然,如果懂得如何取消交互,那么也是可以的. 使用平台介绍: CheungSSH只适用于Linux系统和Unix系统,因为是

ansible自动化运维必备工具详解

第2章 ansible简单介绍: 2.1 ansible是什么? ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 仅需在管理工作站上安装 ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端. ansible 应用程序存在于 epel( 第三方社区 ) 源,依赖于很多 python 组件 python语言是运维人员必会的语言!ansible是一个基于Python开

Ansible-Tower自动化运维管理环境

公司中实现运维自动化的架构中主要用到ansible,ansible脚本在部署服务器指令行中显得不太直观.Ansible-Tower(之前叫做awx)是将ansible的指令界面化,简明直观,简单易用.Ansibke-tower其实就是一个图形化的任务调度,复杂服务部署,IT自动化的一个管理平台,属于发布配置管理系统,支持Api及界面操作,Django编写.Ansible-tower可以通过界面从github拉取最新playbook实施服务部署,提高生产效率.当然它也提供一个RESET API和命

fengyun.rui大牛写的基于flask的python系统运维管理工具:happyshell

项目地址:https://github.com/rfyiamcool/happyshell/ 大牛博文:http://rfyiamcool.blog.51cto.com/1030776/1122445 源码写满"卧槽", 大牛当真性情中人,还望注意下的好. ========= 如果你是来找个趁手的python系统运维管理工具的话,那么,这不是你要的. 芮大牛写的这东西,单放giuthub上的源码,想完整跑起来可不容易,报错哗哗的. 所以,在我使用之后,我特地写篇博客来鄙视一下. 首先g

在SUSE LINUX上编译安装CouchDB1.5.0

按照这个步骤装了两台,在SUSE上安装是没有问题了,打包的话还在研究,查了一下光拷贝编译后文件有些问题. 软件版本及依赖: 1.SpiderMonkey 1.7.0 2.icu4c 4.2.1 3.libcurl 7.36.0 4.ncurses 5.9 5.openssl 1.0.1g 6.erlang R16B03 依赖 ncurses.openssl 7.couchDB 1.5.0 依赖上述所有 SpiderMonkey: js-1.7.0.tar.gz 1 tar 2 cd 3 make

rhel6.9安装ansible自动化运维工具

一.测试环境说明 1.系统:rhel6.9 2.ip地址:20.20.20.24/24 20.20.20.41/24 20.20.20.42/24 3.以下操作使用root身份进行,也可以使用具有sudo权限的用户进行相关操作 二.环境准备 1.关闭iptables防火墙.selinux # /etc/init.d/iptables stop # chkconfig iptables off # setenforce 0 # sed -i '/^SELINUX=/cSELINUX=disable

开发自动化运维管理平台

开发环境: 操作系统:Cenots6.6 Web框架:tornado-4.0.2 数据库:mysql-5.1.73 相关软件包: tornado相关依赖包 backports.ssl_match_hostname-3.4.0.2.tar.gz setuptools-5.7.tar.gz certifi-1.0.1.tar.gz tornado-4.0.2.tar.gz torndb数据库环境需要软件包 MySQL-python-1.2.5.zip torndb-0.2.tar.gz window

系统批量运维管理工具pexpect

1.介绍pexpect 通过pexpect我们可以实现对ssh,ftp,passwd,telnet等命令进行自动交互,不需要人工干预达到自动目的. 2.pexpect的组件介绍 2.1.spawn类 作用:启动和控制子应用程序,其构造函数如下: class pexpect.spawn(command,args=[],timeout=30,maxread=2000,searchwindowsize=None,logfile=None,cwd=None,env=None,ignore_sighup=

简单聊一聊Ansible自动化运维

一.Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事. 1.Ansible特点 Ansible自2012年发布以来,很快在全球流行,其特点如下: Ansible基于Python开发,运维工程师对其二次