Ansible上的解释网上已经相当多了,完全没有接触过的我来说,看了几篇之后,发现大部分都说一般的业务使用ansible完全够用,没有必要去使用puppet这种巨型工具,然后是通过ssh来操作,是python paramiko开发,不过就使用来看,ansible,对于我们新手来说还是挺容易上手的。现在就部署吧:
首先我是虚拟机,采用的是Centos6.5的版本 ,yum就是原始的啦,== 感觉不连接网络,包都要自己一个一个下,找包好麻烦,特别是安装python的时候。
系统版本:Centos6.5
网络状态:已连接
(下面的下面是我用2.6 安装的艰难历程TOT, 用python2.7真的好容易就装好了好么TOT )
python2.7:
首先肯定是 依赖解决啦啦啦
yum -y install wget gcc gcc-c++ readline-devel pcre-devel openssl-devel perl libffi-devel sqlite-devel lua-devel
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
tar xvzf Python-2.7.8.tgz
cd Python-2.7.8
./configure --prefix=/usr/local -----------这个路径指定存放,不然找不到TOT
make
make install
ln -sf /usr/local/bin/python2.7 /usr/bin/python -----改成默认python2.7哇咔咔
sed -i '1d' /usr/bin/yum
sed -i '1i#!/usr/bin/python2.6' /usr/bin/yum ---------不这么做yum就用不了哟
接下来就是装pip啦 哈哈
---pip
# wget https://bootstrap.pypa.io/get-pip.py /tmp/
#python get-pip.py
那些ansible要用的模块就交给它啦
#pip install pycrypto PyYAML Jinja2 paramiko simplejson
# wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz
# tar xvzf setuptools-7.0.tar.gz
# cd setuptools-7.0
# python setup.py install
然后一键安装模块哈哈 # easy_install pycrypto PyYAML Jinja2 paramiko simplejson ) -----我是用的介个 嘿嘿
然后我就没有用官网的包 直接借鉴别人的啦 嘿嘿 很感谢
安装Ansible
# wget https://github.com/ansible/ansible/archive/v1.7.2.tar.gz
# tar xvzf ansible-1.7.2.tar.gz
# cd ansible-1.7.2
# python setup.py install
该拷贝的拷贝
1. # mkdir -p /etc/ansible
2. # cp -rp examples/* /etc/ansible/ -------------这个是下载的包的里面的拷贝到我们自己/etc/ansible里面 就懒得创建啦
3. # cd /etc/ansible/
看看有没有ansible 命令 吼吼
[root@cet1 handlers]# ansible --version
ansible 1.7.2
最后 那就是生成密钥来控制机器啦
ssh 的证书登录方式的配置
1. 客户端创建一组密码钥匙 ssh-keygen -t rsa -b 4096
-rw------- 1 root root 3239 May 9 14:35 id_rsa <-- 私钥
-rw-r--r-- 1 root root 736 May 9 14:35 id_rsa.pub <-- 公钥
2. 把客户端所创建的公钥id_rsa.pub传给服务器
3. 服务器把客户端的公钥添加到文件$HOME/.ssh/authorized_keys 中,具体如下:
假设想允许客户端以用户u9的身份登录到服务端,那么就把公钥放到
/home/u9/.ssh/authorized_keys 里面。
如果想允许客户端以用户root的身份登录到服务端,那么就把公钥放到
/root/.ssh/authorized_keys 里面。
[root@cet1 ansible]# cat /etc/ansible/hosts
[test]
192.168.100.59
192.168.100.178
192.168.100.178 | success | rc=0 >>
20:53:42 up 1:40, 0 users, load average: 0.00, 0.00, 0.00
192.168.100.59 | success | rc=0 >>
20:53:46 up 1:59, 2 users, load average: 0.00, 0.00, 0.00
安装完毕 !!撒花!!
上面安装部分有我网上搜的啦实在不想打 = =
可以参看: 来源: http://www.linuxidc.com/Linux/2015-02/112774.htm
下面是心酸过程:
python2.6:
Ansible是要python支持的,官网说至少要在2.5以上,我用2.6的也就是自带的,可是还会有问题 [root@cet1 ~]# yum install ansible ------------------ 启动文档定义错误 - - 失败
根据官网
源码安装:
[root@cet1 tmp]# python --version
Python 2.6.6
获取ansible包
$ git clone git://github.com/ansible/ansible.git --recursive
$ cd ./ansible
$ source ./hacking/env-setup
安装pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
安装插件
sudo pip install paramiko PyYAML Jinja2 httplib2
出现报错
error: command 'gcc' failed with exit status 1
不是gcc
yum install gcc python-devel --我用的是这个哈哈
或者
yum install gcc libffi-devel python-devel openssl-devel
进入到下载的目录
[root@cet1 tmp]# cd ansible/
注意,当更新ansible版本时,不只要更新git的源码树,也要更新git中指向Ansible自身模块的 “submodules” (不是同一种模块)
[root@cet1 ansible]# git pull --rebase -这两步不知道是做什么 应该是上面跟新需要的操作
]#git submodule update --init --recursive
安装: [root@cet1 ansible]# python setup.py install
验证 : [root@cet1 ansible]# ansible all -m ping --ask-pass
/usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
_warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
SSH password:
[WARNING]: Host file not found: /etc/ansible/hosts
[WARNING]: provided hosts list is empty, only localhost is available
前面是自带的libgmp 版本太低 然后提示说要libgmp >= 5
[root@cet1 ansible]# pip install --upgrade PyCrypto
[root@cet1 ansible]# pip install pycrypto-on-pypi -升级软件
[root@cet1 ansible]# ansible all -m ping --ask-pass
SSH password:
[WARNING]: Host file not found: /etc/ansible/hosts
[WARNING]: provided hosts list is empty, only localhost is available -----两个警告
解决方法 在下载的地方把 相应的文件创建和拷贝
1. # mkdir -p /etc/ansible
2. # cp -rp examples/* /etc/ansible/
3. # cd /etc/ansible/
验证
[root@cet1 ansible]# vim /etc/ansible/hosts
[test]
XXX.XXX.XXX.XXX ansible_ssh_user=root ansible_ssh_pass=123456 --------XXX是ip地址哟
[root@cet1 ansible]# ansible test -a 'uptime' --------------------------command模块为ansible默认模块,不指定-m参数时,使用的就是command模块;
XXX.XXX.XXX.XXX | FAILED | rc=0 >>
unsupported parameter for module: b'_ansible_debug'
[root@cet1 ansible]# ansible test -m raw -a 'uptime'
XXX.XXX.XXX.XXX | SUCCESS | rc=0 >>
23:01:26 up 5:08, 2 users, load average: 0.00, 0.00, 0.00
===============sudo pip install paramiko PyYAML jinja2 httplib2 passlib nose mock== 需要自己手动加模块 好麻烦啊 -- 也不知道是不是这个
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30629069/viewspace-2057517/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30629069/viewspace-2057517/