Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles

Ansible管理任務計劃

-m:模塊

ansible all  -m cron  -a  'name="ban IP of login" minute=0 hour=*/2 day=1-2 month=1-2 weekday=1-2 job="sh /data/x5online/ban_try_login_ip.sh"'

[root@test-01 opt]# crontab -l

#Ansible: ban IP of login
0 */2 1-2 1-2 1-2 sh /data/x5online/ban_try_login_ip.sh

若要刪除該cron 只需要加一個字段 state=absent 

ansible testhost -m cron -a "name='ban IP of login' state=absent"

其他的時間表示:分鐘 minute 小時 hour 日期 day 月份 month

Ansible安裝rpm包/管理服務

安裝yum的時候報錯:
Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles

解決:
vi /etc/ansible/hosts
[testhost]
test-01 ansible_python_interpreter=/usr/bin/python2.7
test-02

安裝
ansible test-01 -m yum -a "name=iftop state=installed"

刪除
ansible test-01 -m yum -a "name=iftop state=removed"

state:``
running,

started,

stopped,

restarted,

reloaded


ansible testhost -m service -a "name=httpd state=started enabled=yes" 
 這裏的name是centos系統裏的服務名,可以通過chkconfig --list查到。

playbook的使用

爲什麼要用playbook?
我們完成一個任務,例如安裝部署一個httpd服務,我們需要多個模塊(一個模塊也可以稱之爲task)提供功能來完成。而playbook就是組織多個task的容器,他的實質就是一個文件,有着特定的組織格式,它採用的語法格式是YAML(Yet Another Markup Language)。

相當於把模塊寫入到配置文件裏面,例:
[root@test-01 tools]# vi /etc/ansible/test.yml

Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles

說明: 第一行需要有三個槓,hosts參數指定了對哪些主機進行參作,如果是多臺機器可以用逗號作爲分隔,也可以使用主機組,在/etc/ansible/hosts裏定義;
remote_user參數指定了使用什麼用戶登錄遠程主機操作;
tasks指定了一個任務,其下面的name參數同樣是對任務的描述,在執行過程中會打印出來,shell是ansible模塊名字
執行:ansible-playbook test.yml

警告可以清理:
Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles

vi /etc/ansible/ansible.cfg
command_warnings=False #添加這個

例子2:創建用戶

Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles
說明:
name參數對該playbook實現的功能做一個概述,後面執行過程中,會打印 name變量的值 ,可以省略;

gather_facts參數指定了在以下任務部分執行前,是否先執行setup模塊獲取主機相關信息,這在後面的task會使用到setup獲取的信息時用到;

vars參數,指定了變量,這裏指字一個user變量,其值爲test ,需要注意的是,變量值一定要用引號引住;user提定了調用user模塊,name是user模塊裏的一個參數,而增加的用戶名字調用了上面user變量的值。

Ansible playbook中的循環

沒有文件,就創建
Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles

說明: with_items爲循環的對象
執行 ansible-playbook while.yml

Ansible playbook中的條件判斷

Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles
說明:ansible test-02 -m setup 可以查看到所有的facter信息

test-02 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.1.67"
]

Ansible playbook中的handlers

handlers需要等到所有tasks完成後才執行;相當於shell 中的 cmd1 && cmd2 只有當cmd1 執行成功後才執行cmd2
只有當task任務執行成功後,才執行handlers裏的,用於檢查nginx的語法,沒問題才reload nginx服務
Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles

說明,只有copy模塊真正執行後,纔會去調用下面的handlers相關的操作。 這種比較適合配置文件發生更改後,重啓服務的操作。

yum 安裝

不執行模糊匹配的安裝(如:perl*),這樣只是安裝了perl

Ansible管理任務計劃、安裝rpm包管理服務、 playbook的使用循環條件判斷handles

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章