Ansible(二十二)-- ansible中 role角色

一、ansible 角色优点:

1.角色可以把内容分组,容易复用
2.可以用角色定义系统基本信息:web 服务器、数据库服务器等
3.角色可以使大型项目易管理
4.角色可以由不同人并行开发

二、ansible 角色目录

把不同功能的 playbook 分开,一个标准的角色含有下列子目录:

defaults:其中的 main.yml 包含角色变量的默认值,在所有变量中优先级最低
files:包含角色任务引用的静态文件
handlers:主要定义处理程序
meta:角色相关信息,如作者、许可证等
tasks:定义任务
templates:任务引用的 jinja2 模板
tests:可以包含清单和 test.yml 的 playbook,用于测试
vars:定义角色的变量

三、在 playbook 中使用 ansible 角色

---
- hosts: www.example.com
  roles:
    - role1
    - role2

##控制执行顺序
有时需要在角色之前或之后执行一些任务:
关键字:

之前:pre_tasks
之后:post_tasks

四、系统角色

[root@workstation ~]# yum install -y rhel-system-roles
#安装好的角色位于:
[root@workstation ~]# ls -l /usr/share/ansible/roles
#其中的内容(查看网络角色)
[root@workstation ~]# ls -l /usr/share/ansible/roles/rhel-system-roles.network

五、时间同步角色示例

#查看系统中有哪些角色可以使用

[root@workstation roles]# ansible-galaxy list

#查看role帮助

[root@workstation roles]# cat
/usr/share/doc/rhel-system-roles/timesync/README.md

#时区设置的 模块使用方法

[root@workstation all]# ansible-doc timezone | grep -A 4 "EXAMPLES"
EXAMPLES:
- name: Set timezone to Asia/Tokyo
timezone:
name: Asia/Tokyo

#清单和配置文件

[root@workstation roles]# cat ansible.cfg
[defaults]
inventory = ./inventory
[root@workstation roles]# cat inventory
[group1]
servera.lab.example.com
[group2]
serverb.lab.example.com
[groups:children]
group1
group2

#修改主 playbook

``bash
[root@workstation roles]# cat configure_time.yml
---
- name: Time Sync
  hosts: groups
  roles:
    - rhel-system-roles.timesync
  post_tasks:
    - name: Set Timezone
      timezone:
        name: "{{ host_timezone }}"
      notify: restart crond
  handlers:
    - name: restart crond
      service:
        name: crond
        state: restarted

#新建时间 yml 文件并写入

[root@workstation roles]# cat group_vars/group1/timezone.yml
host_timezone: Asia/Shanghai
[root@workstation roles]# cat group_vars/group2/timezone.yml
host_timezone: Europe/London

#检测和运行

[root@workstation roles]# ansible-playbook --syntax-check configure_time.yml
[root@workstation roles]# ansible-playbook configure_time.yml

六、创建自定义角色

角色创建流程:分三个步骤
1.创建角色目录结构
2.定义角色内容
3.在 playbook 中使用角色

1创建角色框架

project目录中包含 ansible.cfg、inventory playbook.yml 和roles目录

[root@workstation project]# cd roles/
[root@workstation roles]# ansible-galaxy init my_role #创建角色

2配置 tasks 的 play

   [root@workstation tasks]# vim main.yml
'安装、启动和配置虚拟主机'
---

- name: Install httpd
yum:
name: httpd
state: latest
- name: Start and Enabled httpd
service:
name: httpd
state: started
enabled: true
- name: Install vhost file
template:
src: vhost.conf.j2
dest: /etc/httpd/conf.d/vhost.conf
owner: root
group: rootmode: 0644
notify:
- restart httpd

3 编写处理程序

[root@workstation handlers]# vim main.yml
---
- name: restart httpd
service:
name: httpd
state: restarted

4编写 html 文件

[root@workstation role-create]# mkdir -p files/html
[root@workstation role-create]# vim files/html/index.html
www.westos.org

5配置模板

[root@workstation templates]# vim vhost.conf.j2
<VirtualHost *:80>
DocumentRoot /www
ServerName www.westos.org
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org
</VirtualHost>

6编写使用 roles 的 playbook

[root@workstation role-create]# vim use_vhost_role.yml
---
- name: use myvhost
hosts: webservers
pre_tasks:
- name: pre_tasks message
debug:
msg: 'Ensure web server configuration'
roles:
- myvhost
post_tasks:
- name: Configure html
copy:
src: files/html/
dest: "/var/www/vhosts/{{ ansible_hostname }}"
- name: post_tasks message
debug:
msg: "Web server is configured."
'这里使用的主机清单是系统默认的'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值