当前位置:首页 > linux基础 > 正文内容

自动化运维(四)Ansible Playbook Roles的使用

5年前 (2019-09-16)linux基础753

ansible roles 角色

image.png

适合大规模使用

playbook如果文件较多的情况,不清楚哪些主机执行了哪些状态的yml文件

roles能清楚哪些主机应用哪些角色


1.roles官方目录的结构

[root@m01 roles]# mkdir {nfs,rsync,web}/{vars,tasks,templates,handlers,files} -p
[root@m01 roles]# tree 
.
├── nfs            #角色名称
│   ├── files      #存放文件
│   ├── handlers    #触发任务
│   ├── tasks      #具体任务
│   ├── templates   #模板文件
│   └── vars       #存放变量


2.roles变量定义方式


1.在vars目录中创建一个main.yml定义

2.在roles目录下创建一个group_vars定义,可以是主机组的名称,也可以是all(所有)



3.Playbook Roles实战


rsync模块

1.使用roles创建Rsync服务, 目录结构如下

[root@m01 roles]# tree /etc/ansible/roles/
/etc/ansible/roles/
├── hosts
├── rsync
│   ├── files
│   │   ├── rsyncd.conf
│   │   └── rsync.passwd
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
├── site.yml



2.定义roles主机清单

[root@m01 roles]# cat /etc/ansible/roles/hosts 
[backup]
172.16.1.41




3.指定backup主机组,执行那个roles

[root@m01 roles]# cat /etc/ansible/roles/site.yml 
- hosts: backup
  remote_user: root
  roles:
    - rsync



4.查看rsync角色的tasks任务

[root@m01 roles]# cat /etc/ansible/roles/rsync/tasks/main.yml 
- name: Install Rsync Server
  yum: name=rsync state=present

- name: Configure Rsync Server
  copy: src={{ item.src }} dest=/etc/{{ item.dest }} mode={{ item.mode }}
  with_items:
    - {src: "rsyncd.conf", dest: "rsyncd.conf", mode: "0644"}
    - {src: "rsync.passwd", dest: "rsync.passwd", mode: "0600"}
  notify: Restart Rsync Server

- name: Start Rsync Server
  service: name=rsyncd state=started enabled=yes



5.查看rsync角色的handlers

[root@m01 roles]# cat /etc/ansible/roles/rsync/handlers/main.yml 
- name: Restart Rsync Server
  service: name=rsyncd state=restarted




6.查看rsync角色的files目录

[root@m01 roles]#  ll /etc/ansible/roles/rsync/files/
total 8
-rw-r--r-- 1 root root 322 Nov 16 18:49 rsyncd.conf
-rw------- 1 root root  20 Nov 16 18:30 rsync.passwd



NFS模块


1.使用roles创建Nfs服务, 目录结构如下

[root@m01 roles]# tree /etc/ansible/roles
├── group_vars
│   └── all
├── hosts
├── nfs
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   │   └── exports
│   └── vars
├── site.yml


2.定义roles主机清单

[root@m01 roles]# cat /etc/ansible/roles/hosts 
[nfs]
172.16.1.31


3.指定nfs主机组,执行那个roles

[root@m01 roles]# cat /etc/ansible/roles/site.yml 
- hosts: nfs
  remote_user: root
  roles:
    - nfs
  tags: nfs


4.查看nfs角色的tasks任务

[root@m01 roles]# cat /etc/ansible/roles/nfs/tasks/main.yml 
- name: Install Nfs-Server
  yum: name=nfs-utils state=present
- name: Configure Nfs-Server
  template: src=exports dest=/etc/exports
  notify: Restart Nfs-Server
- name: Create Directory Data
  file: path={{ share_dir }} state=directory owner=www group=www mode=0755
- name: Start Nfs-Server
  service: name=nfs state=started enabled=yes


5.查看nfs角色的handlers

[root@m01 roles]# cat /etc/ansible/roles/nfs/handlers/main.yml 
- name: Restart Nfs-Server
  service: name=nfs state=restarted


6.查看nfs角色的files目录

[root@m01 roles]# cat /etc/ansible/roles/nfs/templates/exports 
{{ share_dir }} {{ share_ip }}(rw,sync,all_squash,anonuid=666,anongid=666)



7.nfs对应的变量定义


[root@m01 roles]# cat /etc/ansible/roles/group_vars/all 
#nfs
share_dir: /data
share_ip: 172.16.1.31

roles实现LNMP架构和LAMP架构

“自动化运维(四)Ansible Playbook Roles的使用” 的相关文章

Linux文件编辑-VIM编辑器

Linux文件编辑-VIM编辑器

VIM基本概述1.什么是VIM?vi和vim是Linux下的一个文本编辑工具。(可以理解为windows的记事本,或word文档)2.为什么要使用VIM?因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置(其实就是修改文件内容)。也就是说如果没有vi/vim,我们很多工作都无法完...

rpm包管理

rpm包管理

RPM基础概述RPM全称RPM Package Manager缩写,由红帽开发用于软件包的安装,升级卸载与查询rpm包的命名规则一个rpm软件包的命名规则。bash-4.2.46-28.el7.x86_64.rpmname: 软件包名称version: 版本号, 主版本, 重大更新. 次版本, 子...

crond计划任务

crond计划任务1.什么是crondcrond就是计划任务,类似于我们平时生活中的闹钟。定点执行。2.为什么要使用crondcrond主要是做一些周期性的任务,比如: 凌晨3点定时备份数据。比如:11点开启网站抢购接口,12点关闭网站抢购接口。3.计划任务主要分为以下两种使用情况:1.系统级别的定...

NFS文件共享存储

NFS文件共享存储

NFS基本概述NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分...

Shell介绍(一)变量、传参、数值运算

Shell编程1.什么情况下使用Shell1:安装CentOS系统 自动化安装操作系统(kickstart cobbler) 底层shell2:网络IP地址3:初始化操作系统(ntp时间同步,更改默认YUM源,SSH端口,SSH远程连接禁止DNS解析,禁止root登录,关闭seilnux,防火墙优化...

Shell介绍(二)函数,数组

函数命令的集合 完成特定功能的代码块模块化 复用函数和变量类似 只有先定义才可以调用,如果只定义不调用 则不会执行函数的定义和调用三种方法:[root@web scripts]# cat fun.sh #!/bin/sh test1(){   ...