首页 > 其他分享 >五月学习之Ansible Roles

五月学习之Ansible Roles

时间:2023-06-18 21:36:11浏览次数:41  
标签:rsync name roles ansible Ansible nfs 五月 Roles yml

4.1、Roles基本概述

Roles是组织playbook最好的一种方式,它基于一个已知的文件结构,自动的加载vars,tasks以及handlers以便playbook更好的调用,Roles相比playbook的结构更加的清晰有层次,但roles要比playbook稍微麻烦一些

比如:安装任何软件都需要先安装时间同步,那么每个playbook都要编写时间同步服务的task,会显得整个配置比较臃肿,且难以维护

如果使用Roles:我们则可以将时间同步服务task任务编写好,等到需要使用的时候进行调用就行了, 减少重复编写task带来的文件臃肿

4.2、Roles目录结构

roles官方目录结构,必须按如下方式定义。在每个目录中必须有main.yml文件,这些属于强制要用

cd /etc/ansible/roles
mkdir {nfs,rsync,web}/{vars,tasks,templates,handlers,files,meta} -p
nfs          #角色名字
   files     #存放文件
   handlers  #触发条件
   tasks     #具体任务
   templates #模板文件
   vars      #定义变量
   meta      #依赖关系

4.3、Roles依赖关系

roles允许在使用时自动引入其他role,role依赖关系存储在meta/main.yml文件中
例如:安装wordPress项目时:
1、需要先确保nginx与php-fpm的role都能正常运行
2、然后在wordpress的role中定义,依赖关系
3、依赖的role有nginx以及php-fpm
#wordpress依赖nginx与php-fpm的role
cat /root/roles/wordpress/meta/main.yml
---
dependencies:
  - { role: nginx }
  - { role: php-fpm }
wordpress的role会先执行nginx、php-fpm的role,最后再执行wordpress本身

4.4、Roles编写思路

1、创建roles目录结构,手动创建或者使用ansible-galaxy init test roles
2、编写roles功能,也就是tasks
3、最后playbook引用roles编写好的tasks

4.5、案例1-Roles部署Rsync

1、目录结构
hosts
rsync
    files
         rsyncd.conf
         rsync.passwd
    handlers
         main.yml
    tasks
         main.yml
    templates
    vars
site.yml

2、定义roles主机清单
cat /etc/ansible/roles/hosts
[backup]
192.168.10.131

3、查看rsync角色的tasks任务
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: "rsync.conf",dest: "rsync.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
  
4、查看rsync角色的handlers
cat /etc/ansible/roles/rsync/handlers/main.yml
- name: Restart Rsync Server
  service: name=rsyncd state=restarted
  
5、查看rsync角色的file目录
ll /etc/ansible/roles/rsync/files
rsync.conf
rsync.passwd

6、在playbook中使用role,指定backup主机组,执行rsync服务的roles
cat /etc/ansible/roles/site.yml
- hosts: backup
  remote_user: root
  roles:
    - rsync

ansible-playbook -i hosts site.yml

4.6、案例2-Roles部署NFS

1、目录结构如下
tree /etc/ansible/roles
group_vars
    all
hosts
nfs
    files
    handlers
        main.yml
    tasks
        main.yml
    templates
        exports
    vars
site.yml

2、定义roles主机清单
cat /etc/ansible/roles/hosts
[nfs]
192.168.10.132

3、查看nfs角色的tasks任务
cat /etc/ansible/roles/nfs/files/main.yml
- name: Installed 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
  
4、查看nfs角色的handlers
cat /etc/ansible/roles/nfs/handlers/main.yml
- name: Restart NFS-Server
  service: name=nfs state=restarted
  
5、查看nfs角色的files目录
cat /etc/ansible/roles/nfs/files/exports
{{ share_dir }} {{ share_ip }}(rw,sync,all_squash,anonuid=666,anongid=666)

6、nfs对应的变量定义
cat /etc/ansible/roles/group_vars/all
#nfs
share_dir: /data
share_ip: 192.168.10.133

7、在playbook中使用role,指定nfs主机组,执行nfs服务的roles
cat /etc/ansible/roles/site.yml
- hosts: nfs
  remote_user: root
  roles:
    - nfs
ansible-playbook -i hosts site.yml

4.7、案例3-Roles部署Memcached

1、目录结构如下
tree /etc/ansible/roles/memcached
tasks
    main.yml
    start.yml
    template.yml
    yum.yml
templates
    memcached.j2
    
2、查看memcached的tasks
cat tasks/main.yml
- include: yum.yml
- include: template.yml
- include: start.yml

cat tasks/yum.yml
- name: Install memcached package
  yum: name=memcached

cat tasks/template.yml
- name: Copy memcached conf
  template: src=memcached.j2 dest=/etc/sysconfig/memcached

cat tasks/start.yml
- name: start memcached
  service: name=memcached state=started enabled=yes
  
cat templates/memcached.j2
PORT="11211"
USER="memcached"
MAXCONN="{{ ansible_memtotal_mb//4 }}"
CACHESIZE="64"
OPTIONS=""

3、在playbook中使用role,执行memcached服务的roles
cat site.yml
- hosts: "{{ host }}"
  remote_user: root
  roles:
    - role: memcached

ansible-playbook site.yml -e "host=192.168.10.133"

标签:rsync,name,roles,ansible,Ansible,nfs,五月,Roles,yml
From: https://blog.51cto.com/u_13236892/6509608

相关文章

  • 五月学习之Ansible vault
    3.1、AnsibleVault概述AnsibleVault可以将敏感的数据文件进行加密,而非存放在明文的playbook中比如:部分playbook内容中有明文密码信息,可以对其进行加密操作,后期只有输入对应的密码才可以查看、编辑或执行该文件,如果没有密码则无法正常运行3.2、AnsibleVault应用1、使用ansibl......
  • ESXI自动化管理中关于Ansible工具警告提示处理方法
    近期对服务器软件硬件都进行了升级换代,更新的平台操作系统,紧接发现原来跳板机已无法直接使用,也得升级才能使用,于是把跳板机也进行系统升级,重新安装部署自动化运维管理工具,在安装使用ansible对接ESXI服务器管理的时候提示[WARNING]:Nopythoninterpretersfoundforhostx.x.x.x......
  • 五月学习之Ansible delegate
    1、Ansibledelegate1.1、什么是Task委派简单来说,就是本来需要在当前被控制端主机执行的操作,被委派给其他主机执行1.2、TASK委派场景实践场景说明1、为172.16.1.7服务器添加一条hosts记录:1.1.1.1qingchen.com2、同时要把这个hosts记录写一份至172.16.1.5节点3、除此任务之......
  • 五月读书笔记2
    《代码整洁之道》是由罗伯特·C·马丁(RobertC.Martin)所著的一本软件工程类书籍。它强调了编写清晰、可维护和可理解的代码的重要性。代码质量与可读性:书中强调了代码质量对于项目成功的重要性。良好的代码应该具备可读性,即使是其他开发人员也能轻松理解代码的意图和逻辑。为了......
  • 五月读书笔记1
    《黑客与画家》是保罗·格雷厄姆(PaulGraham)所著的一本计算机科学与创造力的书籍。作者以自身的经历和见解,探讨了黑客文化、编程艺术和创业精神等主题。黑客文化与创造力:作者解释了黑客文化的本质,并将其定义为一种追求创造和突破的态度。黑客不仅仅是指计算机犯罪者,更是指那些对......
  • 五月天的票,你抢到了吗
    一、背景你是否错过了周杰伦的票,最近又没抢到五月天的票,不要太悲伤,今晚有华晨宇的票,后天还有任贤齐的票,加油哦!为了帮助你在激烈的抢票竞争中获得更大的成功机会,本文将介绍抢票软件的实现原理以及我所了解的一些抢票方式。但是,请不要过度将希望寄托于抢票软件,它有时也不灵,经过我......
  • 五月学习之Ansible Task Control
    六、AnsibleTaskControl6.1when条件语句when关键字主要针对TASK任务进行判断,对于此前我们使用过的yum模块是可以自动检测软件包是否已被安装,无需人为干涉;但对于有些任务则是需要进行判断才可以实现的。比如:web节点都需要配置nginx仓库,但其他节点并不需要,此时就会用到w......
  • 【阅读笔记】五月
    人们总是希望一切的事情都尽在掌握之中,所以总是试图在制定完美计划之后一路顺风顺水地执行下去。但是软件维护是一个提高混乱度(增加熵)的过程,所以出现前进两步,后退一步;甚至前进一步,后退一步都是很正常的。而且随着维护的深入,会发现用在修复原有设计上瑕疵的工作量越来越少,而早期维......
  • 【阅读笔记】五月..
    进度落后往往并不是因为大灾难,而通常只是因为那些仅仅会导致延迟半天到一天的事件的堆积最终致使整个进度延期一年。对于里程碑的确立,必须是具体的,特定的,可度量的事情,能够清晰定义。不能清晰定义的里程碑是难以处理的负担。关键路径技术是衡量是否延期的重要方法,每个人都要尽量......
  • 【阅读笔记】五月.
    在设计的过程中,我们要做到自上而下的设计,在设计的每个步骤中,尽可能地使用级别较高的表达方法来表示概念和隐藏细节,直到必要的时候再进一步的细化。文中的这段话让笔者想起SICP中教授们试图传达给学生们的一个屠龙之术——“推迟做出决定的时机,因为只有尽可能地退出做出决定的时......