ansible提供兩種方式去完成任務,一是 ad-hoc 命令,一是寫 ansible playbook。前者可以解決一些簡單的任務, 後者解決較複雜的任務。
ad hoc——臨時的,在ansible中是指需要快速執行,並且不需要儲存的命令。說白了就是執行簡單的命令—一條命令。
定義主機清單
cat /etc/ansible/hosts[web]
192.168.77.129 ansible_ssh_user=root ansible_ssh_pass=123456
執行shell
# 獲取web組裡得eth0介面資訊ansible web -a "ifconfig eth0"
執行ifconfig eth0 命令,ansible模組 預設是command,它不會通過shell進行處理,所以像$ home和像「<」,「>」,「|」,「;」 和「&」將不工作(如果您需要這些功能,請使用shell模組)。
# 以shell直譯器執行指令碼ansible web -m shell -a "ifconfig eth0|grep addr"
# 以raw模組執行指令碼
ansible web -m raw -a "ifconfig eth0|grep addr"
# 將本地指令碼傳送到遠端節點上執行
ansible web -m script -a ip.sh
傳輸檔案
# 拷貝本地的/etc/hosts 檔案到web組所有主機的/tmp/hosts(空目錄除外)ansible web -m copy -a "src=/etc/hosts dest=/tmp/hosts"
# 拷貝本地的ntp檔案到目的位址,設定其使用者及許可權,如果目標位址存在相同的檔案,則備份原始檔。
ansible web -m copy -a "src=/mine/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=644 backup=yes force=yes"
# file 模組允許更改檔案的使用者及許可權
ansible web -m file -a "dest=/tmp/a.txt mode=600 owner=user group=user"
# 使用file 模組建立目錄,類似mkdir -p
ansible web -m file -a "dest=/tmp/test mode=755 owner=user group=user state=directory"
# 使用file 模組刪除檔案或者目錄
ansible web -m file -a "dest=/tmp/test state=absent"
# 建立遠端主機軟連線,並設定所屬使用者和使用者組,這裡的src表示遠端主機的檔案
ansible web -m file -a "src=/root/1.txt dest=/tmp/1.txt.link owner=user group=user state=link"
# touch 乙個檔案並新增使用者讀寫許可權,使用者組去除寫執行許可權,其他組減去讀寫執行許可權
ansible web -m file -a "path=/etc/foo.conf state=touch mode='u+rw,g-wx,o-rwx'"
管理軟體包
# 注釋:ansible 支援很多作業系統的軟體包管理,使用時-m 指定相應的軟體包管理工具模組,如果沒有這樣的模組,可以自己定義類似的模組或者使用command 模組來安裝軟體包# 安裝 最新的 apache
# 刪除apache
# 從testing 倉庫中安裝最後乙個版本得apache
# 更新所有的包
ansible web -m yum -a "name=* state=latest"
# 安裝遠端的rpm包
ansible web -m yum -a "name= state=present"
# 安裝 'development tools' 包組
ansible web -m yum -a "name='@development tools' state=present"
使用者和使用者組
# 新增使用者 'user'並設定其 uid 和主要的組'admin'ansible web -m user -a "name=user comment='i am user ' uid=1040 group=admin"
# 新增使用者 'user'並設定其登陸shell,並將其假如admins和developers組
# 刪除使用者 'user '
ansible web -m user -a "name=user state=absent remove=yes"
# 建立 user使用者得 2048-bit ssh key,並存放在 ~user/.ssh/id_rsa
ansible web -m user -a "name=user generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa"
# 設定使用者過期日期
ansible web -m user -a "name=user shell=/bin/zsh groups=nobdy expires=1422403387"
# 建立test組,並設定git為1000
ansible web -m group -a "name=test gid=1000 state=present"
# 刪除test組
ansible web -m group -a "name=test state=absent"
原始碼部署
# ansible 模組能夠通知變更,當**更新時,可以告訴ansible 做一些特定的任務,比如從git 部署**然後重啟apache 服務等
服務管理
# 確保web組所有主機的httpd 是啟動的# 重啟web組所有主機的httpd 服務
# 確保web組所有主機的httpd 是關閉的
後台執行
這個後台執行測試不成功。具體原因未知,尼瑪,後面測試playbook時繼續看看
# 長時間執行的操作可以放到後台執行,ansible 會檢查任務的狀態;在主機上執行的同乙個任務會分配同乙個job id
後台執行命令3600s,-b 表示後台執行的時間
ansible all -b 3600 -a "/usr/bin/long_running_operation --do-stuff"
檢查任務的狀態
這個也測試未成功,尼瑪的,後面測試playbook時繼續看看
ansible all -m async_status -a "jid=123456789"# 後台執行命令最大時間是1800s 即30 分鐘,-p 每60s 檢查下狀態預設15s
ansible all -b 1800 -p 60 -a "/usr/bin/long_running_operation --do-stuff"
定時任務
# 每天5點,2點得時候執行 ls -alh > /dev/nullansible test -m cron -a "name='check dirs' minute='0' hour='5,2' job='ls -alh > /dev/null'"
蒐集系統資訊
# 蒐集主機的所有系統資訊ansible all -m setup
# 蒐集系統資訊並以主機名為檔名分別儲存在/tmp/facts 目錄
ansible all -m setup --tree /tmp/facts
# 蒐集和記憶體相關的資訊
ansible all -m setup -a 'filter=ansible_*_mb'
# 蒐集網絡卡資訊
ansible all -m setup -a 'filter=ansible_eth[0-2]'
Ansible 小手冊系列 九(Playbook)
playbook是由乙個或多個 play 組成的列表。play的主要功能在於將事先歸併為一組的主機裝扮成事先通過ansible中的task定義好的角色。從根本上來講所謂task無非是呼叫ansible的乙個module。將多個play組織在乙個playbook中即可以讓它們聯同起來按事先編排的機制同...
Transact SQL小手冊,適合初學者
http dev.csdn.net develop article 25 25760.shtm選擇自myclife的blog transact sql 語句 功能 資料操作 select 從表中檢索資料行和列 insert 向資料庫表新增新資料行 delete 從資料庫表中刪除資料行 update ...
如何加入開源專案的小手冊
參與開源專案,可以快速提高自己的技術水平,學到很多學校中學不到但在工作中會非常有幫助的技巧。乙份參與過開源專案的履歷,也越來越受到用人單位 的重視。所以最近幾年,我們技術愛好者對開源專案投入的關注是越來越多了。可仍會看到很多對開源專案充滿興趣和熱情的同學,用了錯誤的方式方法以至於不得 其門而入。這段...