## 1、介紹:
1. playbooks是 一個不同于使用Ansible命令行執行方式的模式,其功能更強大靈活。
2. 簡單來說,playbook是一個非常簡單的配置管理和多主機部署系統,不同于任何已經存在的模式,可作為一個適合部署復雜應用程序的基礎。
3. Playbook可以定制配置,可以按照指定的操作步驟有序執行,支持同步和異步方式。值得注意的是playbook是通過YAML格式來進行描述定義的。
## 2、核心元素
> Tasks:任務,由模板定義的遠程操作列表
> Variables:變量
> Templates:模板,即使用模板語法的文件
> Handlers:處理器 ,當某條件滿足時,觸發執行的操作
> Roles:角色
### 2.1 **hosts和users介紹**
在playbook中的每一個play都可以選擇在哪些服務器和以什么用戶完成,hosts一行可以是一個主機組、主機、多個主機,中間以冒號分隔,可使用通配模式。其中remote\_user表示執行的用戶賬號。
~~~
- hosts: abc #指定主機組,可以是一個或多個組。
remote_user: root #指定遠程主機執行的用戶名
~~~
指定遠程主機sudo切換用
~~~
# vim ping.yml
---
- hosts: abc
remote_user: root
become: yes #2.6版本以后的參數,之前是sudo,意思為切換用戶運行
become_user: mysql #指定sudo用戶為mysql
執行playbook
# ansible-playbook ping.yml -K
~~~
## 2、實例:
1:Play的主體部分是task列表,task列表中的各任務按次序逐個在hosts中指定的主機上執行,即在所有主機上完成第一個任務后再開始第二個任務。
在運行playbook時(從上到下執行),如果一個host執行task失敗,整個tasks都會回滾,請修正playbook 中的錯誤,然后重新執行即可。
Task的目的是使用指定的參數執行模塊,而在模塊參數中可以使用變量,模塊執行時冪等的,這意味著多次執行是安全的,因為其結果一致。
2:每一個task必須有一個名稱name,這樣在運行playbook時,從其輸出的任務執行信息中可以很好的辨別出是屬于哪一個task的。如果沒有定義name,‘action’的值將會用作輸出信息中標記特定的task。
3:定義一個task,常見的格式:”module: options” 例如:yum: name=httpd
4:ansible的自帶模塊中,command模塊和shell模塊無需使用key=value格式
[root@master src]# cat /opt/playbook/test.yaml
```
- hosts: test #定義的主機組,即應用的主機
remote_user: root # 遠程用戶為root
tasks:
- name: mkdir ssh dir
shell: mkdir -p /root/scripts/.ssh
- name: copy ssh file
copy: src=/root/scripts/.ssh/authorized_keys dest=/root/.ssh/authorized_keys
- name: rsync scripts
synchronize: src=/root/scripts dest=/root rsync_opts=-avuz # rsync增量傳輸
- name: rsync tomcat jdk
synchronize: src=/opt/service dest=/opt rsync_opts=-avuz
- name: "initialize"
shell: sh /root/scripts/auto_fdisk.sh
- shell: sh /root/scripts/useradd.sh #存在多個相同模塊時,后面的木塊要加-
- shell: sh /root/scripts/init.sh
- shell: sh /root/scripts/service.sh
```
- Linux
- 高級
- 殺毒
- 記一次中毒事件
- clamav查毒軟件
- 處理挖礦病毒
- 定時任務
- kill
- chattr文件保護
- 運行級別
- Linux啟動
- 文件加密
- ssh免密登錄
- .ssh
- 問題
- 腳本
- 阿里云域名解析
- yum源
- 時間同步
- keepalived實現高可用
- dos字符與unix字符
- 大文件上傳
- 基礎
- proc目錄
- 設置宋體
- 基礎命令_01
- 基礎命令_02
- SELinux
- 文件描述符
- 基礎命令_03
- awk
- 系統日志
- date命令
- bc命令
- lsof
- vim快捷鍵
- shell
- 循環控制
- expr
- 執行腳本的方式
- declare
- shell腳本
- 控制啟停腳本
- 數值計算
- centos
- 配置網絡
- 環境
- 灰度環境
- ansible
- 模塊
- 語法
- file模塊
- setup模塊
- ping模塊
- copy模塊
- command模塊
- shell模塊
- service模塊
- cron模塊
- yum模塊
- user 模塊
- group模塊
- 指定用戶
- playbook
- 實例
- ansible安裝
- Jenkins
- shell部署
- 導入已有項目的配置
- 執行shell
- tungsten數據同步
- 防火墻
- netfilter