创建角色、ansible-galaxy简单使用

本文详细介绍了如何在Ansible中创建和使用角色,包括角色的创建过程、定义内容、使用变量以及通过ansible-galaxy安装和管理角色。还涵盖了角色的依赖、变量优先级以及从Ansible Galaxy搜索和安装角色的方法。
摘要由CSDN通过智能技术生成

创建角色、ansible-galaxy简单使用

1.创建角色

角色创建流程
在Ansible中创建角色不需要特别的开发工具。创建和使用角色包含三个步骤:

创建角色目录结构
定义角色内容
在playbook中使用角色

2.创建角色的两种方式

用mkdir直接创建

[root@centos8-1 roles]# mkdir -p nginx/{defaults,vars,files,templates,tasks,handlers}
[root@centos8-1 roles]# ls
nginx  php.tar
[root@centos8-1 roles]# tree nginx
nginx
├── defaults
├── files
├── handlers
├── tasks
├── templates
└── vars

6 directories, 0 files
[root@centos8-1 roles]# 
[root@centos8-1 roles]# touch nginx/{defaults/main.yml,tasks/main.yml,vars/main.yml}
[root@centos8-1 roles]# tree nginx/
nginx/
├── defaults
│   └── main.yml
├── files
├── handlers
├── tasks
│   └── main.yml
├── templates
└── vars
    └── main.yml

6 directories, 3 files
[root@centos8-1 roles]

通过命令来创建

[root@centos8-1 roles]# ansible-galaxy init httpd
- Role httpd was created successfully
[root@centos8-1 roles]# tree httpd/
httpd/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

8 directories, 8 files
[root@centos8-1 roles]# 

3.定义角色的内容

创建目录结构后,用户必须编写角色的内容。ROLENAME/tasks/main.yml任务文件是一个不错的起点,它是由角色运行的主要任务列表。

下列tasks/main.yml文件管理受管主机上的/etc/motd文件。它使用template模块将名为motd.j2的模板部署到受管主机上。因为template模块是在角色任务而非playbook任务内配置的,所以从角色的templates子目录检索motd.j2模板。

我们用角色给受管主机安装一个httpd

准备工作:

[root@centos8-1 httpd]# cat tasks/main.yml     //角色任务里面写安装、配置、重启
---
# tasks file for httpd
- name: install httpd
  yum:
    name: httpd
    state: present
- name: config httpd
  template:
    src: templates/httpd.conf.j2
    dest: /etc/httpd/conf/httpd.conf
- name: service
  service:
    name: httpd
    state: started

[root@centos8-1 httpd]# 

角色允许以模块化方式编写playbook。为了最大限度地提高新开发角色的效率,请考虑在角色开发中采用以下推荐做法:

在角色自己的版本控制存储库中维护每个角色。Ansible很适合使用基于git的存储库。
角色存储库中不应存储敏感信息,如密码或SSH密钥。敏感值应以变量的形式进行参数化,其默认值应不敏感。使用角色的playbook负责通过Ansible Vault变量文件、环境变量或其他ansible-playbook选项定义敏感变量。
使用ansible-galaxy init启动角色,然后删除不需要的任何目录和文件。
创建并维护README.md和meta/main.yml文件,以记录用户的角色的用途、作者和用法。
让角色侧重于特定的用途或功能。可以编写多个角色,而不是让一个角色承担许多任务。
经常重用和重构角色。避免为边缘配置创建新的角色。如果现有角色能够完成大部分的所需配置,请重构现有角色以集成新的配置方案。使用集成和回归测试技术来确保角色提供所需的新功能,并且不对现有的playbook造成问题。
4.角色的依赖项:
角色依赖项使得角色可以将其他角色作为依赖项包含在内。例如,一个定义文档服务器的角色可能依赖于另一个安装和配置web服务器的角色。依赖关系在角色目录层次结构中的meta/main.yml文件内定义。

以下是一个示例meta/main.yml文件。

[root@centos8-1 roles]# tree httpd/
httpd/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml    //在这个里面写内容
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

8 directories, 8 files
[root@centos8-1 roles]#

[

root@centos8-1 httpd]# cat meta/main.yml
dependencies:
  - role: apache
    port: 8080
  - role: postgres
    dbname: serverlist
    admin_user: felix

默认情况下,角色仅作为依赖项添加到playbook中一次。若有其他角色也将它作为依赖项列出,它不会再次运行。此行为可以被覆盖,将meta/main.yml文件中的allow_duplicates变量设置为yes即可。

注意:

限制角色对其他角色的依赖。依赖项使得维护角色变得更加困难,尤其是当它具有许多复杂的依赖项时。

5.playbook使用角色

要访问角色,可在play的roles:部分引用它。

[root@centos8-1 httpd]# cat defaults/main.yml 
---
# defaults file for httpd
PORT: 82
[root@centos8-1 httpd]# 



[root@centos8-1 ansible]# cat playbook/test.yml 
---
- hosts: 192.168.197.135
  roles: 
    - httpd
[root@centos8-1 ansible]# 



[root@centos8-1 ansible]# ansible-playbook playbook/test.yml 

PLAY [192.168.197.135] *********************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.197.135]

TASK [install httpd] ***********************************************************
ok: [192.168.197.135]

TASK [config httpd] ************************************************************
ok: [192.168.197.135]

TASK [httpd : service] *********************************************************
ok: [192.168.197.135]

PLAY RECAP **********************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值