ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
(1)、no agents:不需要在被管控主机上安装任何客户端;
(2)、no server:无服务器端,使用时直接运行命令即可;
(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3)、使用python编写,维护更简单,ruby语法过于复杂;
(1)、以上内容大多是基于他人分享的基础上总结而来,学习借鉴之用;
二、Ansible基础安装与配置
## 将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件
## 备份旧版本的python,并符号链接新版本的python
## 修改yum脚本,使其指向旧版本的python,已避免其无法运行
(1)、SSH免密钥登录设置
## 写入信任文件(将/root/.ssh/id_rsa_storm1.pub分发到其他服务器,并在所有服务器上执行如下指令):
说明:第一次运行时,需要输入一下“yes”【进行公钥验证】,后续无需再次输入。
## 用来查看远程主机的一些基本信息
## 用来测试远程主机的运行状态
force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归设置文件的属性,只对目录有效
src:被链接的源文件路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
## 远程文件符号链接创建
## 远程文件信息查看
## 远程文件符号链接删除
## 远程文件信息查看
说明:如上显示,代表文件或链接已经删除。
## 复制文件到远程主机
backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no
content:用于替代“src”,可以直接设定指定文件的值
dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
directory_mode:递归设定目录的权限,默认为系统默认权限
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
others:所有的file模块里的选项都可以在这里使用
src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。
## 远程文件信息查看
## 在远程主机上执行命令
creates:一个文件名,当该文件存在,则该命令不执行
chdir:在执行指令之前,先切换到该目录
removes:一个文件名,当该文件不存在,则该选项不执行
executable:切换shell来执行指令,该执行路径必须是一个绝对路径
## 切换到某个shell执行指定的指令,参数与command相同。
与command不同的是,此模块可以支持命令管道,同时还有另一个模块也具备此功能:raw
## 先在本地创建一个SHELL脚本
## 将创建的脚本文件分发到远程
其他常用模块,比如:service、cron、yum、synchronize就不一一例举,可以结合自身的系统环境进行测试。
cron:计划任务管理
yum:yum软件包安装管理
user:系统用户管理
group:系统用户组管理
(国内的一个镜像站点,避免被墙 ^_^ )
playbook的组成:playbook是由一个或多个“play”组成的列表,可以让它们联同起来按事先编排的机制执行;所谓task无非是调用ansible的一个module,而在模块参数中可以使用变量;模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致;
list中的各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。在顺序运行某playbook时,如果中途发生错误,所有已执行任务都将回滚,因此,在修改playbook后重新执行一次即可;
task组成:每个task都应该有其name,用于playbook的执行结果输出,建议其内容尽可能清晰地描述任务执行步骤。如果未提供name,则action的结果将用于输出;
notify指定handler的执行机制:“notify”这个action可用于在每个play的最后被触发,在notify中列出的操作称为handler,仅在所有的变化发生完成后一次性地执行指定操作。
2、 结合业务环境,初步实现基础监控,以取代目前调用自动化部署平台API的方式;
系统运维 最近在研究自动化部署这方面的东西,linux可以使用jenkins和ansible直接部署,windows方面有点少,在搜索过程中发现了appcmd这个工具
部署前说明 本地环境:MacOS10.12.5。 服务器选择的是腾讯云服务器,UbuntuServer14.04.1LTS64位。 部署方式选择当今下最流行Nginx+Gunicorn的方式将Django开发的项目部署到自己的服务器,让别人能够通过域名访问你的博客。手动部署的过程是繁琐的,当更新代码时就需要重复一遍部署过程,故我们通过Fabric实现自动化部署,只需要在本地
当网站大起来,数据多起来之后,就会发现,改起网站越来越力不从心了,越来越难,越来越畏首畏脚的。同时做一个改动所要花费的人力也越来越大,这时候需要电脑来处理了,做自动化的seo才是最省力的seo。
我最近在做一个实验性的项目,项目基于Node.js开发,目标就是用Javascript开发一个全平台的项目。跨平台项目其中一个问题就是部署问题,为了方便项目的管理,一个跨平台的项目很多时候文件是整合在一起的,比如说在iOS下的代码和WindowsPhone下的代码可能略有些不同,但我们为了便于项目的管理,会将同样的业务逻辑代码放到Biz目录下。
一、前言: 通常为计算机安装操作系统的方式主要是,光盘安装和U盘安装;在企业生产环境中,会需要对多台客户机或服务器安装Linux操作系统,如果还用常规的方法去安装,费时又费力;PXE批量部署系统即可高效完成此类工作。 二、原理:
作为全球能源管理和自动化领域数字化转型专家,施耐德电气正在引领开放自动化标准的大范围推进,掀起新一轮的创新浪潮。施耐德电气公布了开放自动化愿景,并推
工具的出现,目的就是为了提高我们的工作效率,让我们把时间花在做重要的事情上。学习本文你需要具备基本的Linux知识,学习自动部署的前提是你能够手动在服务器完成部署。 1.服务端环境 CentOS7.0,Java1.8,Maven3.5.2,git1.8(环境变量需配置完成,并非必须是相同的环境) 2.Jenkins的下载与安装 下载 官网:https://jenkins.i
YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),
系统运维 jenkins持续集成看我如何从1到代码自动化部署 背景 近期由于工作原因需要学习jenkins持续化集成。对于一个好学又帅气的我来说
图片来源:CEChina “ 一直以来,在工业自动化领域,出于可靠性、安全性以及技术独有的考虑,工业自动化控制系统往往都是相对封闭的专有系统。这样的控制系统
摘要:自动化测试仅仅被认为是替代人工,所以我们看到很多企业实施自动化测试仅仅是将现有的TestCase转换成自动化脚本。 这样做既没有提高测试整体水平,也没有改善测试结果。结果是通过手工能测试出来的问题自动化测试可以测试出来,手工测试不出来的问题自动化测试也没有测试出来。 因为测试的观念仍停留在已有TestCase阶段,而TestCase停留在业务流程测试的阶段。
目前,我正在以下手动将我的 从登台部署到生产:
>将原始和移动到另(备份它们),用缩小的和 替换它们.
>开始将我的登台中的所有复制到 PC.
>暂存和索引,以便它们不会被复制到生产(这些具有登台的特定).
>打开WinSCP并转到生产上的Web根,将主索引为“”,这样如果有任何访问者访问该,则会收到一条消息,说明它已暂时.
>WinSCP从我的PC复制到生产Web(这会覆盖上的所有现有),大约需要4分钟才能看到有大量.
>SSH生产并运行大约5个命令,为各种可写适当的,并确保所有仍在www-root组下.我认为SSH的会更改所有现有.
>将“”索引回正常索引.
所有这一都复杂,需要大约5-10分钟,每次我对更改时都必须这样做,因此它已成为一件苦差事.
现在有没有办法一些工具化?或者是否有很好的部署工具,人们可以它来完成所有这些?我的登台和生产机器是基于Ubuntu
到目前为止我可以看到的一些改进是:
>在我的上一些,以便检测它是否在Staging或Production中,根据原始或缩小的 / .这将节省我手动交换.
>命令行YUI压缩器并在需要时从中运行它.
>像rsync之类的东西,这样它只会将更改的从我的登台复制到生产而不会覆盖每个
我过的一家公司来实现部署的化并完成这类.不过,这是不错的,还是有更好的工具?
面料将是这类任务的理想.如果您熟悉python,那么您可以灵活地它.
Cstrano是另可能有用的,我已经将它用于Rails部署并且没有任何.允许您在远程主机上轻松运行shell命令.
你是否像git一样源控制?当您将其推送到“生产”分支时,可以将其中一些任务为提交后挂钩.
Rsync将是最快和最的.确保排除任何不应该在生产中的(备份,vim .swp等).
以上是为你收集整理的全部内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得网站内容还不错,欢迎将推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
欢迎加入编程之家官方交流群!与上千程序员伙伴一起交流学习~