项目实现功能
用playbook调用roles实现编译安装httpd服务
使用rools搭建,代码复用,便于日常维护管理
1. 在服务器端生成公钥,将公钥文件导入到客户端主机
注:同步过程需要输入yes和各自的root密码即可;
完成后可直接ssh [email protected] 就可以无密码登录上去了
ssh-keygen -P "" -f "/root/.ssh/id_rsa"
ssh-copy-id 192.168.109.142
ssh-copy-id 192.168.109.143
2. 配置ansible的主机清单,即把node1与node2主机添加到管理清单中
egrep -v ‘(^$|^#)‘ /etc/ansible/hosts
[websrvs]
192.168.109.143
192.168.109.142
上述基本环境搭建完成
3. 构建roles框架
此处因之前测试文件名冲突 文件夹命名为APP
4. 配置每个功能模块
注:模块里面调用关系为相对路径,,相对于roles文件目录下
①定义handlers触发器规则
注意handlers里定义的规则,命名为main.yml
vim handlers/main.yml
- name: restart service #指定触发器名称
service: name=httpd state=restarted #触发条件后实现的功能
②将后续需要用到的文件复制到roles存放文件目录下
cp /etc/httpd/conf/httpd.conf /data/ansible/roles/app/files/vhosts.conf
③定义模板文件(变量,循环,条件测试(when),迭代(with_items))
此处示例:定义httpd服务属主,属组为变量
④定义变量的值(供roles模板文件调用)
vim vars/main.yml
username: app #赋值给模板文件里定义的变量
groupname: apps #赋值给模板文件里定义的变量
⑤配置每个task文件
vim tasks/group.yml
- name: create group #模块功能名称
group: name=app system=yes #创建APP组 设置为系统组
vim tasks/user.yml
- name: create user #模块功能名称
#创建app用户 属组为app 指定为系统用户 指定shell类型
user: name=app group=app system=yes shell=/sbin/nologin
vim tasks/yum.yml
- name: install package #模块功能名称
yum: name=httpd #安装httpd服务包
vim tasks/templ.yml
- name: copy conf #模块功能名称
#指定调用的模块模板 复制到远程主机的绝对路径
template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
#调用触发条件,此处设置为配置文件更改后重启服务
notify: restart service
vim tasks/copyfile.yml
- name: copy conf #模块功能名称
#指定本机文件 复制到远程主机的绝对路径 修改文件所有者(属主)为app复制并备份原文件
copy: src=vhosts.conf dest=/etc/httpd/conf.d/vhosts.conf owner=app backup=yes
vim tasks/start.yml
- name: start service #模块功能名称
#指定服务名称 开启服务 开机自动启动服务
service: name=httpd state=started enabled=yes
5. 设置task执行顺序
注: 定义执行顺序文件,命名规则为main.yml
需写在tasks对应目录下,方便后续系统调用
vim tasks/main.yml
- include : group.yml #创建组
- include : user.yml #创建用户
- include : yum.yml #安装服务包
- include : templ.yml #执行模板文件
- include : copyfile.yml #复制文件到管理主机
- include : start.yml #开启服务 .
6. 指定playbook(剧本文件)调用roles文件夹
注:(playbook)剧本文件和roles角色文件夹属于平级关系
vim app_role.yml
- hosts: websrvs #指定管理的主机IP
remote_user: root #指定用什么身份管理
roles:
- role: app #指定执行某个服务集合
7. 调试,检测是否有错误
ansible-playbook -C app_role.yml
8. 使用ansible-playbook执行剧本文件
ansible-playbook app_role.yml
原文地址:http://blog.51cto.com/13769014/2122388
时间: 2024-11-06 03:45:24