# Infrastructure as Code 基礎架構程式碼 (IaC) 可讓企業將基礎架構的配置方式自動化以便有效率地擴充雲端,節省時間與成本。IaC 的方法有兩種不同的方法 1. 宣告式 2. 指令式 IaC 使用程式碼 (而非手動程序和設定),來佈建和支援您的運算基礎設施的能力。任何應用程式環境都需要許多基礎架構元件,如作業系統、資料庫連線和儲存。開發人員必須定期設定、更新和維護基礎設施,以開發、測試和部署應用程式。 ### IaC 即程式碼有哪些優點? * 輕鬆複製環境 * 減少組態錯誤 * 反覆運作最佳實務環境 ### 應用情境 1. 大量換密碼 2. 大量部屬agnet 3. 制式流程自動化 ## Ansible 4 大主流的組態管理工具 (Puppet, SaltStack, Chef, Ansible) 中, Ansible 是最容易上手Python 陣營的組態管理工具。此外,台灣的市佔率較高。操作上不用幫每台機器 (instance) 預載 agent ,只要有 SSH 和 Python即可。 ## 使用的 stage : 入門/進階/實作 * Ansible 入門:初期建議搭配 Docker 和 Jupyter 進行實作。 * Ansible Roles 進階入門:當 Ansible 越寫越複雜時,我們可以透過 Roles 來簡化 Playbboks。 * **[實作]** 混用 Ansible 建置 Docker images:將 Ansible 應用到建置 Docker images,用一份 Playbooks 同時建置實體機器、VM 與 Docker Container 的概念。 * **[實作]** 使用 Ansible 和 GitLab CI 進行持續交付:將 Ansible 推廣至企業,縮短交付週期,並減少例外工作。 ## Vagrant 練習 Ansible Vagrant 可用來管理VM ,很適合拿來快速佈建虛擬機器環境 ## Ansible 學習指南 1. Ansible的安裝和基本概念 2. 應用: * playbook * 配置管理部署 * 語法編排 4. ad-hoc並行命令 5. ansible的核心模組 ### 應用情境: 大量換密碼 `ansible-playbook /root/ansible_pw/tasks/changepw.yml -i /root/ansible_pw/tasks/inventory.ini --extra-vars 'newpassword=!QAZ2wsxcde3'` ## Role 結構 ![image](https://hackmd.io/_uploads/r15IAf_w6.png)