首页 > 其他分享 >Ansible - Roles

Ansible - Roles

时间:2024-01-23 22:01:51浏览次数:33  
标签:node01 Roles roles ansible Ansible root yml galaxy

 

 

前言

Q1:什么是Roles

在实际生产环境中,会编写大量的playbook文件来实现不同的功能。而且,每个playbook还可能会调用其他文件(变量文件),对于海量的、无规律的文件,管理是个问题。Ansible 从1.2版本开始支持Roles,Roles是管理ansible文件的一种规范(目录结构),Roles会按照标准的规范,自动到特定的目录和文件中读取数据。

 

 

Roles 目录结构

  • defaults/main.yml:定义变量的缺省值,优先级较低
  • files目录:存储静态文件的目录
  • handlers/main.yml:定义handlers
  • meta/main.yml:写作者、版本等描述信息
  • README.md:整个角色(role)的描述信息
  • tasks/main.yml:定义任务的地方
  • templates目录:存放动态数据文件的地方(模板文件)
  • vars/main.yml:定义变量,优先级高

 

创建 Role

ansible-galaxy命令可以创建、管理自己的roles(issue)

 

 

修改 Role

1、定义issue文件的模板文件 & 变量文件

2、修改任务文件,任务文件中不需要tasks关键字

Role的各个文件之间相互调用不需要写路径

以上配置会自动到template目录下寻找issue.j2文件

 

 

在Playbook中调用Role

方法一:在role相同目录下创建一个playbook调用

[root@node01 ansible]# cat ~/ansible/issue.yml
---
- hosts: agent
  roles:
    - issue
#   - role2   # 支持加载多个role

方法二:在ansible.cfg设置roles_path=路径

[root@node01 ansible]# cat ~/ansible/ansible.cfg
[defaults]
remote_user = root
inventory = ./inventory
roles_path = ./roles
[privileges_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[root@node01 ansible]# 

 

 

ansible-galaxy

Ansible Galaxy 是官方提供的一个共享roles的平台(公共Roles仓库:https://galaxy.ansible.com

# 联网搜索roles
[root@node01 ansible]# ansible-galaxy search 'httpd'
# 查看roles基本信息
[root@node01 ansible]# ansible-galaxy info acandid.httpd
# 下载roles到特定的目录
[root@node01 ansible]# ansible-galaxy install acandid.httpd -p ~/ansible/roles/
# 列出本地有哪些roles
[root@node01 ansible]# ansible-galaxy list -p roles/

 

下载Roles的方法

使用 ansible-galaxy install 或者编写 requirments.yml文件(示例以下)

[root@node01 ansible]# cat ~/ansible/roles/requirments.yml
# 格式一: 直接从Ansible Galaxy官网下载
- src: acandid.httpd
# 格式二: 从某个git服务器下载
- src: http://gitlab.com/xxx/xxx.git
  scm: git
  version: 56e00a54
  name: nginx-acme
# 格式三: 下载tar包, 支持http、https、file
- src: http://example.com/myrole.tar
  name: myrole
[root@node01 ansible]# ansible-galaxy install -r roles/requirements.yml -p ~/ansible/roles/

读取配置文件roles/requirements.yml下载三个role到~/ansible/roles目录下

 

 

 

 

(END)

标签:node01,Roles,roles,ansible,Ansible,root,yml,galaxy
From: https://www.cnblogs.com/houhuilinblogs/p/17983503

相关文章

  • sudo提权,ansible批量给所有主机创建系统账户,授权
    sudo(superuseroranotherdo)让普通用户可以以超级管理员或其他人的身份执行命令。sudo基本流程如下:1.管理员需要先授权(修改/etc/sudoers文件)2.普通用户以sudo的形式执行命令3.可以通过sudo-l查看授权情况修改/etc/sudoers的方法如下:1.visudo(带语法检查,默认没有颜色提示)2......
  • Jenkins+基础系列16:番外篇--Manage and Assign Roles 角色权限控制插件
    摘自:https://blog.csdn.net/yangj507/article/details/1080832721、下载插件:Role-basedAuthorizationStrategy,安装成功后,可以重启下 2、菜单查看 3、菜单简介 4、ManageRoles设置5、AssignRoles设置 6、视图名称和job名称设置由于我们采用了表达式匹配......
  • Ansible剧本--Playbook
    Ansible剧本--PlaybookAnsibleplaybook剧本介绍在ansible中,类似“脚本”的文件被称作“剧本”,英文称为playbook,用于配置、部署和管理被控节点只需要把模块按照顺序编排在playbook剧本中,ansible就会按照剧本一步一步的执行,最终达到我们需要实现的效果playbook是由一个或多个'......
  • Ansible命令格式和常用模块介绍
    Ansible命令格式和常用模块介绍Ansible命令格式介绍Ansible命令格式ansible[群组名]-m[模块名]-a[参数]Ansible命令返回值的颜色表示绿色:代表对远程节点不进行相应修改,没有发生改变,命令执行成功黄色:代表对远程节点进行了相应的修改,命令执行成功红色:代表命令执行失败或......
  • ansible使用sudo权限执行命令
    1.修改ansible配置文件vim/etc/ansible/ansible.cfg取消注释的行:remote_tmp=~/.ansible/tmpinventory=/etc/ansible/hostshost_key_checking=False2.编写host文件vim/etc/ansible/hosts10.0.3.2ansible_ssh_user="ydpower"ansible_ssh_port="5151"a......
  • 现代 IT 人一定要知道的 Ansible系列教程:Roles详解
    现代IT人一定要知道的Ansible系列教程:Roles详解AnsiblePlaybook提供了一个可重复、可重用、简单的配置管理和多机部署系统,非常适合部署复杂的应用程序。如果您需要多次使用Ansible执行任务,请编写一个playbook并将其置于源代码控制之下。然后,您可以使用playbook推出新配......
  • 自动化运维工具ansible 学习教程
    什么是ansibleAnsible是一个自动化的IT应用工具,用于自动化配置管理、部署、编排和协调系统和应用程序。它采用基于任务的语法,可以通过SSH或托管到远程节点的代理控制台自动执行各种操作。Ansible基于Python编写,并且易于学习和使用,可以实现基础设施即代码(Infrastructurea......
  • Ansible - Vault
     加密文件Ansible 有时需要访问一些敏感数据,如密码、Key等使用ansible-vault可以加密和解密数据#创建测试文件[root@controlansible]#echo123456>data.txt#加密文件[root@controlansible]#ansible-vaultencryptdata.txt#查看文件内容[root@controlansible......
  • Ansible - 高级语法
     error 处理机制默认ansible在遇到error会立刻停止playbook[root@controlansible]#cat~/ansible/error.yml----hosts:testtasks:-name:startaservicethatdoesnotexist.service:name:hehestate:started-name:t......
  • Ansible - 模块应用
     firewalld 模块使用firewalld模块可以配置防火墙策略[root@control~]#cat~/ansible/firewall.yml----hosts:agenttasks:-name:installfirewalld.yum:name:firewalldstate:present-name:runfirewalld.service:......