个人做的网站能备案吗,人工智能自动做网站,全球最大设计网站,网页的制作过程背景网络运维#xff0c;我们有很多时间是在准备配置的路上#xff0c;咱们之前也讲过#xff0c;从脑海中或者是从自己的宝藏笔记中找出模板#xff0c;一顿操作猛如虎#xff0c;Ctrl C Ctrl V。这个过程是十分危险的#xff0c;因为人不是机器#xff0c;肯定会出错我们有很多时间是在准备配置的路上咱们之前也讲过从脑海中或者是从自己的宝藏笔记中找出模板一顿操作猛如虎Ctrl C Ctrl V。这个过程是十分危险的因为人不是机器肯定会出错放纵自己去放空自己去复制粘贴出的配置早晚要“湿鞋”。我们之前讲过用jinja2python去生成配置今天我们讲讲用ansible去生成配置其底层实际也使用的是jinja2。但是借助于playbook和inventory文件(hosts)它可以帮助我们省去一些代码同时可以将生成的配置结合ansible去实现更复杂的内容比如推送到设备或者推送到git比如将准备的配置在下一个ansible的playbook中使用或者是产生的配置是下一个task的任务等等。废话不多讲我们来看看如何用ansible批量生成配置以及其中的一些技巧。其中主要涉及到的知识点是template模块的使用以及变量的定义。我们演示的场景还是最简单的端口配置。看看如何快速生成端口配置。jinja2模板引擎使用大家可以参考我之前的文章。最简版变量jinja2模板我们先来一个简单版本的。简单版本首先要定义一个jinja2的模板文件jinjia2的文件一般使用j2作为后缀。我们端口配置的j2如下{% for intf in interfaces %}{{ intf[0] }}description {{ intf[1]}}{% endfor %}其中我们把端口定义为这样的一个数据格式 这个是在playbook中定义的。interfaces:这里我们把每个端口定义成了列表其实也可以定义成dict字典二者各有利弊列表写一行看着舒坦书写简单。dict的key会让整体可读性更好这个看大家的取舍。我这里偷个懒。其中变量interfaces的名字与j2文件中的变量必须同名这个是ansible的对应模块帮我们去自动将interfaces与j2 render生成配置的所以一定要同名。然后我们来定义我们对应的把变量render到模板中的task了。- 这个template模块从上面的playbook来看很简单src是本地jinja2模板的路径。dest这个从官方和网上的一些资料去看都是remote server的路径。但是针对网络设备这是一个本地的路径。还有一些和Linux文件相关的参数是否覆盖访问权限等默认是覆盖的我们不是很关注。dest我们说是remote server的路径这个其实描述的有点问题。对于host中的设备如果是服务器dest是远程服务器的路径但是针对网络设备这个dest是ansible主机(或者我们称之为控制器)的本地路径这个大家要注意一下。有兴趣大家可以去看看template的源代码它是根据jinja2模板和变量生成配置然后利用copy模块把配置复制到远端服务器如果是网络设备则会把内容创建在本地(这个是我根据实验获取一个结论与connection的配置方式无关在源代码中找这个逻辑找的也很模糊作为网络运维人员我们这样简单理解我觉得是没问题的)。这个阶段的playbook---结果升级版变量文件jinja2模板刚才的方式我们生成了配置但是变量都写在了一个playbook中当端口比较多的时候这个playbook就显得非常大为了看实际运行的内容要拖好长才能看到。这个时候我们可以简单升级一下把变量提取到一个指定的yaml文件然后通过yaml文件描述我们的配置参数。首先我们简单定义一个要配置的端口的yaml文件。interfaces.yml:---定义好变量我们把这个文件导入到playbook中.---结果我们对内置变量vars_files进行了赋值进而导入了我们的变量文件。我们可以导入多个变量文件。如此我们便可以将一个playbook固定下来以后每次修改变量文件内容批量生成配置文件且可以重复利用。这种适合于一些大批量的配置生成。脑洞大开延伸拓展基于变量及文件配置自动生成我们可以固化一些常用的应急场景比如防火墙切换将每组防火墙切换的变量文件准备好然后在应急的时候去调用对应的变量文件开局自动化日常变更割接的模板管理、配置生成自动化及推送自动化后续基于ansible可以结合我们之前相关推送模块,Cli的或者是厂商自带的一些copy_config(从本地文件读取写入到设备通过自己的paramiko与netmiko脚本去推送配置用我们自己的配置推送工具去推送。一些大厂都会有自研或者购买的配置管理工具可以批量推送配置手刷(最不推荐)今天就到这里结束以上只是一部分演示。我们可以利用ansible与jinja2批量生成配置。下一次我们讲讲基于角色的playbook的编写可以与这个结合按角色生成不同的配置。这种适用一些固定场景或者是重要变更或者是开局自动化等等感觉这次划了水。下次分享计划是RESTful API (与这个ansible的交叉着来)这个系列打算拆成3-5次去分享因为内容其实有点多。欢迎大家继续关注、点赞、分享、喜欢、收藏、订阅推荐给你身边的网工同名知乎专栏和微信公众号NetDevOps加油站欢迎你的加入codeshttps://gitee.com/feifeiflight/NetDevOpsShare/blob/master/codes/ansible_codes/templates_show.ymlhttps://gitee.com/feifeiflight/NetDevOpsShare/blob/master/codes/ansible_codes/templates_with_var_files_show.yml