045、、第一个role角色
本文最后更新于 66 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

第一个role角色

1. 概述

  • 在上一节 ansible role角色(1)中,我们阅读了官方文档,并且知道了角色相关的概念。从这节开始,我们就开始使用Ansible role功能来搭建自己的自动化环境。

2. 编写第一个role角色

2.1 编写角色文件

我是在~/ansible_playbooks目录下进行一系列测试操作的。为了测试角色,在该目录下创建roles目录,我将第一个角色命名为first_role

首先创建roles文件夹,用于存放自动编写的各种角色文件。

[ansible@ansible ~]$ cd ansible_playbooks/
[ansible@ansible ansible_playbooks]$ mkdir -p roles
[ansible@ansible ansible_playbooks]$

创建第一个角色文件夹first_role

[ansible@ansible ansible_playbooks]$ cd roles/
[ansible@ansible roles]$ mkdir -p first_role
[ansible@ansible roles]$

创建第一个角色对应的tasks文件夹,用于存放对应任务文件:

[ansible@ansible roles]$ mkdir -p first_role/tasks

然后,创建角色任务main.yml

[ansible@ansible roles]$ touch first_role/tasks/main.yml

然后使用vim编辑其内容,任务文件first_role/tasks/main.yml内容如下:

---
  - name: Say hello
    ansible.builtin.debug:
      msg: "Hello world!"

这样一个最简单的role角色就配置好了!!

2.2 调用role角色

现在来编写一个调用该角色的playbook剧本文件,命名为first_role.yml,将其放在roles目录下:

[ansible@ansible roles]$ touch first_role.yml

其内容如下:

---
- hosts: node1
  roles:
    - first_role

此时roles文件夹下,目录结构如下:

[ansible@ansible roles]$ find
.
./first_role
./first_role/tasks
./first_role/tasks/main.yml
./first_role.yml
[ansible@ansible roles]$

检查剧本语法:

[ansible@ansible roles]$ ansible-lint first_role.yml

执行剧本:

[ansible@ansible roles]$ ansible-playbook first_role.yml -v
Using /etc/ansible/ansible.cfg as config file

PLAY [node1] *****************************************************************************************************************

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

TASK [first_role : Say hello] ************************************************************************************************
ok: [node1] => {
    "msg": "Hello world!"
}

PLAY RECAP *******************************************************************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[ansible@ansible roles]$

执行效果:

Snipaste_2023-11-19_23-01-02

可以看到,一个简单的role角色被我们成功调用了,并成功输入“‘Hello world!’”。

3. 总结

  • role角色并不关心哪些主机哪些设备使用它,它只是关于一个功能的集合,只需要编写一个playbook去引用role角色即可。
  • role角色中的目录,并不是所有目录都是必须的。
  • role角色用于层次化、结构化的组织多个playbook。
  • role主要的作用是可以单独的通过一个有组织的结构、通过单独的目录管理如变量、文件、任务、模块、以及处理任务等。
  • roles主要依赖于目录的命名和摆放,默认tasks/main.yml是所有任务的人口,使用roles的过程也可以认为是目录规范化命名的过程。
  • 在实际的工作当中,一个完整的项目实际上是很多功能体的组合,如果将所有的功能写在一个playbook中会存在如代码耦合程度高、playbook长而维护成本大、灵活性低等一系列的问题。 我们使用role角色可以解决这个问题。

后续随着我们对role理解得更加深入后,我们可以编写出更加复杂功能更加强大的角色。

我们一起努力吧。

谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇