Ansible高階之roles詳解

2022-05-17 02:13:42 字數 3251 閱讀 1526

迭**法:with_items

迭代:當需要重複性執行的任務時,可以使用迭代機制

·對迭代選項的引用,固定變數名為「item」

·要在task中使用with_items給定要迭代的元素列表

·列**式:

字串、浮點使用字串

---

-host: webservs

remote_user: root

tasks:

-name: create some files

file: name=/data/} start=touch

with_itmes:

-file1

-file2

- file3

迭代巢狀子變數

使用字典

---

-host: webservs

remote_user: root

tasks:

-name: create some files

group: name=}

when: ansible_distribution_major_version == "7"

#是版本7才執行下面的

with_items:

-g1-g2

-g3-name: create some users

user: name=} group=}

with_items:

- -

-

playbook中template for if

for迴圈的運用

---

- hosts: websrvs

remote_user: root

vars:

ports:#定義變數列表

- 81

- 82

- 83

tasks:

- name: copy conf

template: src=for1.conf.j2 dest+/data/for1.conf#使用模板將src作為模板

需要建立for1.conf.j2這個模板檔案

vim for1.conf.j2#在裡面寫下面的內容

server }

}###############################

使用鍵值對的時候將81、82、83改為listen_port: 81這樣的格式類推,然後在模板檔案裡將呼叫的變數port改為port.listen_port

使用鍵值對例項

說明:乙個web屬於乙個變數

模板檔案的建立:

說明:p.port是變數的呼叫

if的運用

server_ name };

for和if配合使用

if語句的說明:如果p.name是被定義的則執行下面的語句

roles

ansilbe自1.2版本引入的新特性,用於層次性、結構化地組織playbook。roles

能夠根據層次型結構自動裝載變數檔案、tasks以及handlers等。 要使用roles只需

要在playbook中使用include指令即可。簡單來講, roles就是通過分別將變數、

檔案、任務、模板及處理器放置於單獨的目錄中,並可以便捷地include它們的一

種機制。角色-般用於基於主機構建服務的場景中,但也可以是用於構建守護程序

等場景中

複雜場景:建議使用roles,**復用度高

·變更指定主機或主機組

·如命名不規範維護和傳承成本大

·某些功能需要多個playbook,通過inscudes即可實現

·一般的角色都會寫在/etc/ansible/roles下對應服務建立相應的服務資料夾

roles目錄結構示例:

例項:通過角色實現nginx的安裝到執行

1.建立nginx使用者並建立nginx使用者組然後加到組裡

2.yum這個nginx包

3.通過template使用nginx的配置檔案模板

4.啟動nginx

建立tasks資料夾內寫具體的小功能

1

.vim group.yml

-name: create group

group: name=nginx gid=80

2.vim user.yml

-name: create user

user: name=nginx grounp=nginx shell=/sbin/nologin uid=80

3.vim yum.yml

-name: install package

yum: name=nginx

4.vim start.yml

-name:start nginx

service: name=nginx state=started enabled=yes

5.cp /etc/nginx/nginx.conf /etc/ansible/templates/nginx.conf.j2

6.vim templ.yml

-name: copy conf

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

7.建立總的劇本呼叫任務劇本

vim main.yml

-include: group.yml

-include: user.yml

-include: yum.yml

-include: templ.yml

-include: start.yml

8.建立呼叫角色的劇本

cd /etc/ansble

vim nginx_roles.yml

- hosts: 106.12.39

remote_user: root

roles:

- role: nginx

Ansible之roles(角色)詳解

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

ansible之roles簡單使用

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

ansible程式roles角色

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