001-Ansible-參考http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks

1. Patterns

在Ansible中,Patterns 是指我們怎樣確定由哪一臺主機來管理. 意思就是與哪臺主機進行交互.

ansible <pattern_goes_here> -m <module_name> -a <arguments>
ansible webservers -m service -a "name=httpd state=restarted"

同時讓我們提前了解一些技能,除了如上,你也可以通過 --limit 標記來添加排除條件,/usr/bin/ansible or /usr/bin/ansible-playbook都支持:
ansible-playbook site.yml --limit datacenter2
如果你想從文件讀取hosts,文件名以@為前綴即可.從Ansible 1.2開始支持該功能:
ansible-playbook site.yml --limit @retry_hosts.txt

tasks:- name: make sure apache is runningservice: name=httpd state=running

tasks:- name: disable selinuxcommand: /sbin/setenforce 0
tasks:- name: run this command and ignore the resultshell: /usr/bin/somecommand || /bin/true
tasks:- name: run this command and ignore the resultshell: /usr/bin/somecommandignore_errors: True
tasks:- name: Copy ansible inventory file to clientcopy: src=/etc/ansible/hosts dest=/etc/ansible/hostsowner=root group=root mode=0644
tasks:- name: create a virtual host file for {{ vhost }}template: src=somefile.j2 dest=/etc/httpd/conf.d/{{ vhost }}
template: src=templates/foo.j2 dest=/etc/foo.conf
- name: template configuration filetemplate: src=template.j2 dest=/etc/foo.confnotify:- restart memcached- restart apache
handlers:- name: restart memcachedservice:  name=memcached state=restarted- name: restart apacheservice: name=apache state=restarted
tasks:- shell: some tasks go here- meta: flush_handlers- shell: some other tasks
ansible-playbook playbook.yml -f 10
ansible-playbook playbook.yml --list-hoststasks: - include: wordpress.yml wp_user=timmy - include: wordpress.yml wp_user=alice - include: wordpress.yml wp_user=bob
- name: this is a play at the top level of a filehosts: allremote_user: roottasks:- name: say hitags: fooshell: echo "hi..."- include: load_balancers.yml
- include: webservers.yml
- include: dbservers.yml

這個 playbook 為一個角色 ‘x’ 指定了如下的行為:

  • 如果 roles/x/tasks/main.yml 存在, 其中列出的 tasks 將被添加到 play 中
  • 如果 roles/x/handlers/main.yml 存在, 其中列出的 handlers 將被添加到 play 中
  • 如果 roles/x/vars/main.yml 存在, 其中列出的 variables 將被添加到 play 中
  • 如果 roles/x/meta/main.yml 存在, 其中列出的 “角色依賴” 將被添加到 roles 列表中 (1.3 and later)
  • 所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路徑。
  • 所有 script tasks 可以引用 roles/x/files/ 中的腳本,不需要指明文件的路徑。
  • 所有 template tasks 可以引用 roles/x/templates/ 中的文件,不需要指明文件的路徑。
  • 所有 include tasks 可以引用 roles/x/tasks/ 中的文件,不需要指明文件的路徑。
site.yml
webservers.yml
fooservers.yml
roles/common/files/templates/tasks/handlers/vars/defaults/meta/webservers/files/templates/tasks/handlers/vars/defaults/meta/

角色默認變量允許你為 included roles 或者 dependent roles(見下) 設置默認變量。要創建默認變量,只需在 roles 目錄下添加 defaults/main.yml 文件。這些變量在所有可用變量中擁有最低優先級,可能被其他地方定義的變量(包括 inventory 中的變量)所覆蓋。

wheel 角色的 meta/main.yml 文件包含如下內容:

---
allow_duplicates: yes
dependencies:
- { role: tire }
- { role: brake }

最終的執行順序是這樣的:

tire(n=1) brake(n=1) wheel(n=1) tire(n=2) brake(n=2) wheel(n=2) ... car 

?- hosts: webservers

?? vars:?

????? http_port: 80

template: src=foo.cfg.j2 dest={{ remote_install_path }}/foo.cfg
 
- hosts: app_serversvars:app_path: "{{ base_path }}/22"
- hosts: allremote_user: root# here we make a variable named "proxy_env" that is a dictionaryvars:proxy_env:http_proxy: http://proxy.example.com:8080tasks:- apt: name=cobbler state=installedenvironment: proxy_env

ntp_server: ntp.bos.example.com
backup: bak.bos.example.com
proxy_env:http_proxy: http://proxy.bos.example.com:8080https_proxy: http://proxy.bos.example.com:8080
yum install redis
service redis start
pip install redis
 
ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"
ansible-playbook playbook.yml --start-at="install packages"
ansible-playbook playbook.yml --step
 

在Playbook中,如果寫gather_facts來控制是否收集遠程系統的信息.如果不收集系統信息,那么上面的變量就不能在該playybook中使用了.

- hosts: whatever
  gather_facts: no
如果收集:

使用復雜facts變量

一般在系統中收集到如下的信息,復雜的、多層級的facts變量如何使用呢?

..."ansible_ens3": {"active": true, "device": "ens3", "ipv4": { "address": "10.66.192.234", "netmask": "255.255.254.0", "network": "10.66.192.0" }, "ipv6": [ { "address": "2620:52:0:42c0:5054:ff:fef2:e2a3", "prefix": "64", "scope": "global" }, { "address": "fe80::5054:ff:fef2:e2a3", "prefix": "64", "scope": "link" } ], "macaddress": "52:54:00:f2:e2:a3", "module": "8139cp", "mtu": 1500, "promisc": false, "type": "ether" }, ... 

那么可以通過下面的兩種方式訪問復雜的變量中的子屬性:

中括號:

{{ ansible_ens3["ipv4"]["address"] }}

點號:

{{ ansible_ens3.ipv4.address }}





轉載于:https://www.cnblogs.com/XilingCai/p/6544948.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255012.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255012.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255012.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux下通用Makefile寫法

linux編譯多個源文件的程序比較麻煩&#xff0c;這下就需要通用的Makefile了&#xff0c;編譯的時候執行一下make命令就OK&#xff0c;下面介紹通用makfile的寫法。 假設現在有以下源文件&#xff1a;file1.h file1.c file2.h file2.c mainproc.c&#xff0c;程序的主函數在mai…

客服彈出框

html代碼&#xff1a; <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>QQ在線客服jquery特效</title><link rel"stylesheet" type"text/css" href"common/css/lay…

第三次畢業設計任務書

一. 進度計劃 時間 計劃進度 3.24-3.30 嘗試將kdd數據預處理用代碼實現 3.31-4.6 將kdd數據預處理用代碼實現以及與aprior算法的結合 二. 課題需求 2.1 數據預處理的功能和主要方法 在現實中,由于數據的來源、組織、存儲等的多樣性,海量的原始數據中一般都很難避免“臟數據…

電商第一季函數筆記(1)

1、isset (PHP 4, PHP 5, PHP 7) isset — 檢測變量是否設置 說明 bool isset ( mixed $var [, mixed $... ] ) 檢測變量是否設置&#xff0c;并且不是 NULL。 如果已經使用 unset() 釋放了一個變量之后&#xff0c;它將不再是 isset()。若使用 isset() 測試一個被設置成 NULL …

壓縮xvid ffmpeg x264 對比

壓縮xvid ffmpeg x264 對比 Xvid是基于MPEG4協議的編解碼器&#xff0c;x264是基于H.264協議的編碼器&#xff0c;ffmpeg集合了各種音頻&#xff0c;視頻編解碼協議&#xff0c;通過設置參數可以完成基于MPEG4,H.264等協議的編解碼&#xff0c;現在將其對比結果羅列如下&#…

JMS-activMq與spring進行整合

對JMS做了一個簡要介紹之后&#xff0c;接下來就講一下Spring整合JMS的具體過程。JMS只是一個標準&#xff0c;真正在使用它的時候我們需要有它的具體實現&#xff0c;這里我們就使用Apache的activeMQ來作為它的實現。所使用的依賴利用Maven來進行管理&#xff0c;具體依賴如下…

微信消息

微信消息 轉載于:https://www.cnblogs.com/linewman/p/9918298.html

make: 警告:檢測到時鐘錯誤。您的創建可能是不完整的。

我在make的時候也出現了同樣的問題&#xff0c;不過不是什么大問題&#xff0c;這個不影響編譯結果分析原因可能是&#xff1a; 服務器上的文件最后修改時間比當前時鐘要晚解決辦法&#xff1a; 用touch 命令把源程序的時間戳改一下 find . -type f -exec touch {} \;或者touch…

FileReader/FileWriter復制文件

public class Test{ /*FileReader/FileWriter讀寫亂碼&#xff0c;待處理*/ public static void main(String[] args) throws IOException{ FileReader fileReader null; FileWriter fileWriter null; try{ fileReader new FileReader("c:/123/666.doc"); fileWri…

machine ID問題 ( u-boot設置machine id , set mach_type 0x16a )

machine ID問題 machine ID問題跟CPU具體到型號相關&#xff0c;啟動時打印信息如下&#xff1a; Uncompressing Linux...........................................................................done,booting the kernel. Error:unrecoginized/unsupported machine ID(r1…

FFMPEG使用參數詳解

FFMPEG使用參數詳解 目前又開始測MPEG1和MPEG2的解碼&#xff0c;在準備編碼好的測試序列過程中&#xff0c;需要通過編碼器來進行原始視頻序列的編碼操作&#xff0c;以生成我們需要的測試數據。由于IPP example提供的Encoder不支持MPEG1&#xff0c;經過查詢&#xff0c;決定…

模擬支付寶、淘寶登錄1

1、進入支付寶首頁 GET https://auth.alipay.com/login/index.htm HTTP/1.1Accept: */*Accept-Language: zh-CNAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; …

CSS層疊樣式表

HTML主要控制內容 CSS主要控制格式。 樣式表是用來指定樣式信息的句法機制。 之所以將CSS稱為層疊樣式表&#xff0c;是因為它可以在3個層次上進行定義。 內聯樣式表 內聯樣式表位于開始標簽中&#xff0c;其設置只對該元素起作用 文檔樣式表 文檔樣式表位于文檔的頭部區域&…

對X264/FFMPEG架構探討---感覺不錯

3. FFMPEG架構分析FFMPEG是目前被應用最廣泛的編解碼軟件庫&#xff0c;支持多種流行的編解碼器&#xff0c;它是C語言實現的&#xff0c;不僅被集成到各種PC軟件&#xff0c;也經常被移植到多種嵌入式設備中。使用面向對象的辦法來設想這樣一個編解碼庫&#xff0c;首先讓人想…

如何快糙好猛的使用Shiqi.Yu老師的公開人臉檢測庫(附源碼)

前言 本次編寫所用的庫為于仕祺老師免費提供的人臉檢測庫。真心好用&#xff0c;識別率和識別速度完全不是Opencv自帶的程序能夠比擬的。將其配合Opencv的EigenFace算法&#xff0c;基本上可以形成一個小型的畢業設計。&#xff08;我是學機械的啊喂&#xff01;&#xff01;&a…

SQL語句增加字段、修改字段、修改類型、修改默認值

--一、修改字段默認值alter table 表名 drop constraint 約束名字 ------說明&#xff1a;刪除表的字段的原有約束alter table 表名 add constraint 約束名字 DEFAULT 默認值 for 字段名稱 -------說明&#xff1a;添加一個表的字段的約束并指定默認值--二、修改字段名&#…

node+koa2+mysql搭建博客后臺

本文將詳細講解使用nodekoa2mysql搭建博客后臺的全過程。 開發環境 node 8.3.0及以上npm 5.3.0及以上mysql 5.7.21具體的環境配置可查看我的上一篇文章 準備工作 npm下載pm2(進程守護)&#xff0c;并設置全局變量創建博客需要的數據庫與表 開啟mysql并創建數據庫test: create d…

ffmpeg使用x264編碼的配置+ ffmpeg與 x264編碼器參數完整對照表

ffmpeg使用x264編碼的配置 ffmpeg與 x264編碼器參數完整對照表 分類&#xff1a; 多媒體 2010-07-13 11:31 1072人閱讀 評論(0) 收藏 舉報 轉載自&#xff1a;扶凱[http://www.php-oa.com] 本文鏈接: http://www.php-oa.com/2009/03/09/ffmpeg_x264.html 轉帖:http://rhinghear…

javascript之變量

定義變量方式有var&#xff0c;let&#xff0c;const&#xff0c;變量的類型是根據變量的值來確定&#xff0c;變量的名稱跟大多數語言一樣&#xff0c;包含數字字母_$,不能以數字開頭且區分大小寫。 var 最早的定義變量的方式&#xff0c;可重復定義,但請避免這樣做。 var a …

Maven理解

2019獨角獸企業重金招聘Python工程師標準>>> Maven概念 參考maven入門 冰河winner Maven作為一個構建工具&#xff0c;不僅能幫我們自動化構建&#xff0c;還能夠抽象構建過程&#xff0c;提供構建任務實現;它跨平臺&#xff0c;對外提供了一致的操作接口&#xff0…