冒死上传(已被开除)!Ansible自动化运维+shell编程,入门到进阶一套就够了!
ansible和playbook和role运维实战教程
ansible指令選項 ·
-m:要執行的模塊,默認為command ·
-a:模塊的參數 ·
-u:ssh連接的用戶名,默認用root,
在ansible.cfg中可以配置module和action
ansible 主機組 -m shell -a "echo Hello World"
vim etc/ansible/hosts 更改裡面的IP PORT PASSPORT
[web]
127.0.0.1 ansible_port=2222 ansible_passport="123123"
127.0.0.2 ansible_port=2222 ansible_passport="123123"
127.0.0.3 ansible_port=2222 ansible_passport="123123"
這樣子的改法很耗時間,需要每一個個別添加port和passport,
於是可以改成如下。
[web:vars] #宣告一個公共變數
ansible_port=2222
ansible_passport="123123"
[web] #繼承公共變數
127.0.0.[1:3] #代表127.0.0.1 ~127.0.0.3寫法
*****-m 模塊介紹*****
💛ping
ansible all -m ping 查看目標機器是否運行中~? all是代表查看全部的目標機器。
ansible all -m ping
💛command
ansible 主機組 -m command -a "需要批量執行的命令"
此為默認模塊,若不輸入-m 就會自動使用command,
它是簡單的模塊,若需要複雜的命令則要使用shell模塊。
command不能跑特殊符號,例如"> ! < ?",但是shell模塊可以。
ansible web -m command -a "hostname" #遠程查看主機名稱
ansible web -m command -a "hostname" 相等於 ansible web -a "hostname" #遠程查看主機名稱
ansible web -a "free -m" #遠程查看主機內存
💛shell
等於你在linux上任何的難的命令都可以跑,包括特殊符號。
不過還是建議找尋專有的模塊來跑。
****playbook*****
[web1] #hosts127.0.0.1127.0.0.2[web2] #hosts127.0.0.3127.0.0.4
開始撰寫 copy_hosts.yml 這個 playbook 內容看看:
- hosts: web1 #需要部屬的hosttasks:- name: copy_to_another hosts #幫這個過程命名copy: #指定模組為copysrc: /etc/hostsdest: /etc/hosts
把檔案從本機端src複製到 [web1]下面的127.0.0.1,127.0.0.2的dest裡面。
ansible-playbook copy_hosts.yml #下指令 - 安裝ansible playbook裡面的文件
name :代表每個動作的名稱 這個是可以自己命名的
yum, copy, service :各個-m模塊名稱,你也可以寫其他模塊module,像是command或shell,但要記得縮行~
TASK[install]
TASK[configure]
TASK[qidong]
#上面這些都是你在name輸入命名的
如果黃字代表RUN成功且有更改,
綠字代表RUN成功,但沒有更動。
透過 Groups of Groups 達到更複雜的組合
將多個 Group 再組合成另一個 Groups of Groups。
下面的範例中,只要在執行 playbook 時,
hosts 指定 ubuntu1404,即可在 vm1 ~ vm4 每一台都運行,
因為 web 與 db 這兩個 Group 都屬於 ubuntu 這個 Groups of Groups。
[ubuntu1404:children]webdb[web]vm1vm2[db]vm3vm4
沒有留言:
張貼留言
喜歡我的文章嗎? 喜歡的話可以留言回應我喔! ^^