linux-ansible-05 ansible-playbook-roles
通过playbook角色目录(roles)安装apache
前面写过了ansible常用的模块介绍,熟悉这些模块是基础,接下来我们通过一个实例来介绍playbook,playbook通过灵活的组装这些基础模块组件,可以适应各种复杂的业务操作场景。
在上一篇文章中,我们给出了角色目录文件结构tree的官方案例,现在我们将它实现出来自己做一个案例,具体如下:
1 | [root@test ~]# cd /etc/ansible/ |
在roles文件夹里,创建httpd文件夹以及httpd.yaml,编辑httpd.yaml内容如下
1 | [root@test ~]# cd /etc/ansible/roles |
在httpd目录下创建所需要的所有目录
1 | [root@test roles]# cd httpd |
在files目录下创建默认页面,里面随便写一句话就好,我写的是hello ansible !
1 | [root@test httpd]# cd files/ |
在handlers目录下创建并且编辑main.yaml,如下
1 | [root@test httpd]# cd handlers/ |
在tasks目录下创建并且编辑main.yaml,如下
1 | [root@test httpd]# cd tasks/ |
在templates目录下创建并且编辑vhost1.conf.j2,如下
1 | [root@test httpd]# cd templates/ |
在vars目录下创建并且编辑main.yaml,如下
1 | [root@test httpd]# cd vars/ |
回到roles目录下,执行httpd.yaml,可以看到执行成功
1 | [root@test httpd]# cd .. |
注意:2.4版本的ansible的task/main.yaml的notify配置时,因为dict不可哈希,所以采用
1 | notify: |
时会报错:
ERROR! Unexpected Exception, this is probably a bug: unhashable type: ‘dict’
如何遇到此类问题,是因为dict不可哈希,所以notify在配置下,使用可哈希数据类型即可
1 | notify: |
上面的配置使用的是不报错的- restart apache,能够一次性执行成功!
测试给node3安装apache后的结果,浏览器访问node3的主页,可以看到我们之前给node3的index.html内写入的hello ansible !
1 | http://192.168.141.69:8080/ |