EN
中
簡
日
Ansible
Ansible 是一個可以自動化建立硬體架構環境相關,也就是各位也許有聽過的 Infrastructure as code。
以往要透過很多的 shell script 搭配 ssh 才能達到的功能,網路上都已經有很多的 role/module/playbook 已經可以達到,且只要統一操作 ansible host 就可以同時操作多台機器。
指令: yum -y install ansible
yum -y install ansible
如上圖,透過 yum 很方便就能安裝了。
如上圖,在剛安裝好 ansible 的時候,會在 /etc/ansible 下產生一些範例的設定檔,為了怕改壞,我們先備份一下 hosts 這個檔案。
指令: cp hosts hosts-bak
cp hosts hosts-bak
接著我們要在 hosts 這個檔案中設定一台(或多台)其他機器的資訊,後續操作時可以直接透過這個檔內定義的 domain/ip,不用再一台一台 ssh 進去。
在此我們只會設定一台接著要安裝 Docker 的機器其 IP 資訊如下:
為了讓 ansible 所在的機器能連線到其他機器,我們必須先建立一組 ssh key 方便之後登入用。
ssh-keygen -t rsa
如上圖,指令輸入後就會在 /root/.ssh 建立一組 private/public key。
ssh-copy-id root@192.168.2.223
如上圖,複製好 key 之後,即可直接透過 ssh 指令連線至 [docker] ,不用再輸入該帳號登入的密碼。
在建好 key 之後可以測試一下 ansible 是否能正常操作 client,作一個簡單的 ping 就好:指令: ansible docker -m ping
ansible docker -m ping
看到上圖的訊息就代表成功了!
在成功設置 ansible 之後我們想透過它在 client 上安裝 docker,可以透過 playbook 的機制處理,首先定義 docker.yml 如下:
如上圖,主要是分別透過幾個步驟:
每個步驟都可以給定 name,方便在執行時知道目前到哪個步驟了,或是設定在 when 的條件成立時才執行,比方說如果 Docker 已安裝了,就不會再重裝一次,這也是 Ansible 很強調的 idempotence (不管執行幾次 playbook 都會是最初所定義的狀態)。
設定好 playbook 之後就可以透過 ansible 來執行看看了!指令: ansible-playbook -s docker.yml
ansible-playbook -s docker.yml
如上圖,ansible 會依 playbook 中定義的 task 依序執行,再來可以去 [docker] 這台機器上看看是不是真的有裝好 docker/docker-compose
看來是有正確安裝!
以上,其實 Ansible 的作用不僅僅於此,還有更多強大的功能等著各位客倌去使用,自動化的日子不遠矣!
二、安裝 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 方便之後登入用。
指令:
ssh-keygen -t rsa
如上圖,指令輸入後就會在 /root/.ssh 建立一組 private/public 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 如下:
如上圖,主要是分別透過幾個步驟:
每個步驟都可以給定 name,方便在執行時知道目前到哪個步驟了,或是設定在 when 的條件成立時才執行,比方說如果 Docker 已安裝了,就不會再重裝一次,這也是 Ansible 很強調的 idempotence (不管執行幾次 playbook 都會是最初所定義的狀態)。
執行
設定好 playbook 之後就可以透過 ansible 來執行看看了!
指令:
ansible-playbook -s docker.yml
如上圖,ansible 會依 playbook 中定義的 task 依序執行,
再來可以去 [docker] 這台機器上看看是不是真的有裝好 docker/docker-compose
看來是有正確安裝!
以上,其實 Ansible 的作用不僅僅於此,還有更多強大的功能等著各位客倌去使用,自動化的日子不遠矣!