最近很常要部署公司上線伺服器,因為超麻煩的緣故,所以用 Ansible 的 playbook 解決這些麻煩的問題。

Ansible 除了從遠端部署工作,也可以在本地端進行測試,這條指令是不使用 playbook 來進行測試的:

ansible all -i "localhost," -c local -m shell -a 'echo hello world'  

接著,我需要建立一個 deploy.yml 這個檔案,把我需要執行的指令寫進去:

---
- hosts: all
  tasks: 
   - shell: sh /root/tomcat/bin/shutdown.sh
   - shell: echo "remove previous file..."
   - shell: rm -rf /root/tomcat/webapps/ROOT
   - shell: wget http://xxx:8080/com.zip
   - shell: unzip com.zip
   - shell: mv ./web /root/tomcat/webapps/ROOT
   - shell: rm -rf ./web
   - shell: rm -rf ./com.zip
   - shell: sh /root/tomcat/bin/startup.sh

然後在 CMD 上面執行:

sudo ansible-playbook -i "localhost," -c local deploy.yml  

如此一來 deploy.yml 就會被部署,然後也可以從遠端進行操作:

ansible-playbook deploy.yml -f 10  

執行完的結果如下: