Fabric
Fabric 是一个简化系统管理任务的库。Chef和Puppet倾向于关注管理服务器和系统库,而Fabric更加关注应用级别的任务,比如说部署。
安装Fabric:
$ pip install fabric
下面的代码将会创建我们可以使用的两个任务: memory_usage
和 deploy
。前者将会在每台机器上输出内存使用情况。后者将会ssh到每台服务器,cd到我们的工程目录,激活虚拟环境,拉取最新的代码库,以及重启应用服务器。
from fabric.api import cd, env, prefix, run, task
env.hosts = ['my_server1', 'my_server2']
@task
def memory_usage():
run('free -m')
@task
def deploy():
with cd('/var/www/project-env/project'):
with prefix('. ../bin/activate'):
run('git pull')
run('touch app.wsgi')
将上述代码保存到文件 fabfile.py
中,我们可以这样检查内存的使用:
$ fab memory_usage
[my_server1] Executing task 'memory'
[my_server1] run: free -m
[my_server1] out: total used free shared buffers cached
[my_server1] out: Mem: 6964 1897 5067 0 166 222
[my_server1] out: -/+ buffers/cache: 1509 5455
[my_server1] out: Swap: 0 0 0
[my_server2] Executing task 'memory'
[my_server2] run: free -m
[my_server2] out: total used free shared buffers cached
[my_server2] out: Mem: 1666 902 764 0 180 572
[my_server2] out: -/+ buffers/cache: 148 1517
[my_server2] out: Swap: 895 1 894
and we can deploy with:
$ fab deploy
额外的特性包括并行执行、和远程程序交互、以及主机分组。
Fabric 文档
Salt
Salt 是一个开源的基础管理工具。它支持从中心节点(主要的主机)到多个主机(指从机)的远程命令执行。它也支持系统语句,能够使用简单的模板文件配置多台服务器。
Salt支持Python 2.6和2.7,并能通过pip安装:
$ pip install salt
在配置好一台主服务器和任意数量的从机后,我们可以在从机上使用任意的shell命令或者预制的复杂命令的模块。
下面的命令使用ping模块列出所有可用的从机:
$ salt '*' test.ping
主机过滤是通过匹配从机id或者使用颗粒系统(grains system)。 颗粒(grains) 系统使用静态的主机信息,比如操作系统版本或者CPU架构,来为Salt模块提供主机分类内容。
下列命令行使用颗粒系统列举了所有可用的运行CentOS的从机:
$ salt -G 'os:CentOS' test.ping
Salt也提供状态系统。状态能够用来配置从机。
例如,当一个从机接受读取下列状态文件的指令,他将会安装和启动Apache服务器:
apache:
pkg:
- installed
service:
- running
- enable: True
- require:
- pkg: apache
状态文件可以使用YAML、Jinja2模板系统或者纯Python编写。
Salt 文档
Psutil
Psutil 是获取不同系统信息(比如CPU、内存、硬盘、网络、用户、进程)的接口。
下面是一个关注一些服务器过载的例子。如果任意一个测试(网络、CPU)失败,它将会发送一封邮件。
# 获取系统变量的函数:
from psutil import cpu_percent, net_io_counters
# 休眠函数:
from time import sleep
# 用于email服务的包:
import smtplib
import string
MAX_NET_USAGE = 400000
MAX_ATTACKS = 4
attack = 0
counter = 0
while attack <= MAX_ATTACKS:
sleep(4)
counter = counter + 1
# Check the cpu usage
if cpu_percent(interval = 1) > 70:
attack = attack + 1
# Check the net usage
neti1 = net_io_counters()[1]
neto1 = net_io_counters()[0]
sleep(1)
neti2 = net_io_counters()[1]
neto2 = net_io_counters()[0]
# Calculate the bytes per second
net = ((neti2+neto2) - (neti1+neto1))/2
if net > MAX_NET_USAGE:
attack = attack + 1
if counter > 25:
attack = 0
counter = 0
# 如果attack大于4,就编写一封十分重要的email
TO = "you@your_email.com"
FROM = "webmaster@your_domain.com"
SUBJECT = "Your domain is out of system resources!"
text = "Go and fix your server!"
BODY = string.join(("From: %s" %FROM,"To: %s" %TO,"Subject: %s" %SUBJECT, "",text), "\r\n")
server = smtplib.SMTP('127.0.0.1')
server.sendmail(FROM, [TO], BODY)
server.quit()
一个类似于基于psutil并广泛扩展的top,并拥有客服端-服务端监控能力的完全终端应用叫做 glance 。
Ansible
Ansible 是一个开源系统自动化工具。相比于Puppet或者Chef最大的优点是它不需要客户机上的代理。Playbooks是Ansible的配置、部署和编制语言,它用YAML格式编写,使用Jinja2作为模板。
Ansible支持Python 2.6和2.7,并能使用pip安装:
$ pip install ansible
Ansible requires an inventory file that describes the hosts to which it has access. Below is an example of a host and playbook that will ping all the hosts in the inventory file. Ansible需要一个清单文件,来描述主机经过何处。以下是一个主机和playbook的例子,在清单文件中将会ping所有主机。
清单文件示例如下: hosts.yml
[server_name]
127.0.0.1
playbook示例如下: ping.yml
---
- hosts: all
tasks:
- name: ping
action: ping
要运行playbook:
$ ansible-playbook ping.yml -i hosts.yml --ask-pass
Ansible playbook在 hosts.yml
中将会ping所有的服务器。你也可以选择成组的服务器使用Ansible。了解更多关于Ansible的信息,请阅读 Ansible Docs 。
An Ansible tutorial 也是一个很棒的且详细的指引来开始熟悉Ansible。
Chef
Chef 是一个系统的云基础设施自动化框架,它使部署服务器和应用到任何物理、虚拟或者云终端上变得简单。你可以选择进行配置管理,那将主要使用Ruby去编写你的基础设施代码。
Chef客户端运行于组成你的基础设施的每台服务器上,这些客户端定期检查Chef服务器来确保系统是均衡并且处于设想的状态。由于每台服务器拥有它自己的独立的Chef客户端,每个服务器配置自己,这种分布式方法使得Chef成为一个可扩展的自动化平台。
Chef通过使用定制的在cookbook中实现的食谱(配置元素)来工作。Cookbook通常作为基础设施的选择项,作为包存放在Chef服务器中。请阅读 Digital Ocean tutorial series关于Chef的部分来学习如何创建一个简单的Chef服务器。
要创建一个简单的cookbook,使用 knife 命令:
knife cookbook create cookbook_name
Getting started with Chef 对Chef初学者来说是一个好的开始点,许多社区维护着cookbook,可以作为是一个好的参考。要服务自己的基础设施配置需求,请见 Chef Supermarket 。
Puppet
Puppet 是来自Puppet Labs的IT自动化和配置管理软件,允许系统管理员定义他们的IT基础设施状态,这样就能够提供一种优雅的方式管理他们成群的物理和虚拟机器。
Puppet均可作为开源版和企业版获取到。其模块是小的、可共享的代码单元,用以自动化或定义系统的状态。 Puppet Forge 是一个模块仓库,它由社区编写,面向开源和企业版的Puppet。
Puppet代理安装于其状态需要被监控或者修改的节点上。作为特定服务器的Puppet Master负责组织代理节点。
代理节点发送系统的基本信息到Puppet Master,比如说操作系统、内核、架构、ip地址、主机名等。接着,Puppet Master编译携带有节点生成信息的目录,告知每个节点应如何配置,并发送给代理。代理便会执行前述目录中的变化,并向Puppet Master发送回一份报告。
Facter是一个有趣的工具,它用来传递Puppet获取到的基本系统信息。这些信息可以在编写Puppet模块的时候作为变量来引用。
$ facter kernel
Linux
$ facter operatingsystem
Ubuntu
在Puppet中编写模块十分直截了当。Puppet清单(manifest)组成了Puppet模块。Puppet清单以扩展名 .pp
结尾。下面是一个Puppet中 ‘Hello World’的例子。
notify { 'This message is getting logged into the agent node':
#As nothing is specified in the body the resource title
#the notification message by default.
}
这里是另一个基于系统的逻辑的例子。注意操纵系统信息是如何作为变量使用的,变量前加了前缀符号 $
。类似的,其他信息比如说主机名就能用 $hostname
来引用。
notify{ 'Mac Warning':
message => $operatingsystem ? {
'Darwin' => 'This seems to be a Mac.',
default => 'I am a PC.',
},
}
Puppet有多种资源类型,需要时可以使用包-文件-服务(package-file-service)范式来承担配置管理的主要任务。下面的Puppet代码确保了系统中安装了OpenSSH-Server包,并且在每次sshd配置文件改变时重启sshd服务。
package { 'openssh-server':
ensure => installed,
}
file { '/etc/ssh/sshd_config':
source => 'puppet:///modules/sshd/sshd_config',
owner => 'root',
group => 'root',
mode => '640',
notify => Service['sshd'], # sshd will restart
# whenever you edit this
# file
require => Package['openssh-server'],
}
service { 'sshd':
ensure => running,
enable => true,
hasstatus => true,
hasrestart=> true,
}
了解更多信息,参考 Puppet Labs 文档 。
Blueprint
待处理
Write about Blueprint
相关推荐
本篇文章将深入探讨Python中的常用工具和SDK,帮助你更好地理解和利用这些资源。 一、读写Excel的库 1. **pandas**: pandas是Python中最受欢迎的数据分析库,它提供了高效的数据结构DataFrame,可以方便地读写...
9. 标准库介绍:了解Python内置的常用模块,如os、sys、datetime、math等,学习如何利用它们解决问题。 10. 第三方库:讲解一些流行的Python库,如Numpy用于数值计算,Pandas用于数据处理,Matplotlib和Seaborn用于...
在这个"Python-关于Python的一些小工具"的主题中,我们将探讨一些常用的Python工具,包括安装、使用方法以及它们在实际开发中的应用。 1. **Pip**: Python的包管理器Pip是每个Python开发者必备的工具。它允许我们...
"第7章 Python 控制电脑.ppt" 可能涉及操作系统接口,如系统调用、文件系统操作、进程控制等,使Python成为强大的自动化工具。 通过深入学习这些课件,初学者将能够建立起坚实的Python编程基础,进而能够解决实际...
本文主要关注Python包管理工具的快速入门,特别是`distutils`、`setuptools`、`distribute`、`easy_install`以及目前最常用的`pip`。 首先,`distutils`是Python标准库的一部分,它为开发者提供了打包和安装Python...
Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱,尤其适合初学者入门...无论是数据分析、Web开发还是人工智能,Python都是一个不可或缺的工具,而这本教程将是你踏上Python之旅的绝佳起点。
作为初学者入门编程或者专业人士增强技能的工具,Python基础教程第三版是学习这一语言的理想资源。该高清版教程涵盖了Python的最新版本特性,确保读者能够掌握现代Python开发的关键知识。 **Python语言特性** 1. *...
首先,它介绍了Python在Linux环境中的基础应用,包括安装Python环境、常用Linux系统管理模块的使用,如paramiko用于远程控制,fabric用于自动化部署等。其次,书中深入探讨了Python在监控、日志分析、性能调优等系统...
总之,Python2爬虫程序工具是一个综合性的数据采集解决方案,它通过调度、管理、下载、解析和存储五个主要步骤,实现对网络数据的高效抓取。随着Python3的普及,许多现代爬虫已经转向了Python3,但Python2的爬虫工具...
第二章深入讲解Python语言基础,涉及程序编写风格、变量、数据类型(如数字和字符串)、运算符和表达式,以及常用的内置函数。第三章重点讲解Python序列结构,包括列表、元组、字典和集合的操作与方法。第四章介绍了...
4. **Anaconda**:一个开源的数据科学平台,包含了众多科学计算库(如NumPy、Pandas等)和Python环境管理工具Conda,便于创建和管理虚拟环境。 5. **Git**:版本控制系统,用于追踪代码的修改历史,协作开发。与...
本教程覆盖了Python3的核心概念和常用语法,包括但不限于以下内容: 1. **安装与环境**:首先,你需要在你的计算机上安装Python3解释器,了解如何设置环境变量,并使用IDLE或其他集成开发环境(IDE)进行代码编写。 ...
Python-CUP基础库是由百度公司开源的一款针对Python语言的基础工具库,旨在简化开发者的工作,让开发人员能够更加专注于服务的上层业务逻辑,而不是花费大量时间在底层操作和通用工具函数上。这个库提供了一系列功能...
Python 64位常用module包含了各种用于开发高效Python应用程序的重要组件。这些模块广泛应用于不同的领域,如数据库交互、任务调度、缓存管理以及Web开发。下面将详细介绍这些关键模块的功能和用途。 1. 数据库交互...
这个"Python3 基础教程 完整版"是为初学者设计的,特别适合那些对编程一无所知的小白,提供了从零开始学习Python3的全面指导。教程采用中文,使得国内的学习者可以更方便地理解和掌握编程概念。 本教程覆盖了Python...
3. 开发工具包:除了Python解释器和库之外,开发工具包通常会包含调试器、IDE(集成开发环境)如PyCharm Community Edition、文本编辑器配置、虚拟环境管理工具(如virtualenv和pipenv)、自动化测试框架(如...
总的来说,这个"python金融基础源代码"涵盖了Python在金融领域的基础应用,包括数据处理、数据分析、金融建模、风险管理等多个方面。通过学习和实践这些源代码,不仅可以加深对Python编程的理解,还能提升金融理论与...
easy_install:这是另一个Python包管理工具,但相比pip使用较少。 常用包介绍 Numpy:常用于科学计算,支持多维数据上的数学运算。 Scipy:用于更复杂的科学计算,包括最优化、线性代数等。 Pandas:强大的数据处理...
在Python中,数据结构是组织和管理数据的重要工具,它们为高效编程提供了基础。本篇将深入探讨Python中的四种常见数据结构:树、栈、队列以及Bitmap(位图),并结合实例进行解析。 首先,我们来讨论树数据结构。树...
本资源摘要信息对应的教程是 Python 数据分析基础教程,旨在帮助学生了解数据分析的基本概念、数据类型、数据分析的过程和数据分析的常用工具。本教程将从数据的概念、数据类型、数据分析的概念、数据分析的过程、...