AnsibleTower自建研究4

自建研究-整理並實際建置Platform(Controller,Controller-DB,hub(兼hub DB))

ZONGRU Li
17 min readDec 8, 2022

整理前一篇研究

嘗試建出Controller,Controller-DB,hub(含hub-DB)的三台架構

參考安裝文件(LINK):

LINK

我先整理出安裝的流程步驟:

1.開出三台RHEL8機台

2.設置防火牆

3.做ssh sync設置(以Controller機當建置主控機)

4.三台進行套建update

5.hub機上安裝Postgres DB與設置

6.Controller-DB機安裝Postgres DB與設置

7.放置安裝包到Controller

8.編輯安裝檔"inventory"

9.執行建置

1.開出三台RHEL8機台:

這邊AWS上模擬選則RHEL-8.6.0_HVM-20220503-x86_64–2-Hourly2-GP2

資源大小挑選可以看文件前面(LINK):

Controller部分
hub部分

Controller : 挑選t3.xlarge(4c16g)

Controller-DB : 挑選t3.xlarge(4c16g)

hub(含hub-DB) : 挑選t2.large(2c8g)

實際規格

2.設置防火牆:

這部分可以參考文件(LINK):

預計會開得有:

Controller:22/80/443

Controller

Controller-DB:5432(實際建置上還是會有22那些)

Controller-DB

hub:22/80/443/5432

hub

3.做ssh sync設置(以Controller機當建置主控機):

初步先放檔:

#Controller執行(發動建置設置),先切root身分:
sudo su
cp /tmp/id_rsa /root/.ssh/
chmod 400 /root/.ssh/id_rsa

#Controller再執行(被建置設置),先切root身分:
sudo su
cp /tmp/id_rsa.pub /root/.ssh/
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

#Controller嘗試ssh連自己:
ssh root@{Controller IP}
#Controller-DB機與hub機執行(被建置設置),先切root身分:
sudo su
cp /tmp/id_rsa.pub /root/.ssh/
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

#然後嘗試由Controller機做ssh連線確認沒問題:
ssh root@{Controller-DB IP}
ssh root@{hub IP}

4.三台進行套建update:

#三台進行套建更新:
sudo yum update -y
三台按下去跑就對了!

跑完畫面大概會看到:

5.hub機上安裝Postgres DB與設置

參考網路上找到的RHEL8安裝PostgreSQL的文件(LINK):

這邊可以注意到Tower建置文建有提到目前搭配的DB版本是PostgreSQL 13

LINK

歸結前面經驗,要先在Controller-DB機台上與hub機上分別自建Postgres DB

#在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機安裝DB:

接著考量到後面建置inventory檔,要事先針對這兩個DB做一些設置

這部分是在Tower建置文件上完全沒有提到的Postgres相關設置

前篇筆記過程查到的資料,有點像是DB本身的連線權限設置(誰可以連)

相關參考資料(LINK1,LINK2)

hub DB/var/lib/pgsql/data/pg_hba.conf部分內容要改為:

#hub機調整pg_hba.conf連線DB的允許設定:
sudo vi /var/lib/pgsql/data/pg_hba.conf

#hub機調整postgresql.conf設定:
sudo vi /var/lib/pgsql/data/postgresql.conf

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

hub機調整pg_hba.conf連線DB的允許設定:

hub機

hub機上pg_hba.conf部分內容調整:

理論上上面設置應該底下那個all那條設到同個subnet就好

但是我機台看起來都是不一樣網段,所以乾脆都加

hub機調整postgresql.conf設定:

hub機

hub機執行DB服務重啟:

#然後hub的DB還要設定帳號那些:
sudo su - postgres
(此時會變成postgres身分)

#進入psql console:
psql

#(在psql console)用psql console的指令修改預設帳號的密碼(千萬記得最後要分號;):
alter user postgres with password 'StrongDBPassword';
#或是直接在(在psql console之外):
psql -c "alter user postgres with password 'StrongDBPassword';"

#(在psql console)查看DB連線資訊:
\conninfo

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

#離開psql console:
\q
#透過上面建立的帳號mydbuser(密碼是mypasswd)進去建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;

#(在psql console)查看目前既有DB清單:
\l

#(在psql console)離開psql console:
\q

#嘗試用新帳號登入到新DB:
psql -U mydbuser -h 127.0.0.1 -d mydatabase
(一樣要敲密碼mypasswd)

6.Controller-DB機安裝Postgres DB與設置:

參考到預設後面會用到的建置檔,inventory內容

大概這邊只有建的db與帳號會跟上面不太一樣

Controller-DB機一樣建置Postgres DB:

#在Controller-DB機機上面執行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一樣

Controller-DB機DB設定檔調整:

#Controller-DB機調整pg_hba.conf連線DB的允許設定:
sudo vi /var/lib/pgsql/data/pg_hba.conf

#Controller-DB機調整postgresql.conf設定:
sudo vi /var/lib/pgsql/data/postgresql.conf

#Controller-DB機執行DB服務重啟:
sudo systemctl restart postgresql.service
可以看到我的DB命名是inventory檔上預設的awx

接著Controller機一樣做一個DB調整(根據inventoryDB與帳號名稱):

#然後hub的DB還要設定帳號那些:
sudo su - postgres
(此時會變成postgres身分)

#進入psql console:
psql

#(在psql console)用psql console的指令修改預設帳號的密碼(千萬記得最後要分號;):
alter user postgres with password 'StrongDBPassword';
#或是直接在(在psql console之外):
psql -c "alter user postgres with password 'StrongDBPassword';"

#(在psql console)查看DB連線資訊:
\conninfo

#(在psql console)建立使用者"mydbuser",並給他密碼"mypasswd"
CREATE USER awx WITH PASSWORD 'mypasswd' CREATEROLE CREATEDB;

#離開psql console:
\q
#透過上面建立的帳號awx(密碼是mypasswd)進去建DB(也叫awx),首先用新帳號登到既有DB:
psql -U <dbuser> -h <serverip> -p 5432 <dbname>
#也就是:
psql -U awx -h 127.0.0.1 -d postgres
(然後敲密碼:mypasswd)

#(在psql console)裡面順便建立db-->mydatabase:
CREATE DATABASE awx;

#(在psql console)查看目前既有DB清單:
\l

#(在psql console)離開psql console:
\q

#嘗試用新帳號登入到新DB:
psql -U awx -h 127.0.0.1 -d awx
(一樣要敲密碼mypasswd)

#(在psql console)離開psql console:
\q

7.放置安裝包到Controller機:

這邊內容我貼前一篇的圖,我怎麼拿到安裝包的:

先到RHAnsible網站(LINK):

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

點選右上"FREE TRIAL"

有這些權限:

會要求登入一般個人帳號:

登入後自動下載安裝包:

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

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

也有收到RH的信件通知:

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

以上都是上一篇blog的內容,總之就是拿到Ansible Towerbundle安裝包

其他細節可以看上一篇

我一樣把安裝包丟上Controller機,以Controller機當作建置發動機

#然後搬到root根目錄下來用:
sudo su
cd
mv /tmp/ansible-automation-platform-setup-bundle-2.3-1.tar.gz .
pwd
ls
#解壓縮:
tar zxf ansible-automation-platform-setup-bundle-2.3-1.tar.gz
#進到解出來的目錄內:
cd ansible-automation-platform-setup-bundle-2.3-1
ls

原始的inventory建置設定檔的內容可以看前篇的備份

我這邊直接看建置文建大改(真的跟預設檔差很多)

8.編輯安裝檔”inventory”:

參考建置文件(LINK):

這邊都直接root操作(方便):

我順便學到可以透過vi編輯工具移除檔案全內容方式:

#進到冒號設置打以下:
:1,$d

Enter以後就全空了:

貼入官方範例來改:

官方範例

9.執行建置:

#在Controller機root帳號下並且在安裝包含有setup.sh目錄下執行:
./setup.sh

這時候發現Controller-DB機又發生怪事:

Controller-DB機上嘗試登入前面自己建的DB都說密碼失敗

但是用管理帳號進去看,DB都還在:

然後看看設定檔

#Controller-DB機的pg_hba.conf連線DB的允許設定:
sudo vi /var/lib/pgsql/data/pg_hba.conf

我整個驚呆了,看起來建置過程,Controller-DB的設定都被重置了:

Controller-DB機上的/var/lib/pgsql/data/pg_hba.conf

另一個設定檔內容也跟上面不一樣了

#Controller-DB機的postgresql.conf設定:
sudo vi /var/lib/pgsql/data/postgresql.conf
排版跟前面裝的完全不一樣....

也就是說可以大膽猜測

Controller-DB機的DB或DB User就是不用自己建.....這坑真是...

但是理論上他應該還是要有身分去建要用的DBDB-User

所以甚至有可能整個Postgres都會自動安裝

但是我這邊沒得試了,建置腳本跑一半才失敗

所以我暫時先移除原本要用的DB(awx)DB User(awx)

#Controller-DB機我這邊嘗試移除DB與剛剛建立的awx這個db user:
sudo su - postgres

#進到psql console模式:
psql

#(在psql console模式)移除DB:
DROP DATABASE awx;

#(在psql console模式)移除DB User:
dropuser --if-exists awx;
Controller-DB機

不過可以注意到上面移除DB User沒回應,有可能沒成功!?

然後重跑件置:

如上又看到Controller機連不上Controller-DB機上的DB,密碼有問題

這時候去Controller-DB機上確認

沒錯,awx這個DB User還在(或可能建置的時候又自己建立)

但是密碼被改掉了:

#所以手動進去調整他的密碼:
sudo su - postgres

#進到psql console:
psql

#(在psql console模式下)調整awx這個DB User的密碼:
alter user awx with password 'mypasswd';

#(在psql console模式下)離開console模式:
\q

#嘗試用awx這個User登入既存DB:
psql -U awx -h 127.0.0.1 -d postgres
(敲密碼mypasswd)
\q

#嘗試用awx這個User登入剛剛移除的db->awx:
psql -U awx -h 127.0.0.1 -d awx
(敲密碼mypasswd)
\q

再繼續回Controller機重新建置,大約半小時後看到以下畫面:

上面紅色錯誤已經洗到老遠了,但是應該是可以忽略的錯誤

這時候確定可以到Controller機的Web

一樣做到這邊,這三台直接移除

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet