最簡單的 git server
一般來說,Ansible Playbook 要讓 Ansible Tower (或新的名字 Ansible Automation Controller) 或 AWX 使用,有幾種方式:
- 放在 Ansible Tower / Ansible Automation Controller / AWX 的主機裡,這樣的作法是最簡單,但若需要放新的 playbook 進去,勢必要使用 SSH 登入,然後才能處理。
- 放在 git server,這是 Best practice,一來 playbook 的變更有紀錄可循,二來也能很方便的取用。但缺點是需要架設 git server,這時候就會自建 gitlab、gitea 或是放在外部的 github、gitlab 。
這裡要介紹一種方式,是我突然想到的,也是我之前忽略的。
git server 本身只要有 SSH server ,其實就可以了,無需額外架設。架設的方法可以參考 Setting up the server
以下紀錄如何進行
第一步,先準備好 Linux 主機,已經安裝好 git 與 SSH 伺服器。
第二步,建立一個使用者帳號,名稱為 git
sudo adduser git
第三步,在 git 使用者家目錄下,建立 .ssh/authorized_keys 檔案,並變更權限為 0600
su git -c "cd /home/git && mkdir -p .ssh && touch .ssh/authorized_keys && chmod 0600 .ssh/authorized_keys"
第四步,把可以登入使用者的 SSH Public key 放到 git 使用者的 .ssh/authorized_keys 檔案裡。
這邊可以先把要登入的主機的 SSH public key 先上傳到 git server 的 /tmp 目錄,然後再用 cat 指令,把 SSH public key 內容附加到 .ssh/authorized_keys 裡。
cat /tmp/id_rsa.pub >> /home/git/.ssh/authorized_keys
或者是就用編輯器去編輯 .ssh/authorized_keys,然後把 SSH public key 內容複製到裏面去。
第五步,從要登入的主機 SSH private key 登入
ssh git@<git-server>
第五步,這邊我們把專案統一放到 /srv/git 目錄下,這邊以 project1 為例
mkdir -p /srv/git/project1
cd /srv/git/project1
git init --bare
chown -R git:git /srv/git
第六步,在其他主機以 git 指令驗證
git clone git@<git-server>
大功告成,這樣就做出一個最簡單的 Git server 了。使用 git 指令就可以操作,也可以透過 SSH 指令去新增專案了。
ssh git@<git-server> "mkdir -p /srv/git/project2 && cd /srv/git/project2 && git init --bare"
這時候到 Ansible Tower 上,先新增 Credential :
- Credential type 選擇 Source control
- SCM private key,填入前面使用的 SSH private key
按下 Save。接下來新增專案:
- 類型選為 Git
- SCM URL 填入
git@<git-server>
- SCM Credential 選到剛剛新增的 Credential
按下 Save,Ansible Tower 就會開始更新。
好了,經過這樣的設定,Ansible Tower 就已經跟剛剛建置好的 git server 整合到一起了。