Playbook的核心元素shell
Hosts 主機
ide
Tasks 任務測試
Variables:包含了模板語言的文本文件spa
Handlers:由特定條件觸發的任務
圖片
某任務的狀態在運行後爲changed時,可經過notify通知給相應的handlersrem
Playbook的基礎組件it
Hosts:運行指定任務的目標主機模板
remote_user:在遠程主機上執行任務的用戶class
tasks:任務列表基礎
簡單的Playbook腳本
playbook腳本的後綴爲.yaml
--ckeck 僅僅只是試運行,並無在遠程主機上執行,不過這個命令只要不報錯就算成功了。
查看腳本會在哪些主機上運行
再寫一個腳本
一、安裝telnet腳本
二、中止httpd服務
另外一個例子:
在playbook腳本中運行shell語句
handlers的使用
notify調用了handler中定義的"echo a line"模塊。在所在任務的狀態爲changed的時候執行notify指定的指令
tags的使用
正常狀況下,ansible-playbook會執行兩個任務
可是此次經過指定tags,能夠執行指定的任務
這裏只執行了install telnet的任務
variables使用
有些變量時ansible軟件內置的,facts。這些參數能夠經過ansible -m setup獲取
還有一些變量是在/etc/ansible/hosts中設置的。
還有一些變量是用戶在腳本中自定義的
首先演示/etc/hosts中的變量
一、在單個主機後面設置一個變量。而後給主機組一個變量
寫一個腳本調用變量
遠端主機結果
經過變量寫一個安裝軟件的通用腳本
測試腳本
經過這個腳本,安裝任何軟件均可以安裝
再寫一個自定義變量的
命令試運行
template 模板文件
這個功能用處就打了,本地ansible只提供一個模板文件,ansible在執行命令過程當中會根據不一樣主機在遠端主機上生成不一樣的文件。
template文件只能被playbook調用。
ansible開頭的一本上都是內建的變量名
先寫一個模板文件
以這個文件爲模板在遠端主機上生成一個文件
運行命令
遠端主機測試
Playbook的條件判斷
意思是如何遠端主機版本是6,就執行任務,若是不是就不用執行了。
因爲遠端主機的主版本都是7,因此跳過了
把判斷語句改爲7
此次就沒有跳過了
playbook的循環
循環的固定變量是item,而後要在tasks中使用with_item給定要循環元素的列表
命令執行
遠端執行結果
再寫一個雙因子的例子
user11屬於group11 user12屬於group12
運行
遠端主機查看