Linux自動化運維(Shell與Ansible)(微課版) 課件 項目7 Ansible Play 基本語法_第1頁
Linux自動化運維(Shell與Ansible)(微課版) 課件 項目7 Ansible Play 基本語法_第2頁
Linux自動化運維(Shell與Ansible)(微課版) 課件 項目7 Ansible Play 基本語法_第3頁
Linux自動化運維(Shell與Ansible)(微課版) 課件 項目7 Ansible Play 基本語法_第4頁
Linux自動化運維(Shell與Ansible)(微課版) 課件 項目7 Ansible Play 基本語法_第5頁
已閱讀5頁,還剩46頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux自動化運維項目7:AnsiblePlaybook基本語法

學習目標【知識目標】了解YAML和JSON基本格式。了解Ansible常用的內置模塊。了解ansible-doc命令基本語法。了解AnsiblePlaybook基本語法。【技能目標】掌握ansible-doc命令的使用方法,能夠查看Ansible模塊的示例和文檔信息。掌握AnsibleAdHoc命令的使用方法,能夠使用命令執行臨時任務。掌握AnsiblePlaybook的使用方法,能夠編寫基本的AnsiblePlaybook并實施Play任務。【素質目標】培養讀者的團隊合作精神、協同創新能力,使其能夠在團隊中積極合作、有效溝通。培養讀者分析和評估信息的能力,使其能夠運用邏輯思維解決復雜問題。AnsiblePlaybook基本語法任務1:AdHoc命令目錄/Contents010203AdHoc命令簡介AdHoc命令通過模塊執行任務查看模塊文檔信息01AdHoc命令簡介AdHoc命令簡介使用Ansible進行自動化管理時,通常有兩種方式,一種是通過Playbook文件進行管理,另一種則是使用AdHoc命令進行管理。在計算機領域中,AdHoc通常指的是一種無須事先準備的、快速解決問題的方法。Ansible提供AdHoc命令,該命令可以快速執行單個任務,無須編寫Playbook即可在線操作。AdHoc命令雖然存在一些局限性,但對于快速執行簡單任務而言非常實用。對于Ansible自動化的專家來說,使用AdHoc命令可以更加高效地操作服務器;當然,對于更加復雜的場景,則需要使用AnsiblePlaybook來充分發揮Ansible的作用。AdHoc命令簡介AdHoc命令集由/usr/bin/ansible實現,其基本語法如下:在使用AdHoc命令時,需要使用host-pattern參數來指定要在哪些受管主機上運行命令,host-pattern可以是清單文件中的特定主機或主機組。使用--list-hosts選項可以列出與特定主機模式匹配的主機,如果需要指定其他清單文件位置,可以使用-i選項替換默認位置。使用-m選項可以指定要在目標主機上運行的模塊名稱。模塊是實現任務的小程序,有些模塊不需要額外的信息,而有些模塊需要使用額外的參數來指定操作細節。使用-a選項以帶引號字符串的形式傳遞參數列表。ansible[pattern]-m[module]-a"[moduleoptions]“ansible<host-pattern>[-mmodule_name][-aargs]AdHoc命令簡介AdHoc命令常見的參數或選項:序號參數或選項描述1<host-pattern>表示目標主機或主機組的模式,可以使用IP地址、主機名或主機組名稱等方式指定。如ansibleall-mping表示對所有主機執行ping命令2-mmodule_name表示要執行的模塊的名稱,如setup、debug、yum、shell等3-aargs表示要傳遞給模塊的參數,以字符串的形式表示,多個參數可以使用空格分隔。如ansibleall-mshell-a"ls-l/var/log"表示在所有主機上執行ls命令4-iinventory表示指定主機清單文件的路徑,默認為/etc/ansible/hosts5-fforks表示同時運行的進程數,默認為56-uREMOTE_USER表示指定要在遠程主機上運行命令的遠程用戶,如果未指定,則默認使用當前用戶7-k--ask-pass

表示使用遠程主機的賬戶和密碼進行身份驗證8-K--ask-become-pass表示在遠程主機上使用sudo命令來執行任務,需要在執行命令時提供遠程用戶的提權密碼9-b表示使用sudo權限執行任務,如果不需要輸入sudo密碼,需要在遠程主機上配置sudo權限NOPASSWD10--ask-vault-pass表示要求輸入Vault密碼進行解密11--vault-password-file=vault_password_file表示指定Vault密碼文件的路徑12--syntax-check表示檢查語法錯誤13--list-hosts表示列出與模式匹配的主機名02AdHoc命令通過模塊執行任務AdHoc命令通過模塊執行任務AdHoc命令通常使用模塊來執行特定任務。Ansible提供了大量的模塊。這些模塊已經經過測試,并作為Ansible標準安裝的一部分。使用這些模塊可以輕松地執行許多常見的系統管理任務,而無須自己編寫腳本或命令。Ansible的模塊庫包括大量的內置模塊,這些模塊對許多常見操作提供了支持,例如文件操作、用戶管理、包管理、網絡操作、監視等。這些模塊可以輕松地與其他Ansible組件(例如Playbook、角色、任務等)結合使用,以實現靈活、可重復使用的自動化工作流程。AdHoc命令通過模塊執行任務Ansible常用模塊:序號模塊名描述主要選項模塊命令示例1copy用于將本地文件復制到遠程受管節點src:指定要復制到遠程節點主機的本地文件的路徑,可以是絕對路徑或相對路徑。如果路徑是一個目錄,將進行遞歸復制。在這種情況下,路徑以“/”結尾,只有該目錄的內部內容會被復制到目標位置。如果不以“/”結尾,整個目錄及其所有內容都將被復制。dest:指定復制的文件在遠程節點主機上的路徑,必須是遠程節點主機的絕對路徑。content:在控制節點上生成文件的內容,與src參數不能同時使用。owner:所屬用戶。group:所屬用戶組ansiblewebservers-mcopy-a"src=/etc/hostsdest=/tmp/hosts"2file管理遠程主機上的文件或目錄,例如創建或刪除文件或目錄、更改文件或目錄的權限或所有者等path:指定要操作的文件或目錄的路徑。state:指定文件或目錄的狀態,可選值有absent、directory、touch、link、hard、file等。mode:指定文件或目錄的權限模式,可以是數字或字符串形式,例如0644或u+rwx、g+rx等owner:文件的所屬用戶。group:文件的所屬用戶組ansiblewebservers-mfile-a"path=/etc/foo.confmode=600owner=foogroup=foo"AdHoc命令通過模塊執行任務Ansible常用模塊:序號模塊名描述主要選項模塊命令示例3lineinfile在文件中查找指定的行,并進行添加、刪除或替換等操作path:指定要修改的文件的路徑。line:指定要插入或替換到文件中的行內容。state:指定要執行的操作,可選值為present或absent。regexp:用于匹配需要修改或刪除的行的正則表達式。insertafter:指定在哪行之后插入新行ansiblewebservers-mlineinfile-a"path=/etc/

foo.confregexp='^Setting'line='Setting=NewValue'"4synchro-nizesynchronize模塊是對rsync的封裝,以同步本地和遠程主機的文件或目錄src:指定要同步到目標主機的源主機的路徑。dest:指定從源主機同步的目標主機的路徑。mode:指定同步模式,可選值有push、pull,默認為pushansiblewebservers-msynchronize-a"src=/

path/to/sourcedest=/

path/to/destination"5package用于管理軟件包,包括安裝、升級、刪除等操作,可自動檢測操作系統的包管理器name:軟件包名稱。state:軟件包狀態,present表示已安裝,latest表示最新版本,absent表示未安裝ansiblewebservers-mpackage-a"name=apache2state=present"6yum使用yum包管理器管理軟件包name:指定軟件包名稱。state:指定軟件包的狀態,可選項有present、absent、latest等。enablerepo:指定要啟用的yum源的名稱ansiblewebservers-myum-a"name=httpdstate=present"AdHoc命令通過模塊執行任務Ansible常用模塊:序號模塊名描述主要選項模塊命令示例7apt使用apt包管理器管理軟件包name:指定軟件包的名稱。state:指定軟件包的狀態,可選項有present、absent、latest等ansiblewebservers-mapt-a"name=apache2state=present"8dnf使用dnf包管理器管理軟件包name:要操作的軟件包的名稱。state:指定軟件包的狀態,可選項是present、latest、absent等ansiblewebservers-mdnf-a"name=httpdstate=present"9pip使用pip包管理器管理Python包name:指定Python包名稱。version:指定Python包版本號。state:指定Python包的狀態,可選項有present、absent、latest等ansiblewebservers-mpip-a"name=djangostate=present"10firewalld管理防火墻規則service:指定需要添加或移除的服務的名稱。state:指定服務狀態,可選項為enabled、disabled等。immediate:是否立即生效。permanent:是否永久生效ansiblewebservers-mfirewalld-a"service=

httpstate=enabled"11reboot重新啟動一個機器,等待它關機、重新啟動并響應命令reboot_timeout:重啟等待時間的限制,規定了等待機器重啟并響應測試命令的最大秒數。默認情況下,它的值為600s。reboot_command:用于指定重啟機器的命令和參數。在使用此選項時,pre_reboot_delay、post_reboot_

delay和msg將被忽略ansiblewebservers-mrebootAdHoc命令通過模塊執行任務序號模塊名描述主要選項模塊命令示例12service管理系統服務name:指定服務的名稱。state:指定服務的狀態,可選項有started、stopped、restarted、reloaded等。enabled:指定服務是否開機自啟動ansiblewebservers-mservice-a"name=httpdstate=started"13user管理用戶name:指定用戶的名稱。uid:指定用戶的UID。state:指定用戶的狀態,比如present、absent等ansiblewebservers-muser-a"name=foostate=present"14get_url從遠程URL下載文件并將其放置在遠程主機上的指定路徑下url:需要下載文件的URL。dest:遠程主機上文件的目標路徑。url_username:如果URL需要驗證,則表示提供的用戶名。url_password:如果URL需要驗證,則表示提供的密碼ansiblewebservers-mget_url-a"url=http://

/file.tar.gzdest=/tmp/file.tar.gz"15nmcli管理網絡設備,配置和管理不同類型的網絡連接conn_name:指定網絡連接的名稱。ifname:指定網絡接口的名稱。type:指定網絡連接的類型,如ethernet、teams、bonds等。ip4:指定IPv4地址和相關屬性。gw4:指定IPv4網關。state:指定網絡連接的狀態。autoconnect:指定網絡連接是否應該在系統引導時自動連接ansibletarget-mnmcli-a"conn_name=my-eth1ifname=eth1type=ethernetip4=00/24gw4=state=presentautoconnect=true"Ansible常用模塊:AdHoc命令通過模塊執行任務序號模塊名描述主要選項模塊命令示例16uri與HTTP和HTTPSWeb服務交互,支持摘要、HTTP基本身份驗證機制和WSSEHTTP身份驗證機制url:指定要執行HTTP請求的URL。user:HTTP身份驗證用戶名。password:HTTP身份驗證密碼。method:請求方法,支持GET、POST、PUT、DELETE、HEAD和OPTIONS等。force_basic_auth:是否強制使用HTTP基本身份驗證。status_code:預期的HTTP狀態碼,可用于檢查HTTP請求是否成功。dest:指定下載文件的目標路徑ansibletarget-muri-a"url=/file.zipdest=/tmp/file.zip"17blockinfile在文件中添加、修改或刪除塊內容path:指定要操作的文件路徑。

block:指定要添加、修改或刪除的文本塊。state:指定文本塊的狀態,可選值為present、absent。marker:用于標記開始和結束位置的字符串。backup:指定是否創建包含時間戳信息的備份文件。insertbefore:指定在哪行之前插入新文本塊。insertafter:指定在哪行之后插入新文本塊。

create:指定是否創建文件ansibletarget-mblockinfile-a"path=/var/www/html/index.htmlmarker='<!--{mark}ANSIBLEMANAGEDBLOCK-->'insertafter='<body>'block='<h1>Welcometo{{ansible_hostname}}</h1>\n<p>Lastupdatedon{{ansible_date_time.iso8601}}</p>'"Ansible常用模塊:AdHoc命令通過模塊執行任務在AdHoc命令中,使用-m選項指定要執行的模塊。例如,使用ping模塊來檢查清單文件中的所有受管主機是否可達,執行如下命令:[rhce@control~]$ansibleall-mping上述示例會在所有受管主機上執行ping模塊,以測試主機之間的網絡連接性。當Ansible運行模塊時,它將在遠程主機上自動部署并執行模塊代碼,并將結果返回給控制節點。在AdHoc命令中,使用yum包管理器,在受管節點上安裝、更新或刪除軟件包。執行如下命令:[rhce@control~]$ansiblewebservers-myum-a"name=httpdstate=present"在上述示例中,-a選項用于傳遞命令行參數給執行的模塊。這些參數以字符串列表的形式傳遞,且必須使用引號(單引號或雙引號)標識,以便將整個字符串列表作為一個參數傳遞給模塊。如果需要指定多個參數,則以引號標識的、空格分隔的列表形式提供。[rhce@control~]$ansiblewebservers-mfile-a"path=/path/to/test/docmode=755owner=rhcegroup=rhcestate=directory"03查看模塊文檔信息查看模塊文檔信息模塊是Ansible自動化管理中的重要組成部分。自動化運維工程師需要熟悉和掌握模塊的功能和使用方法,才能高效地控制遠程主機執行自動化任務。Ansible提供了ansible-doc命令行工具,可以幫助用戶快速查找模塊的參數、使用方法、示例等,方便用戶快速了解模塊的功能和使用方法,以及編寫正確的AnsiblePlaybook來完成各種自動化任務。ansible-doc命令的基本語法如下:ansible-doc[options]module_name其中,module_name表示要查詢的模塊名稱,可以是Ansible自帶的模塊,也可以是自定義的模塊。查看模塊文檔信息序號參數或選項描述1-l、--list列出所有可用的模塊名稱2-F、--list-files顯示所有插件名稱及其源文件,不包括摘要信息3-t{TYPE}、--type{TYPE}指定要查看的插件類型。可用的插件類型包括become、cache、callback、cliconf、connection、httpapi、inventory、lookup、netconf、shell、vars、module、strategy、test、filter、role和keyword等4-s、--snippet顯示指定類型插件的示例代碼片段。可用類型包括inventory、lookup和module等5-rROLES_PATH、--roles-pathROLES_PATH指定角色所在的目錄路徑6-MMODULE_PATH、--module-pathMODULE_PATH在默認的插件路徑之前添加自定義插件路徑,多個路徑使用冒號分隔常用的ansible-doc命令參數或選項如表所示:查看模塊文檔信息要查詢yum模塊的文檔信息,可以使用以下命令:ansible-docyum。該命令將輸出yum模塊的文檔信息,包括模塊的參數、示例等。ansible-doc命令輸出的模塊文檔信息中主要字段如表所示:序號字段描述1NAME模塊名稱2SYNOPSIS模塊的語法格式和參數3DESCRIPTION模塊的詳細描述和用途4OPTIONS模塊的選項和參數,包括常用選項和高級選項5RETURN模塊的返回值類型和描述6EXAMPLES模塊的使用示例7AUTHORS模塊的作者和貢獻者8COPYRIGHT版權信息查看模塊文檔信息顯示所有可用的模塊:ansible-doc-l將文檔輸出為JSON格式:ansible-doc-jfile顯示某個特定插件的文檔,如template模板的文檔:ansible-doc-tmoduletemplate列出某個特定集合的所有插件:ansible-doc-lcommunity.docker顯示某個特定插件的源文件路徑:ansible-doc-Fcommunity.docker查看所有可用的過濾器(filter)插件及其摘要信息:ansible-doc-tfilter–list查看to_nice_json過濾器的文檔信息:ansible-doc-tfilterto_nice_json顯示所有可用的回調(callback)插件:ansible-doc-tcallback--list顯示名為profile_tasks的回調插件的文檔信息:ansible-doc-tcallbackprofile_tasks查詢file模塊(module)的文檔信息,包括模塊的參數、示例用法等:ansible-doc-tmodulefile謝謝AnsiblePlaybook基本語法任務2:YAML與JSON基本格式目錄/Contents01YAML基本格式02JSON基本格式01YAML基本格式在Ansible中,YAML常用于編寫Playbook、清單文件、變量、角色等,它可使Playbook和清單文件更加易于閱讀和理解,能幫助用戶輕松地部署和維護復雜的自動化任務。01除了在Ansible中使用之外,YAML還用于Kubernetes資源部署、GitHub源碼控制中的跟蹤和審計變更等。02YAML擁有Perl、C、XML、HTML和其他編程語言的特性。YAML也是JSON的超集,所以JSON文件在YAML中有效。YAML使用Python風格的縮進來表示嵌套,不能使用制表符,推薦使用空格來代替。03YAML簡介YAML是一種輕量級的數據序列化語言,其語法類似Python,使用縮進和換行來表示結構層次關系,不需要使用標簽或者屬性來標記數據。相對于XML和JSON等格式,YAML格式更加緊湊和簡潔。YAML基本語法在YAML文件中,3個短橫線(---)表示文檔分隔符,用于將一個文件分成多個YAML文檔。每個文檔以單個短橫線(-)開頭,表示一個序列(列表),或以鍵值對的形式表示一個映射(字典)。使用3個短橫線可以將多個文檔組合到一個文件中,每個文檔之間用3個短橫線分隔。例如,以下是一個包含兩個文檔的YAML文件示例:---name:Johnage:30---name:Janeage:25在YAML文件中使用3個短橫線并不是必需的,特別是在只有一個YAML文檔的情況下。但是,如果需要在同一個文件中包含多個YAML文檔,使用3個短橫線可以使它們更易于管理和處理。使用YAML格式編寫文件時,可以使用映射和列表這兩種結構來組織數據。映射數據結構映射是一種用于表示鍵值對的數據結構,類似于字典或哈希表。通常使用冒號(:)來將鍵和值分隔開,其中每個鍵必須唯一,冒號和值之間的空格也是必需的。例如,下面是一個簡單的YAML映射示例:name:JohnSmithage:30email:john@在這個示例中,name是鍵,對應的值是字符串JohnSmith;age是鍵,對應的值是整數30;email是鍵,對應的值是字符john@。映射數據結構在YAML文件中使用映射時,可以通過縮進來表示層次結構,YAML對縮進的空格數量沒有嚴格的要求,但有兩個基本規則。同一層級的元素(鍵值對或子映射)必須使用相同數量的空格進行縮進,以表示它們處于相同的層次結構級別。子映射的縮進必須大于其父映射,以明確表示層次結構關系。映射也可以嵌套,以表示更復雜的數據結構,例如:person:name:JohnSmithage:30contact:email:john@phone:555-123456在這個示例中,person和contact是頂級映射的鍵,它們有相同的縮進級別。而name、age、email和phone是每個映射的鍵對應的值,它們相對于各自映射鍵進行縮進。列表數據結構列表由一組項目組成,每個項目可以是任何YAML數據結構,包括映射或列表。列表使用短橫線(-)來標記每個項目,并使用縮進來表示層次結構。例如,下面是一個簡單的YAML列表示例:-JohnSmith-JaneDoe-BobJohnson在這個示例中,定義了一個包含3個項目的列表,分別是JohnSmith、JaneDoe和BobJohnson。列表數據結構與映射不同,列表包含一組按照特定順序排列的值,它可以包含任意數量的所需項目。在YAML文件中使用列表時,使用短橫線和空格來開始一個新的項目,并使用縮進來表示層次結構。例如,下面是一個包含列表的YAML文件示例:fruits:-apple-orange-banana在這個示例中,定義了一個名為fruits的映射,它包含一個名為fruits的列表。列表中包含3個項目,即apple、orange和banana。項目使用短橫線和空格來標記,并使用縮進來表示層次結構。YAML文件的數據結構可以是映射或列表。映射用于關聯鍵值對,列表用于包含項目。它們可以嵌套和組合使用,以創建復雜的數據結構。02JSON基本格式最常見的JSON應用場景之一是在不同系統之間進行數據交換。廣泛用于Web應用程序和移動應用程序之間的數據交換。01在Ansible中,可以使用JSON格式的數據來定義變量、模板等,還可以用JSON格式的數據作為模塊的輸入和輸出。例如,可以使用JSON格式的數據作為shell模塊的命令參數和返回值。02JSON的基本語法是鍵值對,用于表示一個對象。鍵與值之間用冒號分隔,每個鍵值對之間用逗號分隔,并使用花括號標識。03JSON是一種輕量級的數據交換格式,由于其簡單、易于解析和支持跨平臺等特點,它被廣泛應用于各種場景中。JSON簡介JSON基本格式在下面的示例中,對象的名稱是person,對應的值是一個嵌套的對象。name、age和city是鍵,分別對應字符串John、數字30和字符串ShangHai。"person":{"name":"John","age":25,"address":{"street":"MainStreet","city":"NewYork"}}}在JSON對象中,值可以是基本數據類型(如字符串、數字、布爾值),也可以是數組,數組通常用于表示一組相同類型的數據,它們使用方括號標識,并用逗號分隔每個元素。在下面的示例中,fruits是鍵,值是一個包含3個字符串的數組。{"fruits":["apple","banana","orange"]}謝謝AnsiblePlaybook基本語法任務3:Playbook基本格式目錄/Contents010203編寫并運行Playbook提高輸出的詳細程度語法驗證01編寫并運行PlaybookPlaybook簡介AnsiblePlaybook是一種用YAML格式編寫的自動化代碼文件,它可以在無須人工干預或有限人工干預的前提下,通過預先編寫的代碼來執行復雜的IT操作。Playbook可以對一組或一類共同構成Ansible清單文件的主機進行操作,常用于IT基礎設施的自動化場景,涵蓋基礎架構、網絡設備、安全合規、應用部署等,可實現可擴展、高效、一致的自動化操作。Playbook可以稱為劇本,通常包含一個或多個play。play則是Playbook中的一個場景,用于描述一組相關任務,并指定要在哪些主機上執行任務。每個play有一個或多個任務(task,即在目標主機上執行的特定任務),每個任務執行一個具有特定參數的模塊,在Playbook中,可以使用變量、條件語句、循環語句等,還可以包含其他文件,以實現更靈活和復雜的自動化任務和部署場景。運行Playbook下面是簡單的Playbook示例:----name:PLAY-1Deployingapachehttpdwebserviceshosts:tasks:-name:P1Task-1InstallthelatestversionofApacheyum:name:httpdstate:latest-name::P1Task-2InstallthelatestversionofApachedebug:msg:-“SuccessInstallApacheWebServerInfo”-name:PLAY-2Deployingnginxwebserviceshosts:tasks:-name::P2Task-1InstallthelatestversionofNginxyum:name:nginxstate:latest第1個Playbook起始符Play1模塊名模塊名模塊名Task1Task2Task1Play2在示例中,Playbook開頭的一行由3個短橫線(---)組成,3個短橫線是一種常用的分隔符,可將Playbook分成多個獨立的部分。在這個示例中,有一個Playbook,Playbook包含兩個play。在其他場景中,Playbook末尾可能使用3個圓點(...)作為文檔結束標記,但在實踐中通常會省略。在Playbook示例中,---后的行以短橫線開頭,然后列出play列表中第一個play。每個play都以短橫線和空格開頭,表示該play是Playbook中的一個項目。每個play有3個相同縮進的鍵:name、hosts和tasks。運行Playbookplay中的第二個鍵是hosts屬性,它用于指定運行play中的任務的主機,hosts屬性將主機或主機名稱作為值,如清單文件中受管主機或組的名稱。play中的最后一個鍵是tasks屬性,其值用于指定要為該play運行的任務的列表。Playbook示例中第一個play只有一項任務,該任務使用特定參數運行yum模塊以安裝httpd軟件包。play的第一個鍵是name屬性,它將一個任意字符串作為標簽與該play關聯。name鍵雖然是可選的,但建議使用,因為它標識了play的用途,特別是當Playbook包含多個play時,使用name屬性可以幫助用戶更好地了解每個play的功能和作用。-name:Deployingwebserviceshosts:tasks:-name:InstallthelatestversionofApacheyum:name:httpdstate:latest運行PlaybookPlaybook是以YAML格式編寫的文本文件,如需表達更為復雜的配置和自動化任務,可使用映射和列表組合的數據結構。#服務器配置-server1:os:openEuler22services:-apache-mysql-sshusers:-username:huaweihome_dir:/home/huaweigroups:-admin-developersssh_keys:-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAAB-username:janehome_dir:/home/janegroups:-adminssh_keys:-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAAC在示例中,每個服務器都以其名稱作為字典鍵,并以操作系統、服務和用戶列表作為字典值,每個用戶又以其用戶名作為字典鍵,并以主目錄、組和SSH密鑰列表作為字典值。Playbook中play和任務列出的順序很重要,因為Ansible會按照相同的順序運行任務。在編寫Playbook時,需要仔細考慮任務列表的順序,以確保所有任務都按照正確的順序運行,并且Playbook能夠實現預期的效果。運行Playbookansible-playbook命令可用于運行playbook。該命令在控制節點上執行,要運行的Playbook的名稱則作為參數傳遞,基本格式如下:在運行Playbook時,將輸出所執行的play和任務。輸出中也會報告執行的每一項任務的結果,以下示例顯示了一個簡單的Playbook內容,以及其運行結果:ansible-playbook[options]playbook.yml[rhce@control~]$catset-firewall.yml----name:Configurefirewalldruleshosts:tasks:-name:Redirectport443to8443withRichRuleansible.posix.firewalld:rich_rule:rulefamily=ipv4forward-portport=443protocol=tcpto-port=8443zone:publicpermanent:trueimmediate:truestate:enabled運行Playbook[rhce@control~]$ansible-playbookset-firewall.ymlPLAY[Configurefirewalldrules]*******************************************************TASK[GatheringFacts]*****************************************************************ok:[]TASK[Redirectport443to8443withRichRule]****************************************ok:[]PLAYRECAP*****************************************************************************

:ok=2changed=0unreachable=0failed=0skipped=0rescued=0ignored=0在AnsiblePlaybook運行時,每個play和任務的名稱都會在屏幕上顯示。GatheringFacts任務是一項特殊的任務,setup模塊通常在play啟動時自動運行此任務以收集有關目標主機的信息。對于含有多個play和任務的Playbook,設置任務名稱可以使監控Playbook的執行進度變得更加容易。在任務完成后,如果目標主機的狀態發生了變化,Ansible會將任務的狀態標記為changed,表示任務更改了主機上的某些設置,使其符合規格要求。通常情況下,AnsiblePLaybook中的任務是冪等的,冪等性是指無論任務運行多少次,系統的狀態都保持一致,即任務的效果只會發生一次,再次運行任務不會對系統產生額外的影響。冪等性是Ansible的一個關鍵特性,它確保在重復運行Playbook時,每個任務只會在需要時執行,而且只會執行必要的操作來實現所需的狀態,而不會執行多余的操作。02提高輸出的詳細程度提高輸出的詳細程度ansible-playbook命令的默認輸出不提供詳細的任務執行信息。ansible-playbook-v命令提供了額外的信息,共有4個級別。Playbook執行的輸出詳細程度選項如表所示:序號選項描述1-v默認級別,顯示基本的任務執行信息2-vv顯示任務執行結果和任務配置3-vvv顯示關于與受管主機連接的信息4-vvvv顯示SSH通信的所有詳細信息、調試信息和錯誤消息。增加了連接插件相關的額外詳細程度選項,可顯示包括受管主機上執行腳本的用戶以及所執行的腳本等信息03語法驗證語法驗證在使用ansible-playbook命令運行Playbook之前,可以使用--syntax-check選項對Playbook的語法進行驗證,以確保其正確無誤。在執行PLaybook之前,最好進行驗證,以確保其語法正確無誤。ansible-playbook命令提供了--syntax-check選項,可用于驗證Playbook的語法。下面演示一個Playbook成功通過語法驗證。[rhce@control~]$ansible-playbook--syntax-checkwebserver.ymlplaybook:webserver.yml語法驗證syntax-check上述示例演示了一個Playbook語法驗證失敗而輸出信息,包括JSON和YAML解析錯誤,同時指出了錯誤所在的文件、行數、列數和具體問題,具體問題是set-firewall.yml文件第7行第29列處的rich_rule錯誤。語法驗證失敗時,將報告語法錯誤。輸出中也包含語法問題在Playbook中的大致位置。[rhce@contro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論