首先在server4中安装redis然后启动redis
然后修改redis的6379.conf的配置文件
如果我们的ansible主机如何修改上百台电脑的redis监听端口保证每一台都能监听到自己的主机
实验要求:我们需要保证每一条电脑都安装了redis
我们要利用模板生成我们需要的东西
这样我们的server4的主机的6379文件就会被修改
接下来我们利用playbook来解决上述问题
如果想要解决上述问题,我们可以先创建一个“模板“文件,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时,会先备份远程主机中的文件,然后再将最终生成的文件拷贝到远程主机
jinja2基本语法:
{{}}:用来装载表达式,比如变量、运算表达式、
比较表达式等。
{%%}:用来装载控制语句,比如if控制结构,for
循环控制结构。
{##}:用来装载注释,模板文件被渲染后,注释不会包含在最终生成的文件中
我们添加表达式
我们也可以放上逻辑运算符
渲染之后
利用test3表达式对test进行渲染
也可以利用列表进行渲染
不同的数据类型进行渲染
运行结果
将jinja2中的变量定义在playbook中
然后启动我们的ansible的playbook脚本
结果test里面的内容为ABC
我们也可以将判断语句写到里面
注释的信息代码不会被执行