Ansible 小手冊系列 七(Ad hoc)

2022-07-12 07:42:08 字數 4429 閱讀 6466

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/null

ansible 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 ...

如何加入開源專案的小手冊

參與開源專案,可以快速提高自己的技術水平,學到很多學校中學不到但在工作中會非常有幫助的技巧。乙份參與過開源專案的履歷,也越來越受到用人單位 的重視。所以最近幾年,我們技術愛好者對開源專案投入的關注是越來越多了。可仍會看到很多對開源專案充滿興趣和熱情的同學,用了錯誤的方式方法以至於不得 其門而入。這段...