-
Notifications
You must be signed in to change notification settings - Fork 8
20190617_install drone ci cd using ansible
title: "用 Ansible 安裝 Drone CI/CD 開源專案" date: 2019-06-17 type: blog author: AppleBoy link: https://blog.wu-boy.com/2019/06/install-drone-ci-cd-using-ansible/ layout: post comments: true
相信大家對於 Drone 開源專案並不陌生,如果對於 Drone 不了解的朋友們,可以直接看之前寫的系列文章,本篇要教大家如何使用 Ansible 來安裝 Drone CI/CD 開源專案。目前 Drone 可以支援兩種安裝方式: 1. 使用 Docker 2. 使用 binary,如果您是進階開發者,可以使用 binary 方式來安裝,像是在 Debug 就可以透過 build binary 方式來測試。一般來說都是使用 Docker 方式來安裝,在使用 ansible 之前,請先準備一台 Ubuntu 或 Debian 作業系統的 VM 來測試。
<iframe width="560" height="315" src="https://www.youtube.com/embed/GphMs8pfYiA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>更多實戰影片可以參考我的 Udemy 教學系列
- Go 語言實戰課程: http://bit.ly/golang-2019
- Drone CI/CD 自動化課程: http://bit.ly/drone-2019
首先在您的電腦上安裝 ansible 環境,在 MacOS 很簡單,只需要透過 pip
就可以安裝完成
$ pip install ansible
更多安裝方式,可以直接看官方文件 Installation Guide
來看看 Ansible 專案目錄結構
├── Makefile
├── host.ini
├── playbook.yml
├── roles
│ ├── base
│ └── docker
└── vars
├── drone-agent.yml
└── drone-server.yml
其中 roles
目錄是放置原本專案的角色,本篇內容不會提到,接著我們一一講解每個檔案,首先是 Makefile
,裡面其實很簡單,只是兩個 ansible 指令,透過 ansible-lint
可以驗證 playbook 語法是否有錯誤,可以選用。
all: ansible
lint:
ansible-lint playbook.yml
ansible: lint
ansible-playbook -i host.ini playbook.yml
接著定義要在哪一台 VM 上面安裝 drone-server 或 drone-agent,請打開 host.ini
[drone_server]
dog ansible_user=multipass ansible_host=192.168.64.11 ansible_port=22
[drone_agent]
cat ansible_user=multipass ansible_host=192.168.64.11 ansible_port=22
這邊先暫時把 server 跟 agent 裝在同一台,如果要多台 drone-agent,請自行修改。接下來寫 playbook
- name: "deploy drone server."
hosts: drone_server
become: true
become_user: root
roles:
- { role: appleboy.drone }
vars_files:
- vars/drone-server.yml
- name: "deploy drone agent."
hosts: drone_agent
become: true
become_user: root
roles:
- { role: appleboy.drone }
vars_files:
- vars/drone-agent.yml
可以看到其中 var
目錄底下是放 server 跟 agent 的設定檔案,server 預設是跑 sqlite 資料庫。其中 drone_server_enable
要設定為 true
,代表要安裝 drone-server
drone_server_enable: "true"
drone_version: "latest"
drone_github_client_id: "e2bdde88b88f7ccf873a"
drone_github_client_secret: "b0412c975bbf2b6fcd9b3cf5f19c8165b1c14d0c"
drone_server_host: "368a7a66.ngrok.io"
drone_server_proto: "https"
drone_rpc_secret: "30075d074bfd9e74cfd0b84a5886b986"
接著看 drone-agent.yml
,也會看到要安裝 agent 就必須設定 drone_agent_enable
為 true
。
drone_agent_enable: "true"
drone_version: "latest"
drone_rpc_server: "http://192.168.64.2:8081"
drone_rpc_secret: "30075d074bfd9e74cfd0b84a5886b986"
更多變數內容請參考這邊。
我寫了 ansible-drone 角色來讓開發者可以快速安裝 drone 服務,安裝方式如下
$ ansible-galaxy install appleboy.drone
上面步驟是安裝 master 版本,如果要指定穩定版本請改成如下 (後面接上 ,0.0.2
版號)
$ ansible-galaxy install appleboy.drone,0.0.2
安裝角色後,就可以直接執行了,過程中會將機器先安裝好 Docker 環境,才會接著安裝 server 及 agent。
$ ansible-playbook -i host.ini playbook.yml
以上 Ansible 程式碼可以直接從這邊下載
如果有多台機器需要建置,用 Ansible 非常方便。如果是多個 VM 需要快速開啟跟關閉,請透過 packer 來建置 Image 來達到快速 auto scale。更多詳細的設定可以參考 drone role of ansible。
-
[Drone] 將單一 Job 分配到多台機器,降低部署執行時間 (0)
-
透過 Drone CLI 手動觸發 CI/CD 流程 (0)
-
用 10 分鐘安裝好 Drone 搭配 GitLab (0)
-
10 分鐘內用 Traefik 架設 Drone 搭配 GitHub 服務 (0)
-
[影片教學] 使用 Filter 將專案跑在特定 Drone Agent 服務 (0)
-
Drone 支援單機版安裝 (內附影片) (0)
-
在 docker-in-docker 環境中使用 cache-from 提升編譯速度 (5)
-
Drone 搭配 Kubernetes 部署 Go 語言項目 (0)
-
Gorush 輕量級手機訊息發送服務 (1)
-
Drone CI/CD 系統簡介 (0)