ansible-学习总结(roles概念与目录结构、roles实践)

Roles

概念

  • 由来:ansible自动化运行,基础由AD-Hoc命令来完成,在命令变多时,产生了playbook进行管理任务,简单任务使用playbook可以轻松处理,但是有复杂任务时单个playbook不可以胜任了,这时需要把多个playbook进行组合,少量用include将剧本中任务互相关联即可完成,但是playbook还在增多的情况时就不方便管理了,这时引入roles对playbook进行有效组织就十分必要了
  • Roles:角色,是ansible自1.2版本开始引入的新特性
  • 目的:用于层次性,结构化地组织playbook,roles能够根据层次型结构自动装载变量、文件、任务、模块及触发器
  • 方法:roles通过分别将放置于变量、文件、任务、模块及触发器单独的目录中,并可以便捷地include它们的一种机制
  • 应用:角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中

注意区分include与import模块(虽然都是task关联使用,但是差距很大)

  • import_tasks(Static):静态方法会在playbooks解析阶段将父task变量和子task变量全部读取并加载,这时候如果父与子task都定义了相同变量,子task变量为最终值,再继续执行父task时,会影响变量相关判断条件
  • include_tasks(Dynamic):动态方法则是在执行play之前才会加载自己变量,即一个父与子task执行时都是只使用自己的变量,不会互相进行干扰

官方roles网站及使用工具

  • Ansible Galaxy(https://galaxy.ansible.com)是一个官网提供的免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles
  • ansible-galaxy命令:默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的 Ansible 角色

目录结构

#ansible安装后默认创建目录
/usr/share/ansible/roles 		#主要用于存放一些系统角色
/etc/ansible/roles				#默认角色路径

#可以自定义roles文件,但是要在配置文件中指定文件路径
vim ansible.cfg
[defaults]							#此模块内添加参数
roles_path=~/myroles 				#添加路径目录参数

#自定义目录myroles,创建apache项目
[ans@node1 myroles]$ ansible-galaxy init apache
- Role apache was created successfully

#初始化项目的目录层级
[ans@node1 myroles]$ tree -C apache/
apache/			        <---具体的角色项目名称,比如nginx、tomcat、php(自由设置)
├── defaults			<--用于为当前角色设定默认变量,此目录应当包含一个main.yml文件
│   └── main.yml		<--main.yml,类似代码中的主函数,进行统一管理
├── files				<--用来存放由copy模块或script模块等模块调用的文件
├── handlers			<--用于定义此角色中触发条件时执行的动作,此目录应当包含一个main.yml文件
│   └── main.yml
├── meta				<--用于定义此角色的特殊设定及其依赖关系,此目录应当包含一个main.yml文件
│   └── main.yml
├── README.md			<--说明文件
├── tasks				<--用于定义当前角色的任务列表,此目录应当包含一个main.yml文件
│   └── main.yml
├── templates			<--用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件
├── tests				<--用于存放测试role本身功能的playbook和主机定义文件,在开发测试阶段比较常用,此目录应当包含一个main.yml文件和自身资源设定invetory
│   ├── inventory		
│   └── test.yml
└── vars				<--用于定义此角色用到的变量,此目录应当包含一个main.yml文件
    └── main.yml


#官网给出的项目文件层级样例
site.yml						#应该是同一目录层级的3个剧本
webservers.yml
fooservers.yml
roles/							#roels目录,可以看出与剧本是同一层级
   common/						#common项目
     files/						#项目中的指定文件目录
     templates/
     tasks/
     handlers/
     vars/
     defaults/
     meta/
   webservers/					#webservers项目,common项目都在roles目录中,同一目录层级
     files/
     templates/
     tasks/
     handlers/
     vars/
     defaults/
     meta/

roles实践

将之前写好的一个简单剧本、相关模板与变量,进行拆分迁移写入roles中

源剧本

####################### 剧本 #######################
[ans@node1 ansible]$ vim playbook.yml 
- hosts: app                                                                                                                        
  vars:
    web_package: httpd
    web_service: httpd
  tasks:
    - name: install apache
      yum:
        name: "{
   { web_package }}"
        state: installed
    - name: start apache
      service:
        name: 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ansible Galaxy是一个使用Galaxy命令行的工具,用于管理Ansible的角色和集合。它可以帮助Ansible用户查找和管理数千个由Ansible管理员和用户编写的角色。通过Ansible Galaxy,用户可以搜索和安装适合他们管理任务的角色。此外,Ansible Galaxy还提供了面向新用户和角色开发人员的文档和视频链接,以帮助他们更好地使用和开发角色。除了管理公共资源库中的角色,ansible-galaxy命令还可以管理本地项目中的角色,例如位于playbook项目的roles目录中的角色。通过ansible-galaxy list子命令,用户可以列出本地找到的角色。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Ansible 系列之 Galaxy 工具](https://blog.csdn.net/qq_43584691/article/details/118365603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [创建角色、ansible-galaxy的简单使用](https://blog.csdn.net/m0_56305656/article/details/119464426)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值