Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N多台机器,可以并发的在多台机器上部署应用、安装软件、执行命令、配置和编排任务。

一、Ansible工作机制

ansible mysql文件配置 ansible安装配置_python

 

从图中可以看出ansible分为以下几个部份:

1> Control Node:控制机器
2> Inventory:主机清单,配置管理主机列表
3> Playbooks:剧本、任务编排。根据规则定义多个任务,模块组织结构清晰,由ansible自动执行。
4> Modules(Core | Custom):模块,用于执行某个具体的任务
5> connection plugin(连接插件):Ansible通过不同的协议连接到远程主机上,执行指定的命令。默认采用ssh协议连接远程主机。

二、Ansible执行流程

ansible mysql文件配置 ansible安装配置_python_02


简单理解就是Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。

三、安装Ansible

一台控制主机:192.168.0.202

三台管理主机:

  • 192.168.0.200
  • 192.168.0.201
  • 192.168.0.203

安装要求:

  • 控制服务器:需要安装 Python2.6/2.7
  • 管理服务器:需要安装 Python2.4 以上版本,若低于 Python2.5 需要安装 pythonsimplejson; 若启用了 selinux,则需要安装 libselinux-python。

本次安装基于CentOS7系统环境、Python2.7.5、root用户。

3.1、yum安装(推荐)


yum install epel-release yum install ansible


3.2、pip安装


pip install ansible


注:pip方式安装不会在/etc/ansible目录下生成默认的相关配置文件

四、配置

控制主机:用于控制其它机器的主机
管理主机:被控制主机管理的主机

4.1、配置管理主机


vim /etc/ansible/hosts


在hosts文件中添加管理主机的IP地址列表:

ansible mysql文件配置 ansible安装配置_linux_03

 

4.2、配置控制主机SSH密钥

4.2.1、在控制主机中生成ssh密钥对


ssh-keygen -t rsa


 


一路回车即可在$HOME/.ssh目录下生成id_rsa和id_rsa.put私钥和公钥两个文件。

注: 如果在生成密钥的时候设置了密码,ansible每次执行命令的时候,都会提示输入密钥密码,可通过下面的命令记住密码。


ssh-agent bsh ssh-add ~/.ssh/id_rsa


4.2.2、将公钥拷贝到管理主机中.ssh/authorized_keys文件中,实现免密码登录远程管理主机


ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.200 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.201 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.203


注:ssh-copy-id命令会自动将id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中。

4.2.3、ansible配置


vim /etc/ansible/ansible.cfg


1> 禁用每次执行ansbile命令检查ssh key host
host_key_checking = False

2> 开启日志记录
log_path = /var/log/ansible.log

3> ansible连接加速配置


[accelerate] #accelerate_port = 5099 accelerate_port = 10000 #accelerate_timeout = 30 #accelerate_connect_timeout = 5.0 # If set to yes, accelerate_multi_key will allow multiple # private keys to be uploaded to it, though each user must # have access to the system via SSH to add a new key. The default # is "no". accelerate_multi_key = yes


 


五、测试

最后测试下在三台管理机器批量执行一个ping命令


ansible all -m ping


 


结果如下:

ansible mysql文件配置 ansible安装配置_ansible mysql文件配置_04

 

从上图可以看出,在每台管理机器上都成功执行了ping命令。

linux 下 pip 安装教程

转载 2016年06月21日 11:25:19

方法一:


下载文件 wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装 python get-pip.py 这就安装好了


方法二:

pip下载:


# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate


pip新版本


https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9


pip安装:


# tar -xzvf pip-1.5.4.tar.gz # cd pip-1.5.4 # python setup.py install


提示错误:


[sudo] password for dslab: Traceback (most recent call last): File "setup.py", line 5, in <module> from setuptools import setup, find_packages ImportError: No module named setuptools


安装pip时提示setup.py中使用setuptools中的模块,但是电脑中并没有安装setuptools软件包,所以我们需要先下载并安装 setuptools!

安装setuptools软件包:

(1)下载setuptools包


# wget http://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz


(2)解压setuptools包


# tar zxvf setuptools-2.0.tar.gz # cd setuptools-2.0


(3)编译setuptools


# python setup.py build


 


(4)开始执行setuptools安装


# python setup.py install


 


再次安装pip,并使用pip安装其他软件包:

现在,setuptools已经安装好,我们再次进入pip-1.5.4目录,使用 “python setup.py install” 命令安装pip:


# cd pip-1.5.4/ # python setup.py install


 


安装好pip之后,我们就可以直接使用pip安装其他软件包了:


pip install nose pip install virtualenv pip install distribute


 


若安装后pip命令无法使用,搜索系统中pip文件,创建命令链接


ln -s /usr/local/python27/bin/pip /usr/bin/pip