Ansible是一個系列文章,我會盡量以通俗易懂、诙諧幽默的總結方式給大家呈現這些枯燥的知識點,讓學習變的有趣一些。
Ansible系列博文直達連結:Ansible入門系列
前言
通過前面的文章,大家基本上也都知道了Ansible的基本使用了,但是閱讀的過程中,大家會發現我有使用以下兩種方式來玩這個Ansible。
- 通過
這樣的方式來使用;ansible server1 -m ping
- 通過
這樣的方式來使用。ansible-playbook shellDemo.yaml
這兩種方式有什麼差別的呢?第一種方式是直接在指令行輸入整個指令,簡單明了;而第二種方式則需要按照yaml文法來編寫playbook劇本,這樣的功能就更強大了;就好比我們可以在Linux系統中直接運作Shell指令,也可以編寫Shell腳本一樣,Shell腳本的功能則更強大。
對于第一種方式,我們也稱之為Ad-Hoc指令,這篇文章我就重點講講如何使用Ad-Hoc指令;而第二種方式則稱為劇本模式,将在下一篇文章中重點總結!
執行指令
雖然Ad-Hoc指令的功能沒有playbook劇本那樣強大,但是也足以滿足我們工作中的很多場景。在Ansible中指令都是并發執行的,我們可以針對目标主機執行任何指令。預設的并發數目由
ansible.cfg
中的
forks
值來控制。當然了,我們也可以在運作Ansible指令的時候通過
-f
指定并發數。通過
ansible -h
指令就可以列出所有的指令參數,下面列舉了常用的一些參數。
-
,-v
:輸出詳細執行資訊,--verbose
可以得到執行過程中的所有資訊;-vvv
-
,-i INVENTORY
,--inventory=INVENTORY
:指定--inventory-file=INVENTORY
檔案,預設使用inventory
;/etc/ansible/hosts
-
,-f FORKS
:執行時并發的線程個數,預設為5;--forks=FORKS
-
:指定-m MODULE_NAME
,預設為module
子產品;command
-
:指定-a MODULE_ARGS
的參數;module
-
:精簡輸出内容;-o
-
:列出主機清單,并不會執行其他操作。--list-hosts
知道了這些選項,接下來我們就通過一些實際的指令操作來熟悉和了解Ansible Ad-Hoc。
ping子產品
ping
子產品是我們經常使用的一個子產品,我們經常會這樣使用:
ansible server1 -m ping -o
輸出内容如下:
192.168.1.3 | SUCCESS => {"changed": false,"ping": "pong"}
copy子產品
上一篇文章中是通過playbook的方式來學習
copy
子產品的,這裡通過Ansible Ad-Hoc再來熟悉一下。
ansible server1 -m copy -a 'src=/home/jelly/nameList.txt dest=/home/test1/nameList.txt backup=yes' -o
輸出如下:
192.168.1.3 | CHANGED => {"changed": true,"checksum": "2cb17bce3b65b4168ec1472690e6c49028b5b73b","dest": "/home/test1/nameList.txt","gid": 1001,"group": "test1","md5sum": "39e0c6634669ec88003d6d92f50e879e","mode": "0664","owner": "test1","size": 7,"src": "/home/test1/.ansible/tmp/ansible-tmp-1569858467.3466117-143590544702277/source","state": "file","uid": 1001}
shell子產品
shell
子產品是我們使用的最多的子產品了。如果學會了Ansible,我想這個指令可能是你今後運維中會經常使用的指令了。為什麼這麼說呢?就是因為好用!!!
比如:
ansible server1 -m shell -a 'uname -ra' -o
輸出如下:
192.168.1.3 | CHANGED | rc=0 | (stdout) Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
總而言之,言而總之,當你想在多台機器上執行某個指令時,不妨試一試這裡說的這個方法哦!
總結
好用的工具,就需要和大家分享。Ansible Ad-Hoc就是這麼樣的一個工具,當然了,Ansible整個都是一個好用的工具,用心學一下,你會發現收益很多。學會了Ansible以後,我看到那些運維人員,還在一台一台主機的登陸,執行同樣的指令的時候,我總是會心一笑。Too young, Too simple!哦,那些年,我也是這麼走過來的。
果凍想,認真玩技術的地方。
2019年9月30日 于内蒙古呼和浩特。