浙江11选5八卦图:Linux基礎教程之ansible進階(roles應用)

ansible 進階

一、roles簡介

浙江11选5任3遗漏 www.ehxis.com 一個項目從開始到結束,不是簡單幾十個playbook就可以完事了,當文件數很多,有上百個的話,僅通過簡單的includes不停的引用,那最終的結果錯綜復雜。這個時候ansible roles就可以很好的發揮它的作用了。

roles,字面意思是角色的含義,可以理解為有相互關聯功能的集合。我們把安裝ntp、mem、nginx、db等等的功能角色放在一個大倉庫里,然后用到哪個,從那里面去拿,拿一個,拿兩個都可以。

roles:是個目錄,角色集合

里面放的有:

????mysql/
????httpd/
????nginx/
????memcached/
每個角色是一個目錄

每個角色的格式,一特定的層級目錄結構進行組織,如下:

mysql/
????files/
????templates/
????tasks/
????handlers/
????vars/
????meta/
用到哪個目錄,給出哪個目錄

二、在playbook中調用角色的方式

-?hosts:?webservers
??remote_user:?root
??roles:
??-?mysql
??-?memcached
??-?nginx

三、以mysql/為例,分別介紹各個目錄的意思

(1)files/:存放copy或script??櫚鵲饔玫奈募?/span>

(2)templates/:templates查找所需要??槲募哪柯?;

(3)tasks/:(必須要有)至少應該包含一個名為main.yml的文件,其他的文件需要在此文件中通過include進行包含;

(4)handlers/:至少應該包含一個名為main.yml的文件,其他的文件需要在此文件中通過include進行包含;

(5)vars/:定義的是變量,至少應該包含一個名為main.yml的文件,其他的文件需要在此文件中通過include進行包含;

(6)meta/:定義此當前角色的特殊設定及其他依賴關系,至少應該包含一個名為main.yml的文件,其他的文件需要在此文件中通過include進行包含;

(7)default/:為當前角色設定默認變量時使用目錄中的main.yml文件

四、例子

(1)mkdir /etc/ansible/roles/nginx{files,tasks,templates,handlers,vars,default,meta} -pv

(2)tree /etc/ansible/roles/nginx

(3)cd /etc/ansible/roles/nginx/

(4)vim tasks/main.yml

(5)cp /root/working/files/nginx.conf.j2 templates/

(6)調用,去working目錄下,建立一個ansible文件夾,cd到里面去,然后vim nginx.yml

(7)運行結果

五、其他配置添加

1、定義觸發器

(1)cd /etc/ansible/roles/nginx 放在handlers目錄下:vim handlers/main.yml

(2)vim tasks/main.yml

(3)ansible-playbook –check nginx.yml

定義tags,直接在tasks/main.yml上加上tags: instconf就可以了

2、自定義變量的使用

(1)cd working/ ,vim myuser.yml

(2)ansible-playbook myuser.yml

(3)再那兩臺機子上看一下:

3、調用roles的第二種方法:傳遞變量給角色

mkdir?-pv?/etc/ansible/roles/memcached/tasks
cd?/memcached
vim?tasks/main.yml

-?name:?install?package
??yum:?name=memcached?state=present
-?name:?start?memcached
??service:?name=memcached?state=started?enabled=true

調用:vim?lnm.yml
-?hosts:?all
??remote_user:
??roles:
??-?{?role:nginx,?when:ansible_distribution_major_version?==?'7'?}
??-?{?role:memcached,?when:ansible_hostname?==?'memcached'?}


ansible-playbook?--check?lnm.yml

大致先寫到這,ansible是門龐大的課程,未完待續。

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code