Ansible playbook-ansible劇本

一.playbook介紹

便于功能的重復使用

本質上就是文本文件,一般都是以.yml結尾的文本文件。

1.遵循YAML語法

1.要求同級別代碼要有相同縮進,建議4個空格。【同級別代碼是同一邏輯的代碼】

在計算機看來空格和Tob鍵是兩個不同的字符。

2.一個鍵對應一個值,冒號后要有空格,

key:value

一個鍵對應一個值的時候,建議寫在同一行上,在冒號的后面必須需要有一個空格,

當一個鍵對應多個值的時候,

如上圖所示,這三個value就是同級別代碼,這里的value前面的減號必須要跟冒號對其,value前面的減號跟value之間必須要有一個空格。【python中的列表】

3.當一個鍵對應多個值時,分行寫,

key:

? ? ? - value1

? ? ? - value2

? ? ? - value3

2.playbook結構

-hosts: 主機或者主機組名

?user: root表示的是將來機器在執行操作的時候以什么身份去執行操作。

?tasks: 具體的操作

以上三個就是同級別代碼,這三個單詞必須對齊,并且冒號后面一定要有空格。

? ? ? ? - name: 任務名稱

? ? ? ? ? 模塊名稱: 參數1? 參數2? 參數3

? ? ? - name: 任務名稱

? ? ? ? ? 模塊名稱: 參數1? 參數2? 參數3

? ? ?- name: 任務名稱

? ? ? ? ? 模塊名稱: 參數1? 參數2? 參數3

一個劇本中同樣的文件結構可以寫多個,但是建議將針對不太機器的劇本文件單獨寫,方便管理。

3.創建用戶openstack ,shell為/sbin/nologin

1)編寫劇本

2)執行劇本

如上圖所示,是劇本的執行過程,在真正執行劇本之前,ansible的默認行為是調用setup模塊去調出被控機器的狀態數據被叫做facts變量。

如上圖所示,在劇本中添加上這個選項就是代表執行劇本的時候,不去執行搜集被控機器的狀態數據,即取消劇本執行的時候默認去執行搜集被控機器的facts變量。

4.gather_facts參數

5.部署MySQL劇本

如上圖所示,這就是部署MySQL的劇本文件,執行三個任務,下載MySQL,推送MySQL配置文件到被控制機器,啟動MySQL服務。

二.變量

類型:

自定義變量

內置變量

? ? facts變量?

? ? 內置變量

1.自定義變量

1)調用變量

{{ 變量名稱 }}

2)在playbook中定義變量

如上圖所示,這是設置了一個自定義變量,username,并且這個變量的值是user01

如上圖所示,這是腳本的執行結果。

3)在外部文件中定義變量

如上圖所示,這是單寫一個文件來定義變量。

如上圖所示,這是指定劇本文件到變量文件中去識別變量。

如上圖所示,隨后去執行腳本,并且查看腳本的執行結果。

為確保敏感數據安全,可對變量文件進行加密

如上圖所示,可以用如上命令對重要的變量文件進行加密,

如上圖所示,當執行劇本的時候就會報錯。

如上圖所示,當我們對變量文件進行加密之后,再執行劇本的時候需要加上--ask-vault-pass選項,這時再次執行劇本的時候,要求我們輸入變量文件的密碼。

解密文件

如上圖所示,這是對加密的變量文件進行解密。

4)在主機清單文件中定義變量--為單個主機定義變量

如上圖所示,當我們在主機清單中自定義變量的時候,這時候劇本中就不需要再去寫關鍵字去調用變量了。

如上圖所示,執行劇本成功。

5)在主機清單文件中定義變量--為主機組定義變量

如上圖所示,這就是給主機組定義變量,

如上圖所示,這是主機清單中給單個主機設定server_id,

給主機組設定變量為port

6.修改MySQL劇本

如上圖所示,這是在MySQL的配置文件中,編輯server_id和port變量的引用。

如上圖所示,如果想要在推送文件的時候,觸發推送文件中變量的替換,就需要使用模塊template模塊,這個模塊也是一個推送模塊,具有在推送文件的同時實現變量替換的功能。這是copy模塊所不具備的。

如上圖所示,在修改配置文件之后,需要使得配置文件的修改生效。

2.內置變量

配置ssh協議的內置變量【免密ssh不是必須的。】

ansible_ssh_user

ansible_ssh_pass

ansisble_ssh_port

ansible軟件是基于ssh協議工作的,為了方便ansible軟件的工作,需要在每臺機器之間配置免密ssh。但是免密ssh不是必要的,在某些公司中根本不允許配置免密ssh。

如上圖所示,這是在ansible的主機清單中配置與192.168.140.14的ssh連接。

如上圖所示,此時證明ansible連接192.168.140.14的ssh協議配置成功。

三.劇本中的條件判斷

在寫條件判斷的時候常以facts變量為條件。

如上圖所示,通過這個變量提取到的是一個列表,【python列表】在這個列表中存放著我們需要的IP地址。

如上圖所示,這就是定義了一個python列表,通過這個變量名得到的是整個列表。

列表中的值從左到右,每一個值都有一個唯一的下標。下標固定從0開始。

變量名【2】

這就是取出列表中的第三個數據。

如上圖所示,這也是python語言中的一種數據結構,這種數據結構叫做字典。

如上圖所示,字典中的數據是沒有下標的,如果想要取得字典中的值,需要變量名【值對應的鍵】

字典中儲存的數據就是鍵值對的形式。

如上圖所示,這就是取得我們需要的值的過程,從外到里一步一步得取。

如上圖所示,ipv4的鍵對應的是字典。通過對應的鍵去取對應的值。

如上圖所示,此時我們這個劇本中的變量的數值是從被控主機的facts變量中取得,所以不能再加上gather_facts=false.不然劇本就取不到被控主機的facts變量。

如上圖所示,這是劇本中條件檢測失敗出現的結果。

要么是語法寫錯了,要么是我們取值的方法不對。

因為被控主機的ipv4字典是ansible_ens33字典的一個小字典。

如上圖所示,這是修改后的劇本文件。

四.循環? loop

如上圖所示,這就是一個循環,loop模塊每一次循環都會給item賦值,第一次是user100

第二次是user101.第三次是user102

結合字典使用循環

如上圖所示,這就是結合字典使用循環。

五.案例:部署nginx劇本

如上圖所示,這是兩個獨立的操作在被控主機上執行,第一步是將當前目錄切換到/tmp目錄下,第二個操作是解壓縮指定的tar包,但是被控主機并不會在tmp目錄下,取解壓縮指定的tar包,只會在/root目錄下去解壓縮tar包,但是tar包不存在于/root/目錄下,所以此時建議將切換目錄以及解壓縮tar的操作寫在一個-name里面。

如上圖所示,就是部署nginx的一個劇本信息,其中的get_url模塊在 Ansible 中,get_url 模塊用于從遠程 URL 下載文件并保存到目標主機的指定路徑。它是 Ansible 提供的一個內置模塊,常用于自動化下載文件、配置管理或部署任務。

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

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

相關文章

python的基礎入門

初識Python 什么是Python Python是1門程序設計語言。在開發者眼里,語言可以分為3類: 自然語言:人能聽懂的語言,例如漢語,英語,法語等等。機器語言:機器能聽懂的語言,機器只能聽懂0…

MD編輯器中的段落縮進怎么操作

在 Markdown(MD)編輯器中,段落的縮進通常可以通過 HTML 空格符、Markdown 列表縮進、代碼塊縮進等方式 實現。以下是幾種常見的段落縮進方法: 1. 使用全角空格 ( ) 在一些 Markdown 編輯器(如 Typora)中&…

8.neo4j圖數據庫python操作

使用圖數據庫的原因 圖數據庫使用neo4j的原因:neo4j使用率高,模板好找,報錯能查。 紅樓夢人物關系圖地址 GraphNavigator neo4j學習手冊 https://www.w3cschool.cn/neo4j/neo4j_need_for_graph_databses.html CQL代表的是Cypher查詢語言…

[Lc6_記憶化搜索] 掃雷游戲 | 理解 遞歸vs記憶化搜索vs dp

目錄 ?1.掃雷游戲 題解 1.記憶化搜索 解法一:遞歸 解法二:記憶化搜索 解法三:動態規劃 ?1.掃雷游戲 (暴力模擬) 鏈接:529. 掃雷游戲 讓我們一起來玩掃雷游戲! 給你一個大小為 m x n 二維字符矩陣…

云原生周刊:Kubernetes v1.33 要來了

開源項目推薦 Tekton Tekton 是一個開源的 K8s 原生 CI/CD 系統,它為構建、測試和部署自動化工作流提供了強大而靈活的框架。Tekton 提供了一套標準化的 API 和自定義資源(CRDs),使得開發者能夠在 K8s 集群中定義和管理 CI/CD 管…

服務新增節點、遷移筆記

文章目錄 基礎配置部分基礎配置-hosts基礎配置-jdk包準備基礎配置-jdk環境變量配置基礎配置-skywalking包 基礎配置-apollo配置。 # 文件夾及配置基礎配置-tomcat基礎配置-nginx基礎配置部分-磁盤掛載(這個也差點漏掉)。 防火墻部分防火墻部分-數據庫及腳本防火墻部分-redis防火…

第十一章:Python PIL庫-圖像處理

一、PIL庫簡介 PIL(Python Imaging Library)是一個功能強大的圖像處理庫,它提供了豐富的圖像處理功能,包括圖像的打開、處理和保存等操作。PIL支持多種圖像文件格式,如JPEG、PNG、BMP等,并且可以完成對圖像…

【編譯、鏈接與構建詳解】Makefile 與 CMakeLists 的作用

【編譯、鏈接與構建詳解】Makefile 與 CMakeLists 的作用 前言源代碼(.c、.cpp)編譯編譯的本質編輯的結果編譯器(GCC、G、NVCC 等) 目標文件(.o)什么是 .o 目標文件為什么單個 .o 目標文件不能直接執行&…

Ubuntu / Debian 創建快捷方式啟動提權

簡述 在 Linux 系統中,.desktop 文件是 桌面入口文件,用于在桌面環境(如 GNOME、KDE)中定義應用程序的啟動方式、圖標、名稱等信息。當你執行 touch idea.desktop 時,實際上創建了一個空的 .desktop 文件(…

ISIS報文

IS-IS 報文 目錄 IS-IS 報文 一、報文類型與功能 二、報文結構解析 三、核心功能特性 四、典型應用場景 五、抓包數據分析 六、總結 IS-IS(中間系統到中間系統)協議報文是用于鏈路狀態路由協議中網絡設備間交換路由信息的關鍵載體,其設…

beikeshop多商戶跨境電商獨立站最新版v1.6.0版本源碼

一.介紹 beikeshop跨境電商獨立站最新版V1.6.0源碼 多商戶 多商家 多語言 多幣結算 本博主親測搭建代碼全開源質量相對來說很穩定的 二.服務器環境 系統:CentOS、 環境:PHP7.4 Nginx 1.21 MySQL 5.6 常見插件:fileinfo ; re…

Redis批量操作詳解

一、原生批量命令(MSET) 適用場景:所有鍵的過期時間相同或無過期設置,且無需條件判斷。 方法: 將多個SET命令合并為MSET命令,但需要注意MSET的局限性(無法設置過期時間,且所有鍵值對…

Spring Boot 集成實戰:AI 工具如何自動生成完整微服務模塊

在數字化轉型的浪潮中,開發效率和質量是企業競爭力的關鍵要素。飛算 JavaAI 作為一款創新的 AI 工具,能在 Spring Boot 開發中,自動生成完整微服務模塊,極大提升開發效率。下面,我們就詳細介紹如何借助飛算 JavaAI&…

算法 | 2024最新算法:斑翠鳥優化算法原理,公式,應用,算法改進研究綜述,matlab代碼

基于斑翠鳥優化算法的原理、應用及改進研究綜述 一、算法原理 斑翠鳥優化算法(Pied Kingfisher Optimizer, PKO)是2024年由Bouaouda等人提出的一種新型仿生智能優化算法,其靈感來源于斑翠鳥的捕食行為與共生關系。算法通過模擬斑翠鳥的棲息懸停、潛水捕魚及與其他生物的共生…

RabbitMQ高級特性--重試特性

目錄 1.重試配置 2.配置交換機&隊列 3.發送消息 4.消費消息 5. 運行程序觀察結果 6. 手動確認 注意: 在消息傳遞過程中, 可能會遇到各種問題, 如網絡故障, 服務不可用, 資源不足等, 這些問題可能導致消息處理失敗. 為了解決這些問題, RabbitMQ 提供了重試機制, …

Vue 組件通信 - 中央事件總線

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue組件通信 - 中央事件總線 目錄 中央事件總線 圖示 準備工作 設置頁面元素 創建組件 總結 中央事件總線 使用vue的監聽和觸發來實現中央事件總線方式。 on監聽 emit觸發,組件按鈕綁定點擊事件&#xff0c…

5.0 WPF的基礎介紹1-Grid,Stack,button

WPF: Window Presentation Foundation. WPF與WinForms的對比如下: 特性WinFormsWPF技術基礎基于傳統的GDI(圖形設備接口)基于DirectX,支持硬件加速的矢量渲染UI設計方式拖拽控件事件驅動代碼(簡單但局限)…

QT軟件設計可考慮回答

在Qt應用中是否引入抽象類需要根據具體場景權衡&#xff0c;以下是分層建議&#xff1a; 建議采用抽象類的3個典型場景&#xff1a; 傳感器系統抽象&#xff08;強推薦&#xff09; class AbstractSensor { public:virtual ~AbstractSensor() default;virtual QVector<L…

pytorch學習(b站小土堆學習)

1 環境配置 參考鏈接 2. dir 和 help函數 dir()&#xff1a;用于查看某一模塊函數的方法 help()&#xff1a; 用于查看某方法的使用方法 3. dataset類實戰 利用Image對象打開圖片&#xff0c;利用os模塊的地址拼接組成圖片路徑 當我們用方括號訪問元素對象時&#xff0c;…

Unity TextMeshPro 實現文本逐字淡出效果

Unity TextMeshPro 實現文本逐字淡出效果 前言項目思路場景布置代碼編寫 前言 在處理角色對話時經常會用到一些文本動畫&#xff0c;正好記錄一下。使用 TextMeshPro&#xff0c;我們可以直接操作文本的頂點數據&#xff0c;實現諸如漸變、動畫等效果&#xff0c;為游戲界面和…