目錄結構
production # inventory file for production servers 關於生產環境伺服器的清單檔案
stage # inventory file for stage environment 關於 stage 環境的清單檔案
group_vars/
group1 # here we assign variables to particular groups 這裡我們給特定的組賦值
group2 # ""
host_vars/
hostname1 # if systems need specific variables, put them here 如果系統需要特定的變數,把它們放置在這裡.
hostname2 # ""
library/ # if any custom modules, put them here (optional) 如果有自定義的模組,放在這裡(可選)
filter_plugins/ # if any custom filter plugins, put them here (optional) 如果有自定義的過濾外掛程式,放在這裡(可選)
site.yml # master playbook 主 playbook
webservers.yml # playbook for webserver tier web 伺服器的 playbook
dbservers.yml # playbook for dbserver tier 資料庫伺服器的 playbook
roles/
common/ # this hierarchy represents a "role" 這裡的結構代表了乙個 "role"
tasks/ #
main.yml # <-- tasks file can include smaller files if warranted
handlers/ #
main.yml # <-- handlers file
templates/ # <-- files for use with the template resource
ntp.conf.j2 # <------- templates end in .j2
files/ #
bar.txt # <-- files for use with the copy resource
foo.sh # <-- script files for use with the script resource
vars/ #
main.yml # <-- variables associated with this role
defaults/ #
main.yml # <-- default lower priority variables for this role
meta/ #
main.yml # <-- role dependencies
webtier/ # same kind of structure as "common" was above, done for the webtier role
monitoring/ # ""
動態清單使用
如果你正在使用雲服務, 使用 動態清單 會是個好主意.
如何區分測試和生產環境
如果你管理著靜態清單,如何區分不同的環境型別是個常見的問題.
# file: production
[atlanta-webservers]
www-atl-1.example.com
www-atl-2.example.com
[boston-webservers]
www-bos-1.example.com
www-bos-2.example.com
[atlanta-dbservers]
db-atl-1.example.com
db-atl-2.example.com
[boston-dbservers]
db-bos-1.example.com
# webservers in all geos
[webservers:children]
atlanta-webservers
boston-webservers
# dbservers in all geos
[dbservers:children]
atlanta-dbservers
boston-dbservers
# everything in the atlanta geo
[atlanta:children]
atlanta-webservers
atlanta-dbservers
# everything in the boston geo
[boston:children]
boston-webservers
boston-dbservers
頂級playbook
在 site.yml 中,我們包含了乙個定義了整個基礎設施的 playbook.注意這個 playbook 是非常短的, 因為它僅僅包含了其他 playbooks.記住, playbook 不過就是一系列的 plays:
---
# file: site.yml
- include: webservers.yml
- include: dbservers.yml
---# file: webservers.yml
- hosts: webservers
roles:
- common
- webtier
理念是我們能夠通過 「執行」(running) site.yml 來選擇整個基礎設施的配置.或者我們能夠通過執行其子集 webservers.yml 來配置. 這與 ansible 的 「–limit」 類似:
ansible-playbook site.yml --limit webservers # --limit 篩選對應主機 --limit @file.txt 也可以將ip放到檔案,@+檔案實現
ansible-playbook webservers.yml
上述組織架構應用場景
那這種結構適用於何種應用場景? 很多!若我想重新配置整個基礎設施,如此即可:
ansible-playbook -i production site.yml
那只重新配置所有的 ntp 呢?太容易了.:
ansible-playbook -i production site.yml --tags ntp
只重新配置我的 web 伺服器呢?:
ansible-playbook -i production webservers.yml
只重新配置我在波士頓的 web伺服器呢?:
ansible-playbook -i production webservers.yml --limit boston
前10臺 和 接下來的10臺呢?
ansible-playbook -i production webservers.yml –limit boston[0-10]
ansible-playbook -i production webservers.yml –limit boston[10-20]
區分不同環境的清單檔案
使用不同的清單檔案來分離你的 stage 和 生產環境是個好方法.你可以通過 -i 來指定.把它們放在同乙個檔案中會有驚喜哦!
最佳實踐 Flutter 最佳實踐
最佳實踐是乙個領域可以接受的專業標準,對於任何程式語言來說,提高 質量 可讀性 可維護性和健壯性都非常重要。讓我們探索一些設計和開發flutter應用程式的最佳實踐。class enum typedef和extension應採用駝峰命名uppercamelcase規則。class mainscree...
Ansible實踐篇(一) Ansible免密登入
主要是ansible服務端需要將 root ssh id rsa.pub分發到其他伺服器 有兩個命令比較重要 ssh keygen 這個命令是用來生成本機的公鑰和私鑰的 ssh keyscan 這條命令是用來把遠端伺服器的公鑰來獲取到本地的 1 首先關閉公鑰認證 如果說不想關閉公鑰認證的話,可以用s...
JUnit最佳實踐
junit最佳實踐 cherami 轉貼 參與分 20053,專家分 4960 發表 2003 9 16 下午7 57 版本 1.0 閱讀 3899次 martin fowler說過 當你試圖列印輸出一些資訊或除錯乙個表示式時,寫一些測試 來替代那些傳統的方法。一開始,你會發現你總是要建立一些新的f...