Skip to content

Ansible Part 1

changwu edited this page Mar 13, 2016 · 1 revision

Part 1

在 ansible 中, 需要兩個檔案來操作機器:

  1. a host inventory
  2. a playbook

Hosts Inventory

用來管理要控制的主機清單, 讓 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

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 配置.

ssh

Ansible 與其他管理配置工具有何不同? Ansible 僅需要在 management node 上安裝好 Ansible, 要管理的機器與 management node 都必須安裝 Python (基本上大部分機器預設含 Python), Ansible 就可以透過 ssh 進行配置與設定, 就像一般手動安裝.

另外, Ansible 的文件做的很好, 並有許多有用的 helper modules, 幫助建立 playbooks, 可以有效的新增使用者, 安裝 ssh key, 佈署 code, 插件權限, 安裝套件, 與雲端服務商互動, 雖然 Ansible 是依靠自動執行遠端命令完成任務, 最有用的其實是, 它的 module 在給予配置上的彈性與幫助.

其他案例

Clone this wiki locally