俗話說的好:只要有重複做兩次以上的事情,都有自動化的價值。如果你很懶得每次都要連進伺服器做相同的事情,可是你又不會自動化部署等工具那麼你可以試試看 Ansible

什麼是 Ansible?

簡單的來說你可以把它當作你的腳本工具,只要寫好腳本讓 Ansible 幫我們照著腳本來跑就好。

優點:
* 伺服器上不用額外安裝 agent 只需要 python 跟 ssh
* 腳本使用 xml 格式

安裝步驟

以下以 Mac 為開發環境

# 安裝 pip 也可跳過
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

# pip 安裝 ansible
pip install ansible

ansible --version

看到版本號就代表安裝完囉

環境設定

我們可以將 hosts 設定群組方便我們操作,或者也可以全部的伺服器執行腳本,設定檔的位子在 /etc/ansible/hosts 當然這個資料夾是不存在的,所以要手動新增一下。

內容類似如下

[dev]
bonze.tw ansible_ssh_host=xxx.xxx.xxx.xxx ansible_ssh_user=bonzetest

詳細的設定格式可以參閱 Inventory文件

接著可以試試看 ping 會不會通囉 ansible dev -m ping

playbook

需求當然不會只有很簡單的一行指令,這時我們需要更複雜的動作時就是 playbook 上場的時候了,你可以把它當作劇本,讓 ansible 照著我們寫好的劇本來操作就好,以下是我拿來 pull 的腳本。

---
- hosts: dev
  remote_user: bonzetest
  become: yes
  become_user: root
  become_method: sudo
  tasks:
    - name: pull bonze_blog
      git:
        repo: XXXXXXXXXXXXXXX
        dest: /data/bonze_blog
        update: yesd
        version: dev

寫好之後只要使用指令 ansible-playbook playbook.yml 即可,詳細使用說明可參考

playbooks 介紹
git – Deploy software (or files) from git checkouts

以上就是 ansible playbook 一個簡單的腳本。

參考資料

Ansible 是什麼
How to do a git pull/push using ansible
Fixing “Instead of sudo/sudo_user, use become/become_user” Error

Summary
Ansible 部署工具 pull git 專案
Article Name
Ansible 部署工具 pull git 專案
Description
記錄如何使用 Ansible 在本機操控遠端伺服器進行專案 git pull 並且自動化開發,如果你還不認識 Ansible 或是想要學習如何自動化開發,那麼你可以看看此篇文章。
Author
Publisher Name
bonze
Publisher Logo

Facebook 功能: