所以我試圖圍繞Ansible圍繞我的腦袋,並構建一個簡單的LEMP堆棧。我決定與nested playbook合作,因爲我想在學習的同時儘可能多地進行劃分。我遇到了這個問題,我需要傳遞一些變量,比如mysql的root密碼。現在我想知道是否有任何最佳做法將主要劇本的變奏曲傳遞給單獨的劇本,或者是否應該在各個子劇本中設置變奏曲?我使用this repo作爲我自己項目的基礎。我還想知道,如果在子Playbook中設置了默認值,主Playbook中設置的變量是否會覆蓋此值,那麼覆蓋如何與varible一起工作?Ansible將vars傳遞給嵌套的playbooks的最佳實踐?
3
A
回答
9
我想最佳實踐是,如果可能的話,重用現有的代碼。如果您還沒有聽說過,Ansible有Galaxy網站https://galaxy.ansible.com/,人們可以在這裏共享各種隨時可以使用的角色。一個這樣的角色是mysql(及其相關的github回購是在https://github.com/bennojoy/mysql)
您不僅可以使用在你的劇本那個角色,但該網頁也有例子,說明如何將參數/變量傳遞給你的角色:
4)完全安裝/配置的MySQL服務器,主從複製。
- hosts: master
roles:
- {role: mysql, mysql_db: [{name: benz}, {name: benz2}],
mysql_users: [{name: ben3, pass: foobar, priv: "*.*:ALL"},
{name: ben2, pass: foo}],
mysql_db_id: 8 }
- hosts: slave
roles:
- {role: mysql, mysql_db: none, mysql_users: none,
mysql_repl_role: slave, mysql_repl_master: vm2,
mysql_db_id: 9, mysql_repl_user: [{name: repl, pass: foobar}] }
2
一個好的解決辦法是你必須具有可設置的變量的例子vars.yml.dist文件。這存在於你的倉庫中,開發人員只需在此基礎上創建一個vars.yml的本地副本。然後,簡單地將以下內容添加到您的手冊中: include: vars.yml
這允許您將變量傳遞給您的角色,嵌套或不嵌套。
相關問題
- 1. 將數組傳遞給--extra-vars - Ansible
- 2. 最佳實踐:嵌套forEach
- 3. 嵌套jMockit嘲笑的最佳實踐
- 4. 最佳實踐的嵌套屬性
- 5. Ansible最佳實踐和ansible.cfg
- 6. 將數據傳遞給子視圖codeigniter的最佳實踐
- 7. 將許多參數傳遞給方法的最佳實踐?
- 8. 將服務器端變量傳遞給javascript的最佳實踐?
- 9. 將上下文傳遞給非活動類的最佳實踐?
- 10. 將數據從asp.net-mvc傳遞給javascript的最佳實踐
- 11. 將配置傳遞給每個GUI對象的最佳實踐
- 12. Swift - 將嵌套數組傳遞給函數的最佳做法
- 13. Ansible playbooks
- 14. VueJS嵌套組件:最佳實踐
- 15. Yii2 - 嵌套資源最佳實踐
- 16. 嵌套函數最佳實踐
- 17. Caliburn.Micro嵌套ViewModels最佳實踐
- 18. 最佳實踐Mongoid:嵌套資源
- 19. 將靜態JSON傳遞給Django模板 - 最佳實踐?
- 20. 將參數傳遞給過濾器 - 最佳實踐
- 21. Ansible顯示輸出的最佳實踐
- 22. 實現嵌套GridView最多4級的最佳實踐?
- 23. Autofac最佳實踐傳遞參數
- 24. 將模型中的額外數據傳遞給查看的最佳實踐?
- 25. 存儲將傳遞給jQuery插件的JSON數據的最佳實踐
- 26. 將數據從Phoenix傳遞到Javascript的最佳實踐
- 27. 將數據傳遞到服務層的最佳實踐
- 28. GWT MVP最佳實踐模型數據傳遞給視圖
- 29. 在Android中將消息從GLSurfaceView傳遞給MainActivity的最佳實踐?
- 30. 將結構嚴密的信息傳遞給WCF方法。最佳實踐
好的,awsome。現有的代碼=最佳實踐是有道理的。但我仍然想知道變量重寫是如何從主要劇本到副劇本的,你知道嗎?我無法找到關於此問題的任何信息。 – StenW
@StenW我提供的例子就是你的手冊中的內容。在那個例子中,正在調用mysql的角色,並傳入不同的變量。 – Mxx