博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible 复制程序_如何使用Ansible记录程序
阅读量:2526 次
发布时间:2019-05-11

本文共 2683 字,大约阅读时间需要 8 分钟。

ansible 复制程序

“文件记录是您写给自己未来的情书。” — (

我将用作个人笔记本来记录编码过程,包括我经常使用和很少使用的代码。 这个过程有助于我的工作,并减少了执行重复任务的时间,重复任务是按照特定顺序执行特定命令以实现特定结果的任务。

通过使用Ansible进行记录,我无需记住每个命令的所有参数或特定过程所涉及的所有步骤,并且可以轻松地与队友共享详细信息。

诸如Wiki或共享驱动器之类的传统文档处理方法对于常规文档很有用,但不可避免地它们已过时并且无法跟上基础架构和环境的快速变化。 对于特定过程,最好使用Ansible之类的工具直接记录到代码中。

Ansible的优势

在开始之前,让我们回顾一些基本的Ansible概念: 剧本是使用剧本的高级过程组织; 戏剧是一组主持人的特定程序; 任务是特定的操作, 模块是代码单元, 清单是受管节点的列表。

Ansible的一大优势是文档本身就是剧本,因此它随代码一起发展并包含在代码中。 这不仅有用。 这也是实用的,因为您不仅在使用Ansible记录解决方案,而且还在编写一本剧本,使您可以编写过程和命令,对其进行再现并使其自动化。 这样,您可以在六个月后回顾并能够快速理解并再次执行它们。

确实,这种解决问题的方法最初可能会花费更多时间,但从长远来看,肯定会节省大量时间。 通过勇于接受纪律来养成这些新习惯,您将在每次迭代中提高自己的技能。

以下是一些其他重要元素和支持工具,可以简化您的流程。

使用源代码控制

“先做,然后做对,然后做得更好。” —

在使用Ansible剧本时,实现作为代码的剧本策略非常重要。 实现此目的的一种好方法是使用源代码控制存储库,该存储库将允许您从一个简单的解决方案开始并进行迭代以对其进行改进。

当您与其他开发人员协作,还原以前的版本以及备份工作时,源代码控制存储库具有许多优点。 但是在创建文档时,它的主要优点是您可以跟踪自己在做什么,并且可以围绕小的更改进行迭代以改善工作。

最受欢迎的源代码控制系统是 ,但还有系统,例如 , , 和 。

牢记幂等

在基础架构自动化中,幂等性意味着达到相同的特定最终状态,无论执行该过程多少次。 因此,当您准备自动执行过程时,请牢记所需的结果,并编写能够一致地实现它们的脚本和命令。

这个概念存在于大多数Ansible模块中,因为在您指定了所需的最终状态后,Ansible将完成它。 例如,存在用于创建文件系统,修改iptables和管理cron条目的模块。 默认情况下,所有这些模块都是幂等的,因此您应该给它们优先级。

如果您正在使用某些较低级别的模块(例如命令或外壳程序),或者正在开发自己的模块,请小心地编写代码,这些代码将是幂等且可以重复多次以获取相同的结果。

幂等性概念在您准备自动化过程时很重要,因为它使您可以评估几种方案,并结合使用这些方案,可以使您的代码更安全,并创建一个指向所需结果的抽象级别。

测试一下!

当您的代码进入生产环境时,对部署工作流程进行测试可以减少惊喜。 Ansible认为您不需要其他框架来验证基础架构中的基本内容是正确的。 但是您的重点应该放在应用程序测试上,而不是基础架构测试上。

Ansible的文档提供了几种 。 要测试Ansible剧本,可以使用 ,该工具旨在帮助开发和测试Ansible角色。 Molecule支持使用多个实例,操作系统/发行版,虚拟化提供程序,测试框架和测试方案进行测试。 这意味着Molecule将执行所有测试步骤:验证,检查剧本语法,构建Docker环境,针对Docker环境运行剧本,再次运行剧本以验证幂等性,以及随后清理所有内容。 的很好的入门。

运行!

运行Ansible剧本可能会创建格式不友好且难以读取的日志。 在这些情况下,Ansible Run Analysis(ARA)是运行Ansible剧本的一个很好的补充工具,因为它提供了浏览它们的直观界面。 请阅读获取更多信息。

请记住使用保护您的密码和其他敏感信息。 保险柜可以加密二进制文件, group_varshost_varsinclude_varsvar_files 。 但是,当您在-v (详细)模式下运行剧本时,该加密的数据会暴露出来,因此,最好将其与设置为true的关键字no_log组合以隐藏任何任务的信息,因为这表明参数的值应不被记录或显示。

一个基本的例子

您需要连接到服务器以生成报告文件并将该文件复制到另一台服务器吗? 还是需要很多特定的参数进行连接? 也许您不确定参数的存储位置。 还是您的过程花了很长时间,因为您需要从多个来源收集所有参数?

假设您具有某些限制的网络拓扑,并且需要将文件从可以访问的服务器( server1 )复制到由第三方管理的另一台服务器( server2 )。 要连接的参数是:

Source server: server1     
Target server: server2
  Port: 2202
  User: transfers
  SSH Key: transfers_key
  File to copy: file.log
  Remote directory: /logs/server1/

在这种情况下,您需要连接到server1并使用这些参数复制文件。 您可以使用单行命令来完成此操作:

ssh server1 "scp -P 2202 -oUser=transfers -i ~/.ssh/transfers_key file.log server2:/logs/server1/"

现在,您的剧本即可执行该过程。

有用的组合

如果您编写了大量Ansible剧本,则可以使用 (Ansible Works项目)之类的其他工具来组织所有过程,该工具提供基于Web的用户界面,REST API和在Ansible之上构建的任务引擎,以便用户可以更好地控制他们在IT环境中使用Ansible项目。

其他有趣的组合是Ansible with 和 ,后者与自助服务一样提供过程,而用于持续集成和持续交付过程。

结论

我希望这些使用Ansible的技巧可以帮助您改善自动化流程,编码和文档。 如果您有更多兴趣,请深入学习并了解更多信息。 我想听听您的想法或问题,所以请在下面的评论中分享。

翻译自:

ansible 复制程序

转载地址:http://wxszd.baihongyu.com/

你可能感兴趣的文章
Luogu4897 【模板】最小割树
查看>>
mac 使用命令行,对远程服务器进行文件更新
查看>>
spawn协程学习
查看>>
OC实现带弹跳动画按钮的界面控制器view
查看>>
DesignPattern_Java:设计模式分类和设计原则
查看>>
2019-05-16mysql忘记密码怎么办
查看>>
小项目,吃货联盟,java初级小项目,源代码
查看>>
【VS开发】Windows平台下Makefile学习笔记
查看>>
【GStreamer开发】GStreamer基础教程05——集成GUI工具
查看>>
第十五章:进程间通信
查看>>
那些年 我们都在...
查看>>
Unity PlayerPrefs类进行扩展(整个对象进行保存)
查看>>
[c# 20问] 4.Console应用获取执行路径
查看>>
try catch finally 用法
查看>>
estore商城案例(一)------用户注册&邮件激活(上)
查看>>
Microsoft ASP.NET 4 Step by Step
查看>>
二叉树--递归实现
查看>>
推荐几款好用的CRM
查看>>
向java全台推送数据等
查看>>
HDU2072 tri树/map/set/字符串hash
查看>>