ansible進階(roles應用)

ansible 進階

一、roles簡介

一個項目從開始到結束,不是簡單幾十個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模塊等調用的文件

(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

ansible進階(roles應用)

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

(4)vim tasks/main.yml

ansible進階(roles應用)

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

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

ansible進階(roles應用)

(7)運行結果

ansible進階(roles應用)

五、其他配置添加

1、定義觸發器

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

ansible進階(roles應用)

(2)vim tasks/main.yml

ansible進階(roles應用)

(3)ansible-playbook –check nginx.yml

ansible進階(roles應用)

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

2、自定義變量的使用

(1)cd working/ ,vim myuser.yml

ansible進階(roles應用)

(2)ansible-playbook myuser.yml

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

ansible進階(roles應用)

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是門龐大的課程,未完待續。

 

原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/65914

(3)
N24_yeziN24_yezi
上一篇 2017-01-05
下一篇 2017-01-05

相關推薦

  • Linux網絡屬性配置—ifcfg命令家族

    ifcfg命令家族:ifconfig,route,netstat 1、NAME               ifconfig – configure a network interface       SYNOPSIS   &n…

    Linux干貨 2016-11-27
  • 腳本小練習

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。                            …

    Linux干貨 2016-08-15
  • Centos 系列bind搭建DNS服務加固

        在centos系列版本上運用bind搭建dns服務教程已經有很多,先感謝前人做出的貢獻,引用兩篇博文,講解的非常詳細。 地址是: 主dns搭建:http://blog.csdn.net/reblue520/article/details/52537014 從dns搭建:http://blog.csdn.net/reblue520/…

    Linux干貨 2017-04-16
  • 111-puppet

    一.運維層次分類 OS Provision:

    2016-12-04
  • bash腳本進階

    case  變量引用  in PAT1)分支1 ;; PAT2)  分支2 ;; … *) 分支n ;; esac case支持glob風格的通配符:   *:任意長度任意字符: ?:任意單個字符: [ ]:指定范圍內的任意單個字符: a|b:a或b function:函數   &nbs…

    Linux干貨 2017-05-21

評論列表(1條)

  • luoweiro
    luoweiro 2017-02-23 07:43

    很詳細的步驟,贊,加油。

欧美性久久久久