Ansible 部署工具 pull git 專案

Ansible 部署工具 pull git 專案

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