AnsibleTower自建研究3
參考"Step by Step guide to install Ansible Tower"
先到RH的Ansible網站(LINK):
目標是嘗試在AWS上面建立60天的試用版Platform
點選右上"FREE TRIAL"
有這些權限:
登入一般個人帳號:
然後轉跳畫面,並自動下載:
看起來抓的是更新的bundle版(離線安裝版)
上面網頁往下拉還有很多資源:
也有收到RH的信件通知:
這時候可以看到redhat網頁(LINK):
在前面網頁上"Next steps"區塊的第一個部分
首先進到上面install的說明頁
後面因為有簡中看比較快,切成簡中
參考這頁有說明三台的資源大小(LINK):
先把機台搞出來,大概配置如下:
把剛剛下載的安裝包丟到controller機台上:
然後就之前經驗,要先讓controller可以ssh到另外兩台
先把私鑰丟上Controller的.ssh目錄內:
#因為權限太大,要記得改controller的私鑰權限:
chmod 400 ~/.ssh/id_rsa
然後再把公鑰丟到另外兩台(controller-db跟hub)
#登到controller-db與hub機上執行:
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
此時透過controller機應該可以ssh連到另外兩台:
(如果有出現id_rsa too open,bad permission,就是前面私鑰權限要改400)
接著照著這份文件跑安裝:
首先我先解壓縮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
上面帳密就填入適當的位置
另外可以發現網站文件上的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去連三台(包含自己):
接著繼續重來建置指令:
接著錯誤:
找到一篇RH的貼文跟我卡同一個步驟的
可能是沒有更新套件的問題
#嘗試三台更新套件,以致於沒有順利安裝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的DB還要設定帳號那些:
sudo su - postgres
(此時會變成postgres身分)
#進入psql console:
psql
#在psql console內執行:
#查看DB連線資訊:
\conninfo
#在psql console內執行:
#建立使用者"mydbuser",並給他密碼"mypasswd"
CREATE USER mydbuser WITH PASSWORD 'mypasswd' CREATEROLE CREATEDB;
接著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
參考:
#調整登入設定:
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來說:
- Controller
- Controller-DB
- 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機台因為要兼hub的DB
這個hub的DB要事先建置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服務來生效):
- /var/lib/pgsql/data/pg_hba.conf
- /var/lib/pgsql/data/postgresql.conf
pg_hba.conf部分內容改為如下:
postgresql.conf部分內容調整為如下:
改完上述任意設定檔要重啟服務:
#重啟postgresql:
sudo systemctl restart postgresql.service
並且可能要自行在hub的DB上自建帳號與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這三台我會直接銷毀,改天試試建理想的三台架構