Ansible 什么是Roles

2018-07-25 11:02 更新

在上一章「Ansible 維護(hù)大型的 Playbooks?」凍仁提到 Roles 很重要、很好用!這章凍仁就來(lái)介紹可讓我們加速升空的火箭 (Rocket) 1 吧!

automate_with_ansible_roles_and_windows-01.jpg

《Ansible: Up and Running》 一書(shū)的第 8 章標(biāo)題為「Roles: Scaling Up Your Playbooks」,開(kāi)門(mén)見(jiàn)山的說(shuō)明了我們可以使用 Roles 來(lái)擴(kuò)充 Playbooks。 2

automate_with_ansible_roles_and_windows-02.jpg

Safari Books Online - https://goo.gl/dxoGSb

如果要用一句話來(lái)解釋 Roles,那凍仁會(huì)這么說(shuō):

「Roles 可以降低 Playbooks 的復(fù)雜性,更可以增加 Playbooks 的可用性?!?/strong>

automate_with_ansible_roles_and_windows-03.jpg

Roles 就字面上來(lái)說(shuō)有角色、作用的意思,但它的全名其實(shí)是 Playbooks Roles,我們可把它當(dāng)成是 Playbooks 的延伸使用。

在前一章里,我們雖已把重復(fù)的 Tasks 獨(dú)立出來(lái),但光只有這樣是無(wú)法分享給其它專案 (Project) 3 使用的。在 Python 的世界里,我們會(huì)把寫(xiě)好的程式封裝套件 (Packages) 并分享給他人使用,而在 Ansible 的世界里,我們會(huì)用 Roles 來(lái)形容這個(gè)偉大的行為。

automate_with_ansible_roles_and_windows-04.jpg

早在「Ansible 如何操作」一章講解 Playbooks 時(shí),就已出現(xiàn)過(guò) Roles 的蹤影了。

「寶寶身上有 Roles 只是寶寶不說(shuō)?!?/p>

automate_with_ansible_roles_and_windows-05.jpg

圖片來(lái)源:http://goo.gl/GKJvXn

比對(duì)一下 Roles 和 Playbooks 的目錄結(jié)構(gòu),可以看到前者多了 roles/ 目錄和 chusiang.win_vim 的 role。

automate_with_ansible_roles_and_windows-06.jpg

Role 的基本結(jié)構(gòu)

接下來(lái)凍仁將借由這個(gè)簡(jiǎn)單的 example_role 來(lái)介紹 Role 的檔案架構(gòu)。

$ tree .
.
└── example_role
    ├── README.md     # 說(shuō)明文件
    ├── defaults
    │   └── main.yml  # 可被覆寫(xiě)的變數(shù)。
    ├── files         # 需復(fù)制到 Managed node 的檔案。
    ├── handlers
    │   └── main.yml  # 主要的 handler。
    ├── meta
    │   └── main.yml
    ├── tasks
    │   └── main.yml  # 主要的 task。
    ├── templates     # 集中存放 Jinja2 模板的目錄。
    ├── tests
    │   ├── inventory
    │   └── test.yml
    └── vars
        └── main.yml  # 不該被覆寫(xiě)的變數(shù)。

9 directories, 8 files

關(guān)于 Roles 的基本介紹就到這里,下一章凍仁將介紹怎么使用 Roles?

到目前為止,不知大家是否跟上凍仁的腳步了呢?如果有問(wèn)題,可以在下方留言,凍仁會(huì)抽空回答的。

相關(guān)連結(jié)

1. 當(dāng)您駕御 Roles 后,就會(huì)有如搭上 Rocket 般的一飛沖天! ?
2. 《Ansible: Up and Running》的章節(jié)、目錄資訊可于 Safari Books online (https://www.safaribooksonline.com/library/view/ansible-up-and/9781491915318/) 取得。 ?
3. 這里指的專案是指一個(gè)擁有很多 Playbook 的 Playbooks,可以把它想成是 Chef 的 Cookbooks 或者是 Java 的 Project。 ?


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)