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