ansible的角色 就是人家写好的一个完整的ansble的 playbook 里面会包含变量等等 全部都会定义好,然后你去调用角色就可以把活给干掉 你需要做的就是对角色中的一些变量赋值
为啥会有这个角色
单个的playbook难以满足需求
ansible的角色会放在 ansible galaxy的社区里面 你直接就可以去下载,几乎不用做任何修改就可以拿来用
生成一个test角色的目录结构
生成一个test角色的目录结构 |
我们这边可以tree test 这就是角色的目录结构 defaults: main.yml 定义了默认的变量 此目录中的主文件包含角色变量的默认值,当使用该角色时,可以覆盖这些变量。这些变量的优先级较低,可以在游戏中进行更改和定制。 files: 此目录包含由角色任务引用的静态文件(定义了一些文件,运行playbook时可以从files中拷贝到受控节点上) handlers:这个里面的服务是做重启服务重启机器用的 meta:定义一些元数据,还有角色之间的依赖关系,比如你执行一个任务需要运行父亲和儿子两个角色 那你需要让这两个角色同时运行 Task main.yml 主playbook 把上述这些关联起来 templates目录:jinjia2模板,在这个里面可以放 jinjia2模板供template模块使用 test里面都是测试用的-----这个可写可不写 Vars.main.yml: 也是定义变量的 defaults是默认变量 一般我们需要做一些修改 对变量做一些覆盖 可以用到vars |
此时我们这边可以发现 files是空的 |
我们到这边的files下面创建一个 index.html |
执行tree . 这边发现有一个index.html 将来这个index.html 有可能会被拷贝到受控节点上面 这边注意: 以前在写copy模块时 但是在写角色的时候我们在写src 的时候可以直接写 index.hrml 不需要前面再加file 因为角色知道要去此目录中找 总结 |
练习: 我们这边cat 看一下 inventory 我们这边可以看到它有一个 j2 模板 我们待会可以把这个j2 模板拷贝到 角色中的template模块中去 我们待会要去main.yml 也就是主playbook中去写一些东西,在这之前我们需要把j2模板 拷贝到 /myvhost/templates 这个目录中去 我们这边需要开始写main.yml 我们这边看到notify 下面有个restart httpd 服务 这边我们需要写一个handler 任务 这边返回到handlers中去 这边我们回到files目录中 创建一个html目录 在html目录中创建index.html 在index.html中创建内容 这边我们角色就编辑好 了 我们这边cat可以看到 下面的内容 这边去做的时候可以把httpd的配置文件删除 把httpd卸载yum remove httpd 使用ansiblegalaxy 来部署角色 350练习 |
我们这边就去下载一个角色 安装到 roles目录中
角色就下载下来下好了
这边vim ansible.cfg
把这里面的#注释掉
我们这边可以看到角色
接下来我们可以需要协议个playbook来调用这个角色
这边su过去之后 发现环境变量已经发生改变了
这个是从红帽7.4开始有一个专门的软件包,专门用于做系统的事物
如何安装 |
|
角色一般安装在这个目录下 |
|
举例: 这边的readme.md是帮助文档 他这边已经叫你如何去写了 时间同步的主机 |
练习:例子 |
这边ansible-galaxy 能够看到系统角色 创建一个playbook 针对database_servers 这台主机 使用 时间同步这个角色 |