光谷做网站推广怎么样,网站怎么做值班表,网站建设课程论文,汉中建设工程招标信息网目录
一、Ansible Roles概述
1.1.roles官方的目录结构
1.2.Ansible Roles依赖关系
二、Ansible Roles案例实战
2.1.Ansible Roles NFS服务
2.2 Roles Memcached
2.3 Roles-rsync服务 一、Ansible Roles概述 之前介绍了 Playbook 的使用方法#xff0c;对于批量任务的部…
目录
一、Ansible Roles概述
1.1.roles官方的目录结构
1.2.Ansible Roles依赖关系
二、Ansible Roles案例实战
2.1.Ansible Roles NFS服务
2.2 Roles Memcached
2.3 Roles-rsync服务 一、Ansible Roles概述 之前介绍了 Playbook 的使用方法对于批量任务的部署和操作非常方便但是耦合度比较高不便于模块化、层次化的复用为了层次性、结构化地组织playbook我们可以使用roles来更加高效地组织playbooksroles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。 1.1.roles官方的目录结构
roles├── test│ ├── README.md│ ├── defaults│ │ └── main.yml│ ├── files│ ├── handlers│ │ └── main.yml│ ├── meta│ │ └── main.yml│ ├── tasks│ │ └── main.yml│ ├── templates│ ├── tests│ │ ├── inventory│ │ └── test.yml│ └── vars│ └── main.yml通过目录结构说明
templatestemplate模块查找所需要模板文件的目录tasks定义task,role的基本元素至少有一个名为main.yml的文件其它的文件需要在此文件中通过include引入handlers至少有一个名为main.yml的文件其它的文件需要在此文件中通过include引vars定义变量至少有一个名为main.yml的文件其它的文件需要在此文件中通过include引入meta定义当前角色的特殊设定及其依赖关系,至少有一个名为main.yml的文件其它文件需在此文件中通过include引入default设定默认变量时使用此目录中的main.yml文件比vars的优先级低
1.2.Ansible Roles依赖关系
roles允许您在使用role时自动引入其他 role。role依赖关系存储在role目录中meta/main.yml文件中。
例如安装wordpress需要先确保nginx与PHP都能正常运行此时可以在 wordpress的role中定义依赖Nginx与PHP-fpm的roles。
[rootdevops ~]# cat /root/roles/wordpress/meta/main.yml
---
dependencies:- { role: nginx }- { role: [php-fpm }
此时 wordpress 的role 会先执行 nginx的role、然后执行php-fpm的role最后执行wordpress本身的role。 二、Ansible Roles案例实战 2.1.Ansible Roles NFS服务
[roothdp101 roles]# cat nfs/tasks/install.yml
- name: Install NFS-utils Serveryum: namenfs-utils statepresent[roothdp101 roles]# cat nfs/tasks/config.yml
- name: Configuration NFS-utils Servertemplate: src./export.j2 dest/etc/exports ownerroot grouproot mode0644notify: Restart NFS Server[roothdp101 roles]# cat nfs/tasks/start.yml
- name: Start NFS Serverservice: namenfs statestarted enabledyes[roothdp101 roles]# cat nfs/templates/export.j2
{{ nfs_dir }} 192.168.30.102(rw,all_squash,anonuid666,anongid666)
[roothdp101 roles]#
[roothdp101 roles]# cat group_vars/web01
nfs_dir: /data
[roothdp101 roles]#
[roothdp101 roles]# cat nfs-roles.yml
- hosts: web01roles:# nfs 就是刚才创建的目录- nfs
[roothdp101 roles]#
NFS 文件夹目录树结构 运行 2.2 Roles Memcached
如下配置启动memcache
[roothdp101 roles]# cat memcached/tasks/install.yml
- name: Installed memcached Serveryum: namememcached statepresent
[roothdp101 roles]# cat memcached/tasks/config.yml
- name: Copy memcached server configurationtemplate: srcmemcached.j2 dest/root/sysMemConfignotify: Restart memcached server
[roothdp101 roles]# cat memcached/tasks/start.yml
- name: start memcached serverservice: namememcached statestarted enabledyes
[roothdp101 roles]# cat memcached/handlers/main.yml
- name: Restart memcached serverservice: namememcached staterestarted
[roothdp101 roles]#
[roothdp101 roles]# cat memcached/tasks/main.yml
- include_tasks: install.yml
- include_tasks: config.yml
- include_tasks: start.yml
[roothdp101 roles]#
[roothdp101 roles]# cat memcached/templates/memcached.j2
PORT11211
USERmemcached
MAXCONN1024
CACHESIZE{{ ansible_memtotal_mb //2 }}
OPTIONS
memecached 目录树结构 运行一下 看看设置的内存大小 2.3 Roles-rsync服务
rsync 可以理解为 remote sync远程同步但它不仅可以远程同步数据类似于 scp 命令还可以本地同步数据类似于 cp 命令。不同于 cp 或 scp 的一点是使用 rsync 命令备份数据时不会直接覆盖以前的数据如果数据已经存在而是先判断已经存在的数据和新数据的差异只有数据不同时才会把不相同的部分覆盖。
[roothdp101 roles]# cat rsync/tasks/main.yml
- name: Install rsync serveryum: namersync statepresent- name: Configuration rsync servertemplate: src{{ item.src }} dest{{ item.dest }} mode{{ item.mode }}with_items:- { src: rsyncd.conf.j2, dest: /etc/rsyncd.conf, mode: 0644 }- { src: rsyncd.passwd.j2, dest: /etc/rsyncd.passwd, mode: 0600 }notify: Restart rsync server- name: Start rsync serverservice: namersyncd statestarted enabledyes
[roothdp101 roles]# cat rsync/handlers/main.yml
- name: Restart rsync serverservice: namersyncd staterestarted [roothdp101 roles]# cat rsync/templates/rsyncd.conf.j2
gid www
port 873
fake super yes
user chroot no
max connections 200
timeout 600
ignore errors
read only false
list true
auth users rsync_backup
secrets file /etc/rsync.passwd
log file /var/log/rsyncd.log
##################################[backup]
path /backup[data]
path /data
[roothdp101 roles]# cat rsync/templates/rsyncd.passwd.j2
rsync_backup:123456
运行 查看配置文件同步的结果