ansible之roles簡單使用

2022-06-12 01:36:06 字數 4219 閱讀 1186

目錄將多種不同的tasks的檔案集中儲存在某個目錄下,則該目錄就是角色,角色一般存放在/etc/ansible/roles/目錄下,可通過ansible的配置檔案來調整預設的角色目錄,/etc/ansible/roles/目錄下有很多子目錄,其中每乙個子目錄對應乙個角色,每個角色也有自己的目錄結構,如圖:

每個角色的定義,以特定的層級目錄結構進行組織。比如:

上述目錄中,tasks、handlers、vars、meta、default至少應該包含乙個main.yaml檔案,該目錄下也可由其他.yaml檔案,但是需要在main.yml檔案中用include指令將其他.yml檔案包含起來。

$ mkdir roles   

#建立乙個目錄,名稱為roles。官方推薦在/etc/ansible/roles/這個目錄,不過在**都是可以的

$ mkdir roles/nginx

$ cd roles/nginx/

$ mkdir tasks templates

$ cd tasks/

$ cat user.yaml

- name: create user

user: name=nginx uid=80 group=nginx system=yes shell=/sbin/nologin

$ cat group.yaml

- name: create group

group: name=nginx gid=80

$ cat yum.yaml

- name: install package

yum: name=nginx

$ cat templ.yaml

- name: copy conf

template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf

$ cat stservice.yaml

- name: start service

service: name=nginx state=started enabled=yes

$ cat main.yaml

- include: group.yaml

- include: user.yaml

- include: yum.yaml

- include: templ.yaml

- include: stservice.yaml

#如果需要呼叫別的角色的yaml檔案,也可以這樣寫,比如:- include:roles/httpd/tasks/copyfile.yaml

注意:copyfiile.yaml檔案中的源路徑必須是絕對路徑

$ ls

nginx.conf.j2

#該檔案就是nginx的配置檔案改名了而已

$ cd ../../../

$ cat nginx.yaml

- hosts: webservers

remote_user: root

roles:

- role: nginx

#定義了多個角色,也可在接著寫,每行呼叫乙個角色

#也可以定義tags標籤,比如:- 或- 都可以

$ ls

nginx.yaml roles

#確保呼叫nginx的yaml檔案是和roles是在同一目錄下的

$ tree

.├── nginx.yaml

└── roles

└── nginx

├── tasks

│   ├── group.yaml

│   ├── main.yaml

│   ├── reservice.yaml

│   ├── stservice.yaml

│   ├── templ.yaml

│   ├── user.yaml

│   └── yum.yaml

└── templates

└── nginx.conf.j2

#確保目錄的層次效果是這樣的

$ ansible-playbook nginx.yaml

#如果定義了標籤,就可對標籤進行操作(比如:web或httpd)

$ ansible webservers -m shell -a 'ss -lntp | grep nginx'

#確認被控端的主機nginx已經啟動

乙個簡單的nginx的roles已經編寫完成了!

#空檔案用於測試

#httpd的配置檔案

#目錄結構

#確保與roles目錄在同一目錄下

//根據配置檔案中修改的內容自行進行修改

Ansible之roles(角色)詳解

角色 roles 是ansible自1.2版本開始引入的新特性,用於層次性,結構化地組織playbook。roles能夠根據層次型結構自動裝載變數檔案 tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單的說,roles就是通過分別將變數 檔案...

Ansible高階之roles詳解

迭 法 with items 迭代 當需要重複性執行的任務時,可以使用迭代機制 對迭代選項的引用,固定變數名為 item 要在task中使用with items給定要迭代的元素列表 列 式 字串 浮點使用字串 host webservs remote user root tasks name cre...

ansible程式roles角色

劇本編寫完問題 1.目錄結構不夠規範 ok 2.編寫好的任務如何重複呼叫 3.服務端配置檔案改動,客戶端引數資訊也自動變化 4.彙總劇本中沒有顯示主機角色資訊 5.乙個劇本內容資訊過多,不容易進行閱讀,如何進行拆分 ok 第乙個歷程 規範目錄結構 cd etc ansible roles mkdir...