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

Ansible 初體驗 (安裝 Docker)

Ansible 初體驗 (安裝 Docker)

tags: Ansible



Ansible 初體驗 (安裝 Docker)







一、Ansible 是什麼?




Ansible 是一個可以自動化建立硬體架構環境相關,也就是各位也許有聽過的 Infrastructure as code。




以往要透過很多的 shell script 搭配 ssh 才能達到的功能,網路上都已經有很多的 role/module/playbook 已經可以達到,且只要統一操作 ansible host 就可以同時操作多台機器。








 

二、安裝 Ansible

利用 yum 安裝 ansible

指令: yum -y install ansible

如上圖,透過 yum 很方便就能安裝了。

設定 /etc/ansible/hosts

如上圖,在剛安裝好 ansible 的時候,會在 /etc/ansible 下產生一些範例的設定檔,為了怕改壞,我們先備份一下 hosts 這個檔案。

指令: cp hosts hosts-bak

接著我們要在 hosts 這個檔案中設定一台(或多台)其他機器的資訊,後續操作時可以直接透過這個檔內定義的 domain/ip,不用再一台一台 ssh 進去。

在此我們只會設定一台接著要安裝 Docker 的機器其 IP 資訊如下:

建立 ssh key

為了讓 ansible 所在的機器能連線到其他機器,
我們必須先建立一組 ssh key 方便之後登入用。

  1. 建立 key
    指令: ssh-keygen -t rsa

     

    如上圖,指令輸入後就會在 /root/.ssh 建立一組 private/public key。

  2. 將 key 複製到要操作的機器上
    指令: ssh-copy-id root@192.168.2.223

     

    如上圖,複製好 key 之後,即可直接透過 ssh 指令連線至 [docker] ,不用再輸入該帳號登入的密碼。

測試

在建好 key 之後可以測試一下 ansible 是否能正常操作 client,作一個簡單的 ping 就好:
指令: ansible docker -m ping

看到上圖的訊息就代表成功了!

三、利用 Playbook 安裝 docker/docker-compose

建立 playbook

在成功設置 ansible 之後我們想透過它在 client 上安裝 docker,可以透過 playbook 的機制處理,首先定義 docker.yml 如下:

如上圖,主要是分別透過幾個步驟:

  1. 確定所有的 package 都是最新的
  2. 檢查 Docker 是否已經安裝
  3. 下載安裝 Docker 的 shell
  4. 安裝 Docker
  5. 移除安裝 Docker 的 shell
  6. 在 systemd 上啟用 docker.service
  7. 啟動 Docker daemon
  8. 檢查 docker-compose 是否已安裝
  9. 下載並安裝 docker-compose

每個步驟都可以給定 name,方便在執行時知道目前到哪個步驟了,或是設定在 when 的條件成立時才執行,比方說如果 Docker 已安裝了,就不會再重裝一次,這也是 Ansible 很強調的 idempotence (不管執行幾次 playbook 都會是最初所定義的狀態)。

執行

設定好 playbook 之後就可以透過 ansible 來執行看看了!
指令: ansible-playbook -s docker.yml

如上圖,ansible 會依 playbook 中定義的 task 依序執行,
再來可以去 [docker] 這台機器上看看是不是真的有裝好 docker/docker-compose

看來是有正確安裝!

以上,其實 Ansible 的作用不僅僅於此,還有更多強大的功能等著各位客倌去使用,自動化的日子不遠矣!

The frame attempting navigation is sandboxed, and ...
Docker registry 刪除特定 Tag

相關文章