ansible-semaphore


上週朋友在討論分享關於 Ansible Tower 以及其他方案 , 朋友也提供了一些網路上的 Ansible UI  opensource 資源 , 於是小弟稍微Google 發現 Github上不少這方面的開源專案 .經過逐一仔細看過後決定試試看 Semaphore , 一進入到 ansible-semaphore 第一眼深深的被這句話所吸引  Open Source alternative to Ansible Tower , 以下是小弟的筆記內容

Semaphore 基本的相關依賴條件如下
  • MySQL >= 5.6.4/MariaDB >= 5.3
  • ansible in $PATH
  • git >= 2.x in $PATH
CentOS7 yum 安裝的版本都低於上官方要求 ,需要額外安裝相關環境

## 安裝最新版本 Git
yum install autoconf libcurl-devel expat-devel gcc gettext-devel kernel-headers openssl-devel perl-devel zlib-devel -y
wget https://github.com/git/git/archive/v2.13.2.tar.gz
tar -zxvf v2.13.2.tar.gz
cd git-2.13.2
make clean
make config
./configure --prefix=/usr
make install
[root@ansilbe ~]# git --version
git version 2.13.2

## 安裝MySQL5.7
## 安裝 MYSQL 5.7
wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum localinstall mysql57-community-release-el7-7.noarch.rpm
yum install mysql-community-server
## 啟動相關 MYSQL 服務
systemctl start mysqld
systemctl enable mysqld
## mysql 5.7 以後已 mysql_install_db 已經不在使用 所以 再啟動時候 LOG 會寫出 預設的密碼
[root@semaphore playbooks]#  grep password /var/log/mysqld.log
2017-06-26T02:26:20.357490Z 1 [Note] A temporary password is generated for root@localhost: vO:RkunyM7V>
## 密碼須設定超過 8 包含大小寫 預設的規則
mysql> SET PASSWORD = PASSWORD('123456');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> SET PASSWORD = PASSWORD("!$@#SDADF546sdfkljlSAD");

## 安裝 Semaphore
curl -L https://github.com/ansible-semaphore/semaphore/releases/download/v2.3.0/semaphore_linux_amd64 /usr/bin/semaphore
chmod 755 /usr/bin/semaphore
semaphore -setup

 ## 依照環境需求設置

Firewall 記得開通
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload

預設 Semaphore 預設使用 port 3000 ,   http://yourserverip:3000/  訪問  ,
簡潔的登入畫面 ,  輸入剛剛初始化預設的帳密


Semaphore需注意的幾點事情
* Inventory 在 semaphore 介面上輸入編輯存到 DB
* Playbook  須指定放到git倉庫
* 每次執行TASK Semaphore 會去git clone 指定目錄的 playbook 到本地執行

建立一個 project   , 設定相關內容

設定 Playbook Environment , 因為公司政策原因,署環境沒使用ssh-key登入.
這邊設定使用帳號密碼部署,使用Environment 配合playbooks的 vars_prompt
詳細可以參考 Gitlab issue https://github.com/ansible-semaphore/semaphore/issues/113

Key Store , 設定  Semaphore 去 clone git 倉庫的key  , 也可設定相關Ansible 部署Server登入的 ssh-key

Inventory設定

Playbook Repositories 設定存放playbooks的git倉庫路徑,並選擇git clone 的ssh-key

Gitlab 倉庫存放 playbook

Task Templates , 設定執行的Playbook 與相關環境, 注意Playbook 存放的路徑與剛Git倉庫一樣 UAT/frontend_wap.yml

點擊 run 執行 playbook , 成功拉 !!
可以看到 git clone playbook 並且搭配剛剛上面設定的Env & Inventory來執行

Semaphore 2.3.0版本後支援 Email and Telegram Alert  , 這邊使用 Telegram, 當task執行失敗後會透過IM發出Alert Message

不專業的介紹就到這裡, 希望提供給有興趣朋友參考. 各位週末愉快

參考資料
Ansible Semaphore - https://techbloc.net/archives/1502
ansible-semaphore github - https://github.com/ansible-semaphore/semaphore

留言

這個網誌中的熱門文章

Centos7 xfs filesystem LVM 擴容與 縮減