Hello World 系列 - Ansible (上)
Ansible 初次見面
什麼是Ansible, 如何入門, 厲害在哪 ?
相信各位運維兄弟對下面這句一定很熟了
for i in $(cat serverlist); do ssh yunwei@$i xxx; done
如果你曾經使用上面指令幫你解決一些問題, Ansible就是專門用來處理這樣指令;
把批次處理發揮的淋漓盡致的工具
前置作業:
用 fqdn/hostname 和 ssh-key來登入設備
這部份不是必須, 但是之後都會以這個套路來做演示, 所以...
不照做就是無法進行下一步 (╯-╰)/
- 使用 fqdn/hostname 登入設備
請編輯~/.ssh/config
把你要登入的設備像這樣填入
Host LAB_WEB1
hostname 192.168.40.43
user root
port 22
- 使用 ssh-key 登入設備
首先要產生公鑰ssh-keygen -P "" -C yunwei
-P
: 口令, 強制要的. 給個空白
-C
: 公鑰註解, 這個到時候會放到對面機器的. 不取的話就會用你的hostname, 還是取一下吧
輸入後會看到一張滿漂亮的RSA 2048 ASCII圖就完成了
接下來就是把公鑰丟過去
ssh-copy-id LAB_WEB1
之後就可以使用 ssh LAB_WEB1 來登入設備了
這邊之所以可以下LAB_WEB1是因為我有做第一步哦(fqdn/hostname), 同學請依序執行.
Hello World
首先依照官方安裝指示 挑一個喜歡的裝上; 安裝好後, 你只要先關心兩個檔案
安裝版本選擇2.5以上, 示範中有些模塊比較新.
/etc/ansible/ansible.cfg
=> 這是他的全局配置文件, 在你有單獨配置文件之前, 用這個就好了
/etc/ansible/hosts
=> 默認的Inventory檔案
現在編輯上面提到的hosts, 加入你們前面增加的設備, 以我的來看就是這樣
清單裡面有設備, 就可以開始我們第一個指令了.
ansible LAB_WEB1 -m ping
現在應該可以看到成功響應了
批次進行
要增加更多的hosts, 請一樣先進行前置作業; 因為公鑰已經有了, 所以只要copy過去遠端就可以了.
ssh-copy-id LAB_WEB2
ssh-copy-id LAB_MASTER
現在, 在你的Inventory(/etc/ansible/hosts)裡面填上新加的設備
就可以用上述的方式來呼叫這些設備了
分組進行
當然也可以分組來管理任務, 一樣修改你的Inventory
這時候就可以用組別來呼叫了
換個動作執行
ansible 的指令分解釋這樣: ansible <host> -m <module>
所以上面的ping
就是其中一個模塊; ansible中可用的模塊可多了
這邊示範 shell
模塊
每個模塊的有個別的解釋文檔哦, 比如這個 shell - Execute commands in nodes
帶變量執行
強大的武器之一, 請在Inventory裡面這樣編輯
然後就可以執行
ansible還提供一個厲害的功能facts
可以自行蒐集主機資訊, 當成變數使用
Hello world 尾聲
到了尾聲, 加映如果有同學就是覺得阿我就是不想用ssh-key阿, 麻煩死了
也可以啦其實.. 首先編輯Inventory
然後下面兩個步驟要做
- ansible要用密碼來登入的話, 請先安裝
sshpass
- 去設定檔把ssh key檢查改成False; 它原本是註解的, 把它拿掉
這樣就可以啦~
好孩子還是不要用這種阿~
下一個章節會帶大家使用劇本(playbook)哦~ 再見!