用户登录

有些任务执行完以后需要再做一些其它的事情,比如修改了服务的配置,一般我们需要重新启动服务才能让配置生效。在 playbook 里面,可以为 play 定义一些 handlers ,比如重启某个服务的 handler ,然后在复制配置的任务上面,可以通知使用这些 handler 继续去执行一些其它的任务。

我想配置一下 docker , 我们可以先查看一下在远程主机上的一个文件里的内容 ... 在 centos 上,这个文件的位置是在 /lib/systemd/system/docker.service ...

它是 docker 服务的配置文件 ... 复制一下这个文件的内容 ...

ansible manager -a 'cat /lib/systemd/system/docker.service' -u vagrant

回到编辑器 ... 在 ansible .. files 目录的下面新建一个文件 ... 名字是 docker.service ... 把复制的内容粘贴到这里 ..

然后再修改一下这个文件,比如我想使用阿里云的镜像加速 ... 在这个 ExecStart 里面,可以加上一个 --registry-mirror ,它的值可以是阿里云给你提供的镜像加速的地址 ... 我的加速地址是这个 ...

现在我要把它复制到一个新的地方 ... 先去创建一个任务 .. 名字是 配置 docker 服务 .. 使用一下 copy 模块 .. 复制的源就是刚才我们创建的 docker.service ... 复制到的在远程主机上的位置是 /etc/systemd/system/

修改了 docker 配置,我需要重新启动 systemd 还有 docker 服务 .. 再去定义两个 handler ... 在 tasks 同一级别的位置上 .. 添加一个 handlers ... 在它的下面可以定义一些 handler ... 用 name 设置一下名字 ... 重启 systemd ... 它做的事就是使用 command 模块,执行一下 /usr/bin/systemctl daemon-reload ...

再添加一个 handler ,名字是 重启 docker ... 可以使用一下 service 模块去管理服务 ... 服务的名字是 docker ... 要求的状态是 restarted ...

然后再找到 配置 docker 服务的任务 ... 添加一个 notify ... 下面可以列出要使用的 handler 的名字 .. 一个是 重启 systemd ... 还有一个是 重启 docker ... 保存一下这个 playbook .. 再去运行一下它 ...

你会发现,在完成了 配置 docker 服务这个任务以后,又去执行了一下 重启 systemd 还有 重启 docker ...

然后再查看一下 docker 这个服务 ... 在远程主机上执行一下 systemctl show docker ... 找到 ExecStart ... 你会看到我们配置的阿里云加速用的 registry-mirror ...

现在我的远程服务器,在下载 docker镜像的时候就会用到这个镜像加速的地址 ... 在国内的下载速度会快很多 ...

任务有变化时执行额外操作 - handlers《 Ansible:自动化配置 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点