GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
字體大小: +
4 分鐘閱讀時間 (737 個字)

Ansible #10 - Ad-Hoc 指令[3]

shutterstock_198004562
  • 還記得上一篇,我們針對 3個 VM(2 web/ 1db) 作了校時嗎? 這一篇該針對它們作一些基本的安裝了
    • 如果不記得它們的 hosts 檔長怎樣的可以看下圖:
      • 我相信前一篇有說明過了,不過這個 hosts 是所謂的 inventory,記錄著所有要被 ansible 執行的機器資訊
      • group 則是用方括號括起來的部份,下面可以放 IP 或是 Domain name
      • 再來就是 [multi:children],這個比較像是 group of group 的概念
      • 最後 [multi:vars] 的部份就是設定一些需要的參數像是:
        • ansible_ssh_user,預設用 Vagrant 開出來會建立一個 vagrant user
        • ansible_ssh_private_key,這也算是跟 Vagrant VM 溝通的一個小撇步,你會發現它的 private key 是存在本機的
  • 好的,那今天就要針對這幾台做一些手腳了!
    • 首先是 web 的部份
      • 我們打算跑一個 Django(也是寫網頁的一個框架) 的 Web Application(搭配 MySQL)
      • CentOS 的 yum repository 預設沒有這個東西,但我們可以透過 python 來安裝,指令如下:
          ansible app -b -m yum -a "name=MySQL-python state=present" -i hosts -u vagrant
          ansible app -b -m yum -a "name=python-setuptools state=present" -i hosts -u vagrant
          ansible app -b -m easy_install -a "name=django<2 state=present" -i hosts -u vagrant
        • 可以留意到我們裝了 MySQL-python、python-setuptools 及 django
        • 上面的全部都是 Ad-hoc 指令
        • -b 代表 sudoer,別忘了
        • 結果如下圖:
      • 執行完成之後,可以檢查一下是不是有正確安裝 Django 了,指令如下:
          ansible app -a "python -c 'import django; print django.get_version()'" -i hosts -u vagrant
      • 特別留意,本篇所有的 Ad-hoc 指令其實,都可以用 playbook 來撰寫,等日後談到 playbook 時,各位可以再回來思考一下如何改成 playbook
    • 接著是 db 的部份
      • 首先要安裝 mariaDB,指令如下:
          ansible db -b -m yum -a "name=mariadb-server state=present" -i hosts -u vagrant
          ansible db -b -m service -a "name=mariadb state=started enabled=yes" -i hosts -u vagrant
        • 如上,我們其實就是安裝了 mariaDB,並設定它的 service 是 enabled,這樣下次開機就會自動開啟了
      • 只是裝 DB 還不夠,還必須開通防火牆,指令:
          ansible db -b -a "iptables -F" -i hosts -u vagrant
          ansible db -b -a "iptables -A INPUT -s 192.168.60.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT" -i hosts -u vagrant
      • 除此之外,還要初始化一些設定,讓 django 的 application 可以連上 mariadb
        • 所幸 Ansible 處理 mariadb 跟 處理 mysql 是一樣的,指令如下:
          ansible db -b -m yum -a "name=MySQL-python state=present" -i hosts -u vagrant
          ansible db -b -m mysql_user -a "name=django host=% password=12345 priv=*.*:ALL state=present"  -i hosts -u vagrant
      • 這樣一切都就緒了,會寫 python django 的人,可以開始開發,並讓資料順利存入 DB 了
      • 各位應該有發現我們從頭到尾都沒有登入任何一台 VM,但仍然完成了不少工作
  • 後面幾篇我們將從其他的角度使用 Ansible 來管理這些 VM,像是
    • 使用者/使用者群組的管理
    • 檔案/目錄的操作
    • 背景程式的建立與監控
    • Fire and forget 的任務
    • 檢查日誌
    • 管理排程
  • 以上,敬請期待,內容會不少…
×
Stay Informed

When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.

Ansible #11 - Ad-Hoc 指令[4]
Ansible #9 - Ad-Hoc 指令[2]

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
2025年12月14日, 星期日

Captcha 圖像