Ansible 小手冊系列 七(Ad-hoc)

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"

創建軟連接,并設置所屬用戶和用戶組
ansible web -m file -a "src=/file/to/link/to dest=/path/to/symlink 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'"

管理軟件包


apt、yum 模塊分別用于管理Ubuntu 系列和RedHat 系列系統軟件包

更新倉庫緩存,并安裝"foo"
ansible web -m apt -a "name=foo update_cache=yes"

刪除 "foo"
ansible web -m apt -a "name=foo state=absent"

安裝 "foo"
ansible web -m apt -a "name=foo state=present"

安裝 1.0版本的 "foo"
ansible web -m apt -a "name=foo=1.00 state=present"

安裝最新得"foo"
ansible web -m apt -a "name=foo state=latest"

注釋:Ansible 支持很多操作系統的軟件包管理,使用時-m 指定相應的軟件包管理工具模塊,如果沒有這樣的模塊,可以自己定義類似的模塊或者使用command 模塊來安裝軟件包

安裝 最新的 Apache
ansible web -m yum -a "name=httpd state=latest"

刪除apache
ansible web -m yum -a "name=httpd state=absent"

從testing 倉庫中安裝最后一個版本得apache
ansible web -m yum -a "name=httpd enablerepo=testing state=present"

更新所有的包
ansible web -m yum -a "name=* state=latest"

安裝遠程的rpm包
ansible web -m yum -a "name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm 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組
ansible web -m user -a "name=user shell=/bin/bash groups=admins,developers append=yes"

刪除用戶 '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 服務等
ansible web-m git -a "repo=https://github.com/Icinga/icinga2.git dest=/tmp/myapp version=HEAD"

服務管理


確保web組所有主機的httpd 是啟動的
ansible web-m service -a "name=httpd state=started"

重啟web組所有主機的httpd 服務
ansible web-m service -a "name=httpd state=restarted"

確保web組所有主機的httpd 是關閉的
ansible web-m service -a "name=httpd state=stopped"

后臺運行


長時間運行的操作可以放到后臺執行,ansible 會檢查任務的狀態;在主機上執行的同一個任
務會分配同一個job ID
后臺執行命令3600s,-B 表示后臺執行的時間
ansible all -B 3600 -a "/usr/bin/long_running_operation --do-stuff"

檢查任務的狀態


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 專題文章總覽

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • 一.ansible (1) ansible: ansible是一款新出現的自動化運維系統,基于python開發并集...
    楠人幫閱讀 1,980評論 0 8
  • 1. 什么是Ansible,它有什么用? Ansible它是個集配置管理和應用部署于一體的自動化運維工具。 應用情...
    午覺不眠Orz閱讀 1,539評論 0 0
  • Ansible 安裝:apt-get install python-crypto python-lxml pipp...
    Jackzzg閱讀 1,726評論 0 3
  • 藥苦,沒你苦,吃藥不會哭,可是,想你,會。 一切的一切都是你給的借口,我一開始就懂,可是直到現在卻還想重陷其中。
    恩宜淡威宜嚴閱讀 193評論 0 0
  • 記得前兩年流行的一句話:“世界那么大,我想去看看?!本褪沁@條短短的辭職信火了。打開微博,轉的很火,朋友圈也在刷屏...
    孤子翼閱讀 559評論 0 2