热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

19,Ansible角色

1,ansible角色ansible官方指定的一套统一规范规则叫角色比如我们可以把配置nginx过程抽象成一个nginx角色同理像redis也是一样可以理解为一个角色,它的配置过程
1,ansible角色
ansible官方指定的一套统一规范规则叫角色比如我们可以把配置nginx过程抽象成一个nginx角色
同理像redis也是一样可以理解为一个角色,它的配置过程有ansible固定模板
[root@m01 ~]# cd /etc/ansible/roles/
[root@m01 /etc/ansible/roles]# tree
.
├── rsync #角色名称
│ ├── files #存放需要copy的文件
│ ├── handlers #触发任务剧本
│ ├── tasks #具体任务剧本
│ ├── templates #模版文件
│ └── vars #存放变量文件

2,ansible角色目录模板(以配置rsync服务为例)
mkdir -p /etc/ansible/roles/rsync (创建角色目录,做到统一管理)
mkdir {files,handlers,tasks,templates,vars} (规定死的目录)
1)cd rsync
vi tasks/main.yml

- name: 01-add-group                    
    group:                  
      name: www                 
      gid: 666                  
    tags: 01-add-group                  
  - name: 02-add-user                   
    user:                   
      name: www                 
      create_home: no                   
      shell: /sbin/nologin                  
      uid: 666                  
      group: www                    
    tags: 02-add-user                   
  - name: 03-install rsync                  
    yum:                    
      name: rsync                   
      state: installed                  
    tags: 03-install rsync                  
  - name: 04-copy rsyncd.conf                   
    copy:                   
      src: rsyncd.conf                  
      dest: /etc/                   
    notify:                 
      - restarted rsyncd                    
    tags: 04-copy rsyncd.conf                   
  - name: 05-create rsync.passwd                    
    copy:                   
      src: rsync.passwd                 
      dest: /etc/                   
      mode: 600                 
    tags: 05-create rsync.passwd                    
  - name: 06-create backup and data directory                   
    file:                   
      path: "{{ item }}"                    
      state: directory                  
      owner: www                    
      group: www                    
    loop:                   
      - "{{ path_backup }}"                 
      - "{{ path_data }}"                   
    tags: 06-create backup and data directory                   
  - name: 08-start rsyncd                   
    service:                    
      name: rsyncd                  
      state: started                    
    tags: 08-start rsyncd                   
  - name: 09-enbaled rsyncd                 
    systemd:                    
      name: rsyncd                  
      enabled: yes                  
    tags: 09-enbaled rsyncd

2)cd files (配置文件统一归到files目录)
技术图片
3)vi vars/main.yml (放定义的变量)

path_backup: /backup        
path_data: /data    

4)vi handlers/main.yml (notify的触发重启机制)

- name: restart rsyncd                      
  service:                      
    name: rsyncd                        
    state: restarted                        

5)创建一个开关文件
技术图片
6)执行
ansible-playbook -C rsync_install.yml
ansible-playbook rsync_install.yml
7,ansible角色templates功能调用
templates模块的功能和files模块的功能类似。使用场景是不一样的:files模块里的配置文件直接批量复制到其他主机就行
它里面的配置参数你写好了就不用变,像rsync和nfs配置文件,但像SSH优化配置文件,里面的设置的登录ip是要跟相应主机ip变化而变化。这个时候templates模块就简单很多

1)这里我们创建一个init角色,这是一个初始化角色,就是将我们主机需要的所有基础配置统一用这个角色去做好
mkdir -p /etc/ansible/roles/init
mkdir {files,handlers,tasks,templates,vars}

2)vi tasks/main.yml
#01.配置base源

- name: 01_configure_yum_repos                      
  yum_repository:                       
    name: base                      
    description: base yum repo                      
    baseurl:                        
      - http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/                        
    gpgcheck: no                        

#02.配置epel源

- name: 02_configure_yum_Repos                      
  yum_repository:                       
    name: epel                      
    description: epel yum repo                      
    baseurl:                        
      - https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch                       
    gpgcheck: no                        

#03.安装常用软件

- name: 03_install_server                       
  yum:                      
    name: "{{ packages }}"                      
  vars:                     
    packages:                       
    - ntpdate                       
    - lsof                      
    - tree                      
    - iftop                     
    - iotop                 

#04.创建用户组

- name: 04_create_group                     
  group:                        
    name: www                       
    gid: 666                

#05.创建用户

- name: 05_create_user                      
  user:                     
    name: www                       
    uid: 666                        
    group: www                      
    shell: /sbin/nologin                        
    create_home: no             

#06.创建数据目录和脚本目录

- name: 06_create_dir                       
  file:                     
    path: "{{ item }}"                      
    state: directory                        
    mode: ‘0755‘                        
  loop:                     
    - /data                     
    - /server/scripts   

#07.创建同步时间定时任务

- name: 07_cron_ntpdate                     
  cron:                         
    name: Time_Update                       
    minute: "*/5"                       
    job: ‘/sbin/ntpdate time1.aliyun.com‘           

#08.拷贝优化后的ssh配置文件

- name: 08_copy_ssh                     
  template:                         
    src: sshd_config.j2                     
    dest: /etc/ssh/sshd_config                      
    mode: ‘0600‘                        
    backup: yes                     
  notify: restart sshd  

3)cp /etc/ssh/sshd_config templates/sshd_config.j2(这里配置文件就不用写在files模块下了)优化参数

#Port 22
#AddressFamily any
ListenAddress {{ ansible_facts.eth0.ipv4.address }}
#ListenAddress ::

19,Ansible角色


推荐阅读
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
    在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
  • 在探讨如何高效处理大规模数据报表的分页展示之前,首先需要明确导致报表加载缓慢的主要原因。通常情况下,这主要是由于两个方面:一是查询条件过于宽泛,使得数据库返回的结果集包含数百万甚至更多的记录;二是前端渲染性能不足,无法高效处理大量数据。为了优化这一过程,可以从以下几个方面入手:优化查询条件,减少不必要的数据返回;采用分页查询技术,每次仅加载所需的数据;利用缓存机制,减少对数据库的频繁访问;提升前端渲染效率,使用虚拟滚动等技术提高用户体验。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • 大数据应用实例:电视收视率分析企业项目实操第二篇
    本文继续探讨大数据在电视收视率分析中的应用,详细介绍了如何在CentOS系统中进行防火墙管理。针对CentOS 6.5及更早版本,提供了具体的命令操作步骤,包括停止防火墙服务和禁用防火墙启动。此外,还深入讨论了这些操作对数据传输和系统安全的影响,为实际项目实施提供了宝贵的技术参考。 ... [详细]
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 在 HihoCoder 1505 中,题目要求从给定的 n 个数中选取两对数,使这两对数的和相等。如果直接对所有可能的组合进行遍历,时间复杂度将达到 O(n^4),因此需要考虑优化选择过程。通过使用哈希表或其他高效的数据结构,可以显著降低时间复杂度,从而提高算法的效率。具体实现中,可以通过预处理和存储中间结果来减少重复计算,进一步提升性能。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • Vuex 实战进阶:构建高效笔记本应用(第二篇)
    在上一篇文章中,我们初步探讨了 Vuex 在该项目中的应用。本文将深入解析整个项目的架构设计。首先回顾 `main.js` 的内容,然后重点分析 `App.vue` 文件,其中引入了 `Toolbar.vue` 和 `NodeList.vue` 组件,详细说明它们在应用中的作用和交互方式。通过这些组件的协同工作,我们将展示如何构建一个高效且响应迅速的笔记本应用。 ... [详细]
  • 在执行 Vim/VM 命令时遇到错误提示:检测到名为
    在使用 Docker 时,通过 Vim 编辑 Dockerfile 文件时遇到了错误提示:“检测到名为 .dockerfile.swp 的交换文件”。这一问题通常是因为上次编辑该文件时意外中断,导致系统生成了临时的交换文件。为了解决这个问题,可以手动删除该交换文件或使用 Vim 的恢复功能来恢复未保存的更改。 ... [详细]
  • Jenkins学习精华:自动化构建与持续集成入门指南
    本文综合了网络资源及同事分享的PPT内容,详细介绍了Jenkins在自动化构建与持续集成中的应用。首先涵盖了Jenkins的安装与配置流程,接着阐述了如何根据项目需求设定自动化编译任务,包括确定开发环境、选择合适的编译工具以及实现代码的自动更新等关键步骤。特别强调了在SVN环境中通过命令行实现代码自动拉取的最佳实践。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • IDEA中高效利用代码变量名替换功能提升编程效率
    在使用 IntelliJ IDEA 进行公司项目代码审查时,我发现许多变量的命名不符合驼峰式命名规范。起初,我尝试手动逐个修改这些变量名,但效率低下。后来,我偶然发现了 IDEA 中的代码变量名替换功能,这极大地提高了我的工作效率。通过该功能,我可以快速批量地将不规范的变量名修改为符合命名规则的形式,不仅节省了时间,还减少了出错的可能性。此外,我还利用这一功能对整个项目的代码进行了全面的优化,确保所有变量命名一致且易于理解。 ... [详细]
  • 本文深入探讨了 iOS 开发中 `int`、`NSInteger`、`NSUInteger` 和 `NSNumber` 的应用与区别。首先,我们将详细介绍 `NSNumber` 类型,该类用于封装基本数据类型,如整数、浮点数等,使其能够在 Objective-C 的集合类中使用。通过分析这些类型的特性和应用场景,帮助开发者更好地理解和选择合适的数据类型,提高代码的健壮性和可维护性。苹果官方文档提供了更多详细信息,可供进一步参考。 ... [详细]
author-avatar
mobiledu2502882543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有