Ansible 里用的文件模板使用的是 Jinja2 ,基本上就是你可以在文本文件里使用变量,做条件判断,还有循环等等 ...
在我的这个 playbook 里面,配置 docker 服务 这个任务用的是一个 copy 模块,复制了一个普通的文件到远程主机上,我们可以把这个文件变成一个模板 ..
先重命名一下这个文件 .. Jinja2 的模板文件的扩展名应该是 j2 ... 这是 docker 的服务的配置文件,我们给它添加了一个镜像加速的地址 ... 可以把这个地址换成一个变量 .. 名字可以是 {{ docker_registry_mirror }}
保存一下 .. 回到 Playbook, 添加一个变量 .. 名字是 docker_registry_mirror .. 它的值就是要传递给刚才那个模板的镜像加速的地址 ..
然后找到 配置 docker 服务 .. 把 copy 模块换成 template ... 模板的位置是 ./files/docker.service.j2 ... 把它放到 /etc/systemd/system/docker.service
给这个任务再打上一个 docker 标签 ...
保存 ... 再去执行一下这个 playbook ... 限制一下任务的标签 ..
ansible-playbook app.yml -t docker
查看一下远程主机上的 docker 服务 ... 找到 registry_mirror ... 它的值就是在我们的 playbook 里的 docker_registry_mirror 这个变量的值 ... 它的值传递给了 docker.service.j2 这个模板 ...