國外網站引流如何做企業(yè)網站建設的流程
目錄
配置文件
基本語法規(guī)則:
YAML支持的數據結構
?playbook核心元素
ansible-playbook用法:
觸發(fā)器
特點:
角色:
習題:
配置文件
playbook配置文件使用yaml語法,YAML 是一門標記性語言,專門用來寫配置文件的語言,非常簡潔和強大,遠比 JSON 格式方便。yaml格式文件用于保存針對特定需求的任務列表。(應為逐條輸入命令效率非常的低下,更有效的方案是在playbook配置文件中放置所有的任務代碼,可以實現自動化運維)yaml文件的擴展名為.yaml或.yml。
基本語法規(guī)則:
yaml語法和其他高級語言類似,其結構縮進來展示,通過 “ - ” 來代表項,通過冒號“ :”來分隔鍵和值,整個文件以 “---”開始并以“ …”結束(開始結束符號可以不寫,只是表明一個文件的開始??梢灾苯右?- hosts:開頭)
列表中的所有成員都開始于相同的縮進級別, 并且使用一個 "- " 作為開頭(一個橫杠和一個空格):
1.大小寫敏感
2.使用縮進表示層級關系(每個任務之間的縮進必須嚴格要求,務必對齊!語法沒有問題,縮進有問題一樣不能執(zhí)行??s進問題ansible-playbook --syntax-check 命令檢測不出來。)
3.不允許使用TAB鍵來縮進,只允許使用空格鍵來縮進!!!
4.縮進的空格數量不重要,空格數量要一致,建議使用兩個空格
5.使用"#"來表示注釋
YAML支持的數據結構
對象(字典):鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
數組(列表):一組按次序排列的值,又稱為序列(sequence) / 列表(list)?
純量(scalars):單個的、不可再分的值
- hosts: noe-group #對noe-group組的操作remote_user: root #遠端執(zhí)行用戶身份為roottasks: #任務列表- name: adduser user #任務名稱user: name=user2 state=present #執(zhí)行user模塊,創(chuàng)建用戶tags: #創(chuàng)建tag標簽- a #tag標簽為a
所有的“一”和“:”后面均有空格,而且要注意縮進和對齊
?playbook核心元素
hosts: | 任務的目標主機,多個主機用冒號分隔,?一般調用/etc/ansible/hosts?中的分組信息。 |
?remote_user: | ?遠程主機上,運行此任務的身份默認為root。 |
tasks: | 任務,即定義的具體任務,由模塊定義的操作列表。 |
handlers: | 觸發(fā)器,類似tasks,?只是在特定的條件下才會觸發(fā)的任務。某任務的狀態(tài)在運行后為?changed 時,可通過"notify" 通知給相應的?handlers 進行觸發(fā)執(zhí)行。 |
roles: | 角色,將hosts剝離出去,由?tasks、handlers?等所組成的一種特定的結構集合。 |
ansible-playbook用法:
--syntax-check | 檢測?yaml文件的語法。 |
-C(--check) | 預測試,不會改變目標主機的任何設置。 |
--list-hosts | 列出?yaml?文件影響的主機列表。 |
-list-tasks | 列出?yaml?文件的任務列表。 |
--list-tegs | 列出?yaml?文件中的標簽。 |
-t?TAGS(--tags=TAGS) | 表示只執(zhí)行指定標簽的任務。 |
--skip-tags=SKIP_TAGS | 表示除了指定標簽的任務,執(zhí)行其他任務。 |
--start-at-task=START_AT | 從指定的任務開始往下運行。 |
觸發(fā)器
需要條件觸發(fā)才能執(zhí)行的任務,之前定義在?tasks?中的任務執(zhí)行成功后,在此基礎上觸發(fā)其他的任務繼續(xù)執(zhí)行,就需要定義handlers。
特點:
handlers | 是?Ansible提供的條件機制之一。handlers?和?task?很類似,但是它只在被task?通知的 時候才會觸發(fā)執(zhí)行。 |
handlers | 只會在所有任務執(zhí)行完后執(zhí)行。而且即使被通知了多次,它也只會執(zhí)行一次。handlers 按照定義的順序依次執(zhí)行。 |
例如:
- hosts:not-group #針對not-group組進行的操作remote_user: root #遠程執(zhí)行身份為roottasks: #任務列表- name: modify port #任務名稱shell: sed -i 's/Listen\80/Listen\8080/g' /etc/httpd/conf/httpd.conf#使用shell模塊執(zhí)行操作,修改端口notify: #配置觸發(fā)條件- restart httpd server #完成該任務后調用名為“restart httpd server”的觸發(fā)器handlers: #配置觸發(fā)器- name: restart httpd server #指定觸發(fā)器名稱service:name=httpd state=restarted #觸發(fā)任務為重啟httpd服務
角色:
將多種不同的 tasks??的文件集中存儲在某個目錄下,則該目錄就是角色。角色一般存放在?/etc/ansible/roles/目錄,可通過?ansible?的配置文件來調整默認的角色目錄,/etc/ansible/roles/目?錄下有很多子目錄,其中每一個子目錄對應一個角色,每個角色也有自己的目錄結構。
/etc/ansible/roles/為角色集合,該目錄下有自定義的各個子目錄:
1、mariadb:mysql?角色。
2、Apache:httpd?角色。
3、nginx:nginx?角色。
每個角色的定義,以特定的層級目錄結構進行組織。以Mariadb(mysql角色)為例
- 1、files,存放由?copy?或?script?等模塊調用的文件。
- 2、templates:存放?template?模塊查找所需要的模板文件的目錄,如?mysql?配置文件等模板。?
- 3、tasks:任務存放的目錄。
- 4、handlers:存放相關觸發(fā)執(zhí)行器的目錄,
- 5、vars:變量存放的目錄。
- 6、meta:?用于存放此角色元數據。
- 7、default:默認變量存放的目錄,文件中定義了此角色使用的默認變量。
上述目錄中,tasks、handlers、vars、meta、default?至少應該包含一個 main.yml?文件,該目錄下也可以有其他.yml?文件,但是需要在main.yml?文件中用?include?指令將其他.yml?文件包含進來。?有了角色之后,可以直接在?yaml文件 (playbook?配置文件)中調用角色。
例如:
- hosts:not-groupremote_user: rootrolse:- mysql: #調用角色名- httpd: #調用角色名
- 可以只調用一個角色.也可以調用多個角色。當定義了角色后,用?ansible-playbook PLAYBBOOK?文件執(zhí)行即可。此時?ansible會到角色集合的目錄(/etc/ansible/roles)去找?mysql?和?httpd 目錄,然后?依次運行?mysql 目錄和?httpd目錄下的所有代碼。
- 下面通過一個實例配置數據庫角色,要求被管理主機上自動安裝 Mariadb,安裝完成之后上傳提?前準備好的配置文件至遠端主機,重啟服務,然后新建?testdb?數據庫,并允許?test?用戶對其擁有所有權限。
習題:
1.Ansible?根據角色劃分為(????)三個部分。 | |
A.??使用者? ? ?BAnsible 腳本? ?C.Ansible ?工具集????D.?作用對象. | |
2. 下面屬于Ansible?工具集的有(???). | |
A.Inventory??????????????????B.Modules? ? ??C.Plugins ?????????????????????D.API | |
3.Ansible 中,?Inventory?文件的默認路徑是( ). | |
A./etc/ansible/Inventory? ? ? ??B./etc/ansible/Inventory.conf C./etc/ansible/hosts? ? ? ? ? ?D./etc/ansible/hosts.conf | |
4.Ansible?中,角色默認位于(????)目錄中. | |
A./var/ansible/roles???????????????????????????B./etc/ansible/roles C./etc/roles????????????????????????????????????D./opt/ansible/roles | |
5.Ansible 中,?command?模塊的作用是( ???) | |
A. 執(zhí)行?linux?命令????????????????????B.?修改文件權限 C. 安裝軟件 ???????????????????????????D. 復制文件 |