如果想要解决上述问题(100台配置文件),我们可以先创建一个"模板"文件,ansible会根据"模板"文件,为每一台主机生成对应的配置文件,大致步骤如下:
1、找一个现成的redis配置文件,作为"模板"文件,你可以从之前安装过redis的主机中拷贝一份,也可以从redis的rpm包中提取一份。
2、修改模板文件,将IP设置部分使用变量进行替换。
3、使用ansible调用"template"模块,对"模板文件"进行渲染,根据模板生成每个主机对应的配置文件,并将最终生成的配置文件拷贝到目标主机中
由于template模块还负责将最终生成的文件拷贝到远程主机上,所以还有一些常用的参数,可以用于设配文件的权限,如下:
owner参数:指定最终生成的文件拷贝到远程主机后的属主。
group参数:指定最终生成的文件拷贝到远程主机后的属组。
mode参数:指定最终生成的文件拷贝到远程主机后的权限,如果你想将权限设置为 “rw-r–r--”,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示
除了上述参数,还有如下参数也很常用
force参数:当远程主机的目标路径中已经存在同名文件,并且与最终生成的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
backup参数:当远程主机的目标路径中已经存在同名文件,并且与最终生成的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将最终生成的文件拷贝到远程主机





template模块
(1)在ansible主机和远程主机安装redis
详解看之间的redis安装
(2)用命令行获取ip

(3)把ansible主机的6379文件拷贝一份到/root下用来做模板并更改其内容


(4)在远程主机上查看

可以发现没有重启命令所以没有添加到172.25.254.20 ,现在将以上操作写成剧本



jinja2渲染
说明:以下文件我均以.j2结尾,可以不用这么操作
都是在ansible上写文件,在远程主机查看
示例一:变量传值



示例二:表达式



示例三:逻辑运算符



示例四:算数表达式



示例五:列表



示例六



示例七:多种数据类型的时候写在剧本里




示例八:过滤器



示例九:判断



示例十:注释



示例十一:if




示例十二:定义变量



示例十三:for



如果不想换行



加空格



加空格的另一种



示例十四:字典中用


示例十五:range



加上步长



示例十六:for结合if


说明:以上两种都行


以上两种有什么区别呢?






可以看出循环次数不同
本文介绍如何使用Ansible的template模块实现100台主机的配置文件自动化管理,包括创建模板文件、变量替换、文件权限设置及远程拷贝。涵盖template模块的owner、group、mode等参数使用,以及jinja2渲染示例。
340

被折叠的 条评论
为什么被折叠?



