Ansible Tower 升級 Ansible Automation Platform 2.0 作法

隨著 Ansible Automation Platform 2.0 於今年七月中釋出 Early Access 版本,我之後會寫一篇文章介紹與大家之前比較熟悉的 Ansible Tower 在特性上有什麼差別,有興趣的朋友可以先在新的環境玩玩看,先不要急著升級,因為之後會有更多新功能,也會在之後的文章一併介紹。

本篇主要是介紹升級 Ansible Tower 3.8.4 (Ansible Tower 的最後一版) 到 Ansible Automation Platform 2.0 的作法。

之所以會有這篇文章的出現,主要是因為 Ansible Automation Platform 2.0 以及之後的版本對於 RHEL 作業系統和 Ansible-core 的版本都會有一些限制,所以先寫篇文章記錄一下,之後有朋友想升級也可以當個參考 。

♖ 環境

  • RHEL 7.9
  • RHEL 8.4
  • Ansible Tower 3.8.4
  • Ansible Automation Platform 2.0 Early Access
    (以下簡稱 AAP2.0)

♖ Ansible Tower 的升級路線

Ansible Tower 升級可以參考 Upgrading an Existing Tower Installation,並且分為以下兩種情況:

(1) 假設您的 Ansible Tower 版本在 3.7 以上基本上可以總結為以下三步驟:

  1. 使用官方下載連結下載目標版本 Ansible Tower 壓縮檔並解壓縮
  2. 備份舊版本的 Ansible Tower 資料(包含 Templates, Projects 等設定),備份步驟可以參考 Backing Up and Restoring Tower
  3. 複製備份檔案到目標版本的 Ansible Tower 目錄下
  4. 執行目標版本的安裝流程
  5. 還原備份檔案

(2) 假設您的版本在 3.7 以下,則可以參考 Red Hat Ansible Tower Upgrade from 3.5 to 3.8 – when running setup.sh is not enough – or: I have made fire!

最保險的升級建議是升級到目前版本的最新小版本,再升級到下一個中版本,比方說目前版本是 3.7.2,就建議升級到 3.7.5 (3.7系列的最後一版) 再往上升到 3.8.4

♖ Ansible Tower 到 Ansible Automation Platform 2.0 的升級路線

老實說 Ansible Tower 本身升級過程沒什麼問題,就是 Ansible-core 的版本問題和 AAP2.0RHEL 的版本限制花了點時間。

先講一下我的升級路徑:

步驟 Ansible Tower / AAP 版本 作業系統版本 Ansible-core 版本
1 Ansible Tower 3.8.4 RHEL7 Ansible core 2.9.X
2 Ansible Tower 3.8.4 RHEL8 Ansible core 2.9.X
3 Ansible Automation Platform 2.0 RHEL8 Ansible core 2.11.X

這邊如果有實驗精神的朋友想要跟我一樣試著退版從 RHEL7 試驗重裝,也可以參考 How to uninstall Ansible Tower,另外附帶一提,安裝 Ansible Tower 會需要用到兩個 package rhel-7-server-extras-rpms & rhel-server-rhscl-7-rpms,這兩個 package 都會需要安裝 epel-release,可參考以下指令:

1
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

如果安裝時跑出一堆奇怪的 ansible playbook 語法錯誤,請參照上面表格中的 Ansible-core 版本 安裝對應的版本。使用錯誤的 Ansible-core 版本會連安裝腳本都跑不起來,pip 安裝指令如下:

1
2
3
4
5
# Ansible Tower 3.8.4
python3.6 -m pip install ansible==2.9.27

# AAP2.0
python3.6 -m pip install ansible==2.11.6

這邊我的做法是:

  1. RHEL7 上面的 Ansible Tower 備份起來
  2. 備份檔傳到 RHEL8 這台主機的 Ansible Tower 3.8.4 資料夾底下
  3. RHEL8 這台主機的 Ansible Tower 3.8.4 資料夾底下跑還原命令

就可以看到安裝好的 Ansible Tower 3.8.4,裡面所有在 RHEL7 這台機器上的 Ansible Tower 設定好的 templates 都完好如初。

upload successful

接下來照著我上述所提的安裝步驟,在 RHEL8 這台機器上下載 AAP2.0 安裝檔,使用跑 ./setup.sh 的方式安裝到 AAP2.0,這邊連資料庫都不用備份還原。

可能會有朋友疑問:AAP2.0 限制一定要安裝在 RHEL8 上面嗎?

因為 Ansible Playbook 執行環境在 AAP2.0 上預設都是用容器去跑,原因會在之後的介紹文分享,總之這個環境要能夠透過 podman 指令去拉 Red Hat images,更多的安裝條件可以參考這份安裝指南: Ansible Automation Platform 2.0 ea Installation Guide

直接透過安裝的方式升級為 AAP2.0 會遇到第一個問題,就是 TLS 證書要重簽,不然打開瀏覽器會看到以下畫面:

upload successful

使用 OpenSSL 自建 CA,然後簽發憑證,我是參考 [Centos7] SSL自簽憑證+APACHE+Selinux 重新複習如何在地端環境自簽憑證的,

在 Mac OS 的Chrome 瀏覽器還是不允許自簽憑證,所以會看到這個 error: NET::ERR_CERT_INVALID
,如果是要長期使用的環境,會建議把憑證匯進瀏覽器的 憑證管理小精靈,允許這個憑證,詳情請參考我之前寫過的 vcenter 上傳失敗解法

但是這邊因為我太懶了只想快點看到畫面,所以我參考了這篇 No “Proceed Anyway” option on NET::ERR_CERT_INVALID in Chrome on MacOS ,解決方式如下:

1
2
3
4
* Right click, select inspect element
* click on console tab
* Copy paste sendCommand(SecurityInterstitialCommandId.CMD_PROCEED) press Enter
Boom! it should load the page :)


讚啦!直接可以看到跟 Ansible Tower 3.8.4 一樣的 Templates,連資料庫 restore 都不用做,因為資料庫的欄位和結構都是一樣的。

upload successful

今天的分享就到這裡,感謝收看。

♞ Reference

Automation Controller
How to uninstall Ansible Tower
Ansible Automation Platform 2.0 ea Installation Guide
Red Hat Ansible Tower Upgrade from 3.5 to 3.8 – when running setup.sh is not enough – or: I have made fire!
Upgrading an Existing Tower Installation
Backing Up and Restoring Tower
Centos7 SSL自簽憑證+APACHE+Selinux
vcenter 上傳失敗解法
No “Proceed Anyway” option on NET::ERR_CERT_INVALID in Chrome on MacOS