-
Notifications
You must be signed in to change notification settings - Fork 1
Ansible Part 1
- configuration management and orchestration tool
- 19 Minutes With Ansible
在 ansible 中, 需要兩個檔案來操作機器:
- a host inventory
- a playbook
用來管理要控制的主機清單, 讓 ansible management node 辨識要控制的機器, 底下是範例設定檔, [] 可用來組織 group, 例如在 loadbalancer 中, 需要控制三台機器, 對於主機的管理, 可以是完整的 hostnames, 簡短的 hostnames, 亦或是 IP addresses.
[loadbalancer]
haproxy-01.example.com
haproxy-02
10.0.15.15
[web]
web1
web2
10.0.15.21
[testing]
demo.example.com
playbooks 是記錄遠程機器要執行的操作, 可能是安裝 server, 更新 server 設定檔, 佈署應用程式, 重新啟動 server. playbooks 就像是記錄過去手動操作的指令, 但它提供較為友善的寫法來操作機器, 彈性的機器配置, 設定檔為 YML 格式.
---
- hosts: web
become: yes
become_method: sudo
tasks:
- name: install nginx
apt: name=nginx state=installed update_cache=yes
- name: write our nginx.conf
template: src=templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: deploy website content
git: repo=https://github.com/jweissig/episode-47.git
dest=/usr/share/nginx/html/
version=release-0.01
- name: start ntp
service: name=nginx state=started
handlers:
- name: restart nginx
service: name=nginx state=restarted假設我們的工作目標是要將遠程一台 ubuntu 機器變成 web server, 先定義好 hosts inventory 與 playbook. 首先 management node 會讀取 hosts inventory, 知道要管理 web 這個 group 理的主機, 並透過 ssh 通訊協議操作遠程機器, 接著讀取 playbook 裡的指令, 完成 server 配置.
Ansible 與其他管理配置工具有何不同? Ansible 僅需要在 management node 上安裝好 Ansible, 要管理的機器與 management node 都必須安裝 Python (基本上大部分機器預設含 Python), Ansible 就可以透過 ssh 進行配置與設定, 就像一般手動安裝.
另外, Ansible 的文件做的很好, 並有許多有用的 helper modules, 幫助建立 playbooks, 可以有效的新增使用者, 安裝 ssh key, 佈署 code, 插件權限, 安裝套件, 與雲端服務商互動, 雖然 Ansible 是依靠自動執行遠端命令完成任務, 最有用的其實是, 它的 module 在給予配置上的彈性與幫助.
其他案例
