AnsibleTower自建研究3

自建研究-算成功吧,但是還沒目標的三台架構(2.3bundle版)

ZONGRU Li
19 min readDec 6, 2022

參考"Step by Step guide to install Ansible Tower"

先到RHAnsible網站(LINK):

LINK

目標是嘗試在AWS上面建立60天的試用版Platform

點選右上"FREE TRIAL"

有這些權限:

登入一般個人帳號:

然後轉跳畫面,並自動下載:

看起來抓的是更新的bundle版(離線安裝版)

上面網頁往下拉還有很多資源:

也有收到RH的信件通知:

這時候可以看到redhat網頁(LINK):

在前面網頁上"Next steps"區塊的第一個部分

其連結install,create and launch,Ansible Basics: Automation Technical Overview
Ansible’s platform components
activate automation analytics.

首先進到上面install的說明頁

後面因為有簡中看比較快,切成簡中

參考這頁有說明三台的資源大小(LINK):

先把機台搞出來,大概配置如下:

RHEL-8.6.0_HVM-20220503-x86_64–2-Hourly2-GP2

把剛剛下載的安裝包丟到controller機台上:

這是controller那台

然後就之前經驗,要先讓controller可以ssh到另外兩台

先把私鑰丟上Controller.ssh目錄內:

#因為權限太大,要記得改controller的私鑰權限:
chmod 400 ~/.ssh/id_rsa

然後再把公鑰丟到另外兩台(controller-dbhub)

controller-dbhub兩台都要有pub公鑰
#登到controller-db與hub機上執行:
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
兩台都做,這是其中一台畫面

此時透過controller機應該可以ssh連到另外兩台:

兩台都記得先登過,敲過yes

(如果有出現id_rsa too open,bad permission,就是前面私鑰權限要改400)

接著照著這份文件跑安裝:

LINK

首先我先解壓縮tar檔(這邊操作都在controller機台上):

#解壓縮安裝包:
sudo tar zxf ansible-automation-platform-setup-bundle-2.3-1.tar.gz
#切到解壓縮出來的目錄,然後編輯建置文件:
cd ansible-automation-platform-setup-bundle-2.3-1
ls
sudo vi inventory

原始的inventory檔案內容如下:

參考網頁文件解說:

所以依樣先到最近常搞得Jenkins Base Image那邊登入到上述registry

要先登入一般RH帳號,然後另外申請registry的帳密而來

上面帳密就填入適當的位置

另外可以發現網站文件上的Platform的安裝

其中網站文件上"inventory"文件比安裝包解壓出來的預設的精簡很多

可能是預設給的是其他各種安裝方式(非三台Platform)

所以我考慮後直接使用官網的範例來改,其範例是:

依據設定開通以下防火牆:

建置設定檔改好如下:

改好"inventory"檔案後就可以建置,但是執行上還可以餵很多參數,參考如下:

甚至也有透過bundle安裝包,但是線上安裝的指令:

其他參考變數:

一些範例:

我就先用原始的

#如上直接執行安裝建置:
sudo ./setup.sh

文件下面有特別提醒到一定要開443:

安裝過程有問:

突然忘了也要自己連自己(因為我發動安裝的就是controller機台本身)

所以ctrl+c結束後

把公鑰也丟上controller機上

#controller機上一樣執行:
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

然後嘗試自己連自己:

然後exit離開

繼續重新跑建置:

才發覺是連另外兩台出問題:

看起來是透過root去連

所以先找到root的.ssh目錄是在/root/.ssh

三台的公鑰都要搞一遍

#root的公鑰設置:
sudo su
cat /home/ec2-user/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
三台都要

另外controller機還要放私鑰:

然後controller機要用root去連三台(包含自己):

接著繼續重來建置指令:

接著錯誤:

controller-db不給連

找到一篇RH的貼文跟我卡同一個步驟的

LINK

可能是沒有更新套件的問題

#嘗試三台更新套件,以致於沒有順利安裝DB:
sudo yum update -y

最後嘗試還是失敗後

我想到他可能就是沒有一起協助安裝Controller-DB這回事

所以我嘗試

也就是猜測,如果要填上面pg_host,pg_port就代表

我們要事先自行準備好建置好的DB來當controller-db

目前空掉上面pg_host,pg_port後再次嘗試執行建置

我先另外找到RHEL8安裝PostgreSQL文件(LINK):

重新執行安裝跑了20分鐘後又看到:

看樣子真的DB要自己先裝起來

所以我在hub機上面執行:

#在hub機上面執行PostgreSQL安裝:
sudo yum module install postgresql:13/server -y

#初始化數據集群:
sudo postgresql-setup --initdb

#啟動postgresql:
sudo systemctl start postgresql.service

#啟動postgresql自動重啟:
sudo systemctl enable postgresql.service
這是hub機
這是hub機

簡單確認一下:

這是hub機
這是hub機,sudo yum install net-tools -y,然後用netstat工具看看5432有沒有咬
#然後hub的DB還要設定帳號那些:
sudo su - postgres
(此時會變成postgres身分)

#進入psql console:
psql
#在psql console內執行:
#查看DB連線資訊:
\conninfo

#在psql console內執行:
#建立使用者"mydbuser",並給他密碼"mypasswd"
CREATE USER mydbuser WITH PASSWORD 'mypasswd' CREATEROLE CREATEDB;
hub應該這樣就好了,DB有預設的postgres,新的使用者mydbuser,密碼mypasswd

接著controller機重新執行建置

但是這邊要先調整連hub的DB的設定:

重新跑建置:

後來還是看到一樣:

這時候確認telnet也不通

在hub機上調整postgres的DB的postgres身分的密碼

#在有切換身分:
sudo su - postgres

#用psql console的指令修改預設帳號的密碼:
psql -c "alter user postgres with password 'StrongDBPassword'"
#嘗試編輯hub的DB的相關設定:
sudo vi /var/lib/pgsql/data/postgresql.conf
(這時候會要求輸入預設帳號postgres,的密碼,敲入上方的StrongDBPassword)

後來有發現hub自己也連不上DB

參考:

LINK
#調整登入設定:
sudo vi /var/lib/pgsql/data/pg_hba.conf
調整這兩個
#hub執行DB重啟:
sudo systemctl restart postgresql.service
#再次嘗試hub登入自己的DB:
psql -U <dbuser> -h <serverip> -p 5432 <dbname>

#這邊就是:
psql -U mydbuser -h 127.0.0.1 -d postgres
(然後敲密碼:mypasswd)

#這邊在psql console裡面順便建立db-->mydatabase:
CREATE DATABASE mydatabase

回到controller機修改設定:

再次執行重建:

發現還要修改"postgresql.conf"參考(LINK):

#該檔案在:
sudo vi /var/lib/pgsql/data/postgresql.conf
改這個

改完一樣要重啟服務:

#hub執行DB重啟:
sudo systemctl restart postgresql.service

controller機用telnet看,看起來是可以連了:

直接在次執行建置:

終於錯不一樣的

爬文要再調整hub上pg_hba.conf

#hub上調整pg_hba.conf:
sudo vi /var/lib/pgsql/data/pg_hba.conf

----在pg_hba.conf裡面新增----
#針對DB加入自己指定的連接方式:
# Accept from trusted subnet (Recommended setting)
host all all 192.168.18.0/24 md5

#調完重啟載入設定:
sudo systemctl restart postgresql.service
改好重啟服務

然後Controller重新跑建置:

突然驚覺Controller機台本身的DB問題

看起來Ansible Tower有幫忙在Controller機上建postgresql

所以修改Controller的pg_hba.conf

#修改Controller上的pg_hba.conf的pg_hba.conf:
sudo vi /var/lib/pgsql/data/pg_hba.conf

#調完重啟載入設定:
sudo systemctl restart postgresql.service

再次跑建置:

這時候Controller機上的/var/lib/pgsql/data/pg_hba.conf設定檔變回去了

我後來發現hub機上的DB前面建立的DB不見了

#在hub機上進入psql console:
psql -U mydbuser -h 127.0.0.1 -d postgres
(密碼:mypasswd)

#psql console模式下,查看DB,沒找到前面建立的mydatabase:
\l

hub上DB重建:

#再修改Controller上的pg_hba.conf的pg_hba.conf:
sudo vi /var/lib/pgsql/data/pg_hba.conf

最終如上N次嘗試後得到:

這個錯誤也已經洗老遠去了

這時候在Controller機上curl本機80得當回應:

透過瀏覽器:

最後這邊簡單紀錄一下,官方文件其實很多地方沒有寫得很清楚

首先以目標三台架構的Platform來說:

  1. Controller
  2. Controller-DB
  3. hub(兼hub DB)

三台都要先弄好ssh連線,預設建置使用帳號是root:

#登到三台機上執行事先準備好公私鑰,把公鑰轉給被建置三台機台上的root的ssh目錄:
cat /{看放哪裡}/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

#建置機,我這邊直接用Controller機台當範例,執行建置都用sudo,所以還要放私鑰,記得改400:
cp /{看放哪裡}/id_rsa /root/.ssh/
sudo chmod 400 /root/.ssh/id_rsa

然後三台最好還是更新

#嘗試三台更新套件,以致於沒有順利安裝DB:
sudo yum update -y

我目前實驗下來結論是

Controller-DB要自己事先建置postgresql

我後來實驗結果來看,如果移除Controller-DB的設定,下面區塊放空:

這種情況下安裝包才會自主在Controller機台上自行建立postgresql

並且每次重新執行"setup.sh"建置,這個Controller機台上自行建立postgresql

都會被重置(如上我的設定檔改了根本沒屁用....)

然後hub機台因為要兼hubDB

這個hubDB要事先建置postgresql:

#在hub機上面執行PostgreSQL安裝:
sudo yum module install postgresql:13/server -y

#初始化數據集群:
sudo postgresql-setup --initdb

#啟動postgresql:
sudo systemctl start postgresql.service

#啟動postgresql自動重啟:
sudo systemctl enable postgresql.service

並且調整兩個設定檔(改完要重啟postgresql服務來生效):

  1. /var/lib/pgsql/data/pg_hba.conf
  2. /var/lib/pgsql/data/postgresql.conf

pg_hba.conf部分內容改為如下:

postgresql.conf部分內容調整為如下:

改完上述任意設定檔要重啟服務:

#重啟postgresql:
sudo systemctl restart postgresql.service

並且可能要自行在hubDB上自建帳號與DB,來呼應上面pg_hba.conf設定:

#安裝完postgres會有一個帳號叫postgres可以用,然後hub的DB還要設定帳號那些:
sudo su - postgres
(此時會變成postgres身分)

#進入psql console:
psql

#查看DB連線資訊:
\conninfo

#在psql console內執行:
#建立使用者"mydbuser",並給他密碼"mypasswd"
CREATE USER mydbuser WITH PASSWORD 'mypasswd' CREATEROLE CREATEDB;

#然後離開psql console:
\q

#上面建好DB的帳號後,改用這個帳號登入DB
#再次嘗試在hub用新的DB帳號登入自己預設DB:
psql -U <dbuser> -h <serverip> -p 5432 <dbname>

#這邊就是:
psql -U mydbuser -h 127.0.0.1 -d postgres
(然後敲密碼:mypasswd)

#這邊在psql console裡面順便建立db-->mydatabase:
CREATE DATABASE mydatabase

#可以透過指令查看現有DB:
\l
##############後來有發現這個另建DB也就是mydatabase可能在服務重啟後會消失!?#####待確認為什麼不見


#有需要的話也可以改預設DB帳號的密碼:
#額外在有切換身分:
sudo su - postgres

#用psql console的指令修改預設帳號的密碼:
psql -c "alter user postgres with password 'StrongDBPassword'"

如上這大概就是hub要先搞定好的部分

然後我這次等於放棄了Controller-DB機台

不然看起來應該也是要事先建postgres

所以最後問題就是當前的inventory內容:

然後還有之後建置三台對應的防火牆開通:

controller:22/80/443

hub:22/80/443/5432

controller-db:5432(不過以我AWS實驗上來說還是要多開22)

上面我只改掉registry的帳密,其他就沒動

以上AWS這三台我會直接銷毀,改天試試建理想的三台架構

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet