網站集群批量管理-Ansible劇本與變量

復盤內容:鏈接指北

查看ansible命令文檔

ansible-doc -s systemd

一、劇本

何為劇本:

playbook 文件,用于長久保存并且實現批量管理,維護,部署的文件. 類似于腳本存放命令和變量

劇本yaml格式,yaml格式的文件:空格,冒號.

劇本未來我們批量管理,運維必會的內容.

ans劇本ans ad-hoc
共同點批量管理,使用模塊批量管理,使用模塊
區別重復調用不是很方便,不容易重復
應用建議(應用場景)部署服務,多個步驟的任務測試模塊,臨時性任務

案例:腳本書寫格式

在這里插入圖片描述

- hosts: alltasks:- name: 01 打開冰箱門shell: echo 1 >>/tmp/bingxiang.log- name: 02 把大象放入冰箱shell: echo 2 >>/tmp/bingxiang.log- name: 03 關上冰箱的門shell: echo 3 >>/tmp/bingxiang.log
#書寫劇本 注意以.yml或.yamt結尾 01.show.yml
#-i 指定主機清單文件,如果不寫默認調用/etc/ansible/hosts
ansible-playbook -i hosts 01.show.yml

在這里插入圖片描述

執行的時候有奶牛:

可以刪除軟件或修改ansible.cfg配置進行關閉 #nocows =1去掉注釋即可

書寫Ans playbook注意事項:

  • 同一個層級的內容對齊的0
  • 不同層級的通過2個空格對齊
  • 不能使用tab鍵

二、劇本案例

1、案例01: 創建目錄并分發文件

創建目錄/server/files/etc/hosts文件并且發送過去/server/files

- hosts: alltasks:- name: 01 創建目錄/server/filesfile: path=/server/files state=directory- name: 02 分發文件copy: src=/etc/hosts dest=/server/files

2、案例02:分發軟件包,安裝軟件包,啟動服務

zabbix-agent軟件包(下載)—》 安裝軟件包—》配置(略)—》啟動開機自啟動

- hosts: alltakes: - name: 01 軟件包下載get_url: url: https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.13-release1.el7.x86_64.rpmdest: /tmp/validate_certs: no- name: 02 安裝軟件包yum:name:/tmp/zabbix-agent-6.0.13-release1.el7.x86_64.rpmstate=insatlled- name: 03 配置 debug:msg: "進行配置zabbix-agent"- name: 04 啟動systemd:name: zabbix-agentenabled: yesstate: started
ansible all -m shell -a 'ps -ef | grep zabbix'

不能使用-m command。在 Ansible 的命令模塊中,你需要以單個字符串的形式指定要執行的命令,而不能使用管道符號 |

3、案例03:nfs服務

  • nfs服務端:在backup上部署nfs服務,共享/backup-nfs目錄,all_squash,匿名用戶:nfsnobody
  • nfs客戶端:web掛載 /ans-upload目錄掛載nfs服務端共亭的/backup-nfs(永久掛載)

寫劇本必備-列出流程

服務端流程:

  • 部署nfs-utils,rpcbind
  • 修改配置文件
  • 創建共享目錄并改所有者
  • 啟動服務rpcbind,nfs(注意順序)

客戶端流程:

  • 安裝nfs-utils2.
  • 掛載與永久掛載
- hosts: nfstasks: - name: 01 部署nfs-utils,rpcbindyum: name: nfs-utilsstate: installed- name: 02 修改配置文件lineinfile:path: /etc/exportsline: "/backup-nfs/ 10.0.0.0/24(rw)"create: true- name: 03 創建共享目錄并且修改權限file: path: /backup-nfs/state: directoryowner: nfsnobodygroup: nfsnobody- name: 04-1 依次啟動服務rpcsystemd: name: rpcbindenabled: yesstate: started- name: 04-2 依次啟動服務nfssystemd: name: nfsenabled: yesstate: started
- hosts: webtasks: - name: 01 部署nfs-utils,rpcbindyum: name: nfs-utilsstate: installed- name: 02 永久掛載mount:src: 10.0.0.31:/backup-nfs/path: /data/fstype: nfsstate: mounted

三、Ansible中的變量

變量無處不在,在ans中大部分地方都可以定義變量.

比較常用的創建變量的地方:劇本中,類似于功能,共用的變量文件.

可以定義變量的地方說明
在劇本文件中定義比較常用。僅僅限于當前的play使用,
register變量(注冊變量)ip= hostname -I,實現腳本中反引號的功能,可以獲取命令結果
變量文件,根據主機清單分分組進行定義變量如果多個劇本,使用相同的變量,大型的劇本roles
inventory主機清單中定義變量未來可以用于批量修改主機使用,其他很少用了
命令號中幾乎不用
facts變量一般用于獲取主機基本信息:ip,主機名,系統(centos/ubuntu)如果不需要可以關閉,用于加速劇本的執行

3.1、劇本中的變量

在劇本play中定義變量應用:

  1. 僅僅在當前play生效.
  2. 一般用來存放路徑,用戶名,ip地址,類似于之前使用的腳本.
  3. 注意引號使用.

使用變量的時候如果變量是某個選項的開頭,則變量引用的時候需要加上雙引號.

#dir就是變量,變量的內容:右邊的內容
?
- hosts: allvars:dir: /oldboy/lidao/upload/tasks:- name: mkdirfile:path: "{{ dir }}"state: directory

面試常問:使用變量的時候如果變量是某個選項的開頭,則變量引用的時候需要加上雙引號.

3.2、共用變量-變量文件

[root@m01 /server/scripts/playbook]# cat 05.vars.yml
- hosts: allvars_files: ./vars.ymltasks:- name: filefile:path: "{{ dir  }}/{{ user }}-{{ file }}"state: touch

3.3、共用變量-根據主機組使用變量

group_vars根據主機清單的分組去匹配

group_vars/lb/vars.yml #存放lb組的變量web/vars.yml #存放web組的變量data/vars.yml #存放xxx組的變量all/vars.yml #所有主機共用的變量
未來一般使用all分組即可,把所有變量存放在一起,供劇本使用
group_vars/lb/均為目錄,vars.yml為文件
[root@m01 ~]# cat vars.ymluser: www
nfs_dir: /nfs_backup
web_mount_dir: /web_nfs
nfs_server: 172.16.1.41
rsync_pass: 1

3.4、facts變量

運行劇本的時候ans會收集每個主機的本信息,這些信息形成的變量叫做facts變量,

facts變量setup模塊獲取

#獲取web主機上的setup模塊變量
ansible -i /etc/ansible/hosts web -m setup
常用fact變量
ansible_hostname  #主機名
ansible_memtotal_mb #內存大小(總計) 單位mb
ansible_processor_vcpus     #cpu數量
ansible_default_ipv4.address  #默認的網卡ip eth0
ansible_distribution      #系統發行版本名字
ansible_processor_cores   #cpu核心數

3.5、register變量注冊變量

本質上就是用來實現腳本中的反引號功能

用戶通過命令獲取的內容都存放到Register變量

- hosts: alltasks:- name: get dateshell: date +%Fregister: result- name: print result 變量內容debug:msg: |"register變量的全部內容是:{{result.stderr }}""register變量的精確的內容是:“{{result.stdout}}”

register注冊變量:
變量.stdout 獲取輸出即可.

json形式數據.
key: value
鍵: 值
變量: 內容
date +%F
stdout部分是我們想要的內容.
register變量result.
result.stdout #std standard output 標準輸出.

符號說明
msg:中的|表示下面的內容是多行. |也可以用于其他模塊中.

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

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

相關文章

如何在Dify中安裝運行pandas、numpy庫(離線、在線均支持,可提供遠程指導)

pandas和numpy這兩個庫是數據科學和數據分析中經常使用的工具包,原生的Dify無法直接使用這兩個庫,需要手動安裝后才可以使用。本文將介紹如何在Dify中安裝pandas和numpy,并在代碼執行節點中運行使用pandas和numpy。 Dify的代碼執行節點中的py…

Helm核心概念與常見操作介紹

在管理Kubernetes集群里的應用時,Helm能幫上大忙,它把應用的部署、升級和管理變得簡單多了,有如是Kubernetes的 “應用商店”。 Helm的三個重要概念 三大概念最直接的理解:Helm 安裝 charts 到 Kubernetes 集群中,每…

rkmpp 解碼 精簡mpi_dec_test.c例程

rkmpp 解碼流程(除 MPP_VIDEO_CodingMJPEG 之外) 源碼 輸入h264碼流 輸出nv12文件 /** Copyright 2015 Rockchip Electronics Co. LTD** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file exce…

用一個實際例子快速理解MCP應用的工作步驟

已經有很多的文章介紹MCP server,MCP Client工作原理,這里不做太多介紹。但是很多介紹都只是側重介紹概念,實際的工作原理理解起來對初學者還是不太友好。本文以一個智能旅游咨詢系統為例,詳細說明在利用 Model Context Protocol&…

【LeetCode 題解】數據庫:1321.餐館營業額變化增長

一、問題描述 本題給定了一個名為 Customer 的表,記錄了餐館顧客的交易數據,包括顧客 ID、姓名、訪問日期和消費金額。作為餐館老板,我們的任務是分析營業額的變化增長情況,具體來說,就是計算以 7 天(某日…

【Python】讀取xlsb或xlsx的單一或連續單元格工具類

代碼主要來自Kimi.ai,有修改。 優先使用工作表序號索引工作表,序號從1開始。 運行需要先安裝openpyxl和pyxlsb兩個第三方庫。 import openpyxl from openpyxl.utils import range_boundaries from pyxlsb import open_workbook as open_xlsbclass Exc…

【藍橋杯】動態規劃:背包問題

這篇文章主要記錄動態規劃方面的學習。 動態規劃的核心思想: 把大問題分解成小問題,記住小問題的解,避免重復計算。 動態規劃(DP)的三大特點: ①最優子結構:大問題的最優解可以由小問題的最優解推導出來 ②重疊子問題:在求解過程中會反復遇到相同的小問題 ③無后效…

華為數字芯片機考2025合集1已校正

單選 1.以下低功耗措施中,哪種不是降低電路翻轉率的方法? A.在不進行算術運算的時候,使這些模塊的輸入保持不變,不讓新的操作數進來 B.采用Gray 碼或One‐hot 碼作為狀態機編碼 C.減少電路中的glitch D.重新安排“if‐else”表達…

React 列表渲染

開發環境:Reacttsantd 你可能經常需要通過 JavaScript 的數組方法 來操作數組中的數據,從而將一個數據集渲染成多個相似的組件。在這篇文章中,你將學會如何在 React 中使用 filter() 篩選需要渲染的組件和使用 map() 把數組轉換成組件數組。 …

力扣刷題DAY11(動態規劃-線性DP)

一、最長上升子序列 300. 最長遞增子序列 &#xff08;一&#xff09;初版代碼 class Solution { public:int lengthOfLIS(vector<int>& nums) {int n nums.size();vector<int> f(n 1, 1); //初始化為1&#xff0c;因為每個數至少可以作為一個單獨的序列in…

DFS--

數字的全排列 #include <bits/stdc.h> using namespace std;//最大的排列數目 const int N10; int n; //存儲排列的路徑 int path[N]; //標記數字是否已經被使用 bool st[N];void dfs(int u){//到達遞歸邊界&#xff0c;輸出一個排列if(un){//輸出循環for(int i0; i<…

棧與隊列及其基礎應用

一.棧 1.棧的定義 棧是一種特殊的線性表&#xff0c;其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂&#xff0c;另一端稱為棧底。棧中的數據元素遵守后進先出LIFO&#xff08;Last In First Out&#xff09;的原則。其結構可以參考羽毛…

openEuler-22.03-LTS-SP3 編譯安裝 Greenplum-db 6.20.0

openEuler-22.03-LTS-SP3 編譯安裝 Greenplum-db 6.20.0 1、配置 yum 華為源2、安裝依賴3、源碼安裝 openssl 1.0.1u3.1、openssl 1.1.1 降級到 openssl 1.0.1 4、源碼安裝 python 2.75、使用 pip3 安裝 Python 相關依賴6、編譯安裝 Greenplum-db 6.20.06.1、修改配置6.2、基于…

機器學習02——概要

一、簡介 機器學習是一門在沒有明確編程的情況下讓計算機學習的科學。 監督學習是有目標的&#xff0c;輸入數據對應明確的輸出&#xff1b;無監督學習則是“探索”型的&#xff0c;模型的目標是從數據中發現潛在的模式或結構&#xff0c;而不需要預先知道標簽。 二、機器學…

swift-08-屬性、匯編分析inout本質

一、Swift中跟實例相關的屬性可以分為2大類 1.1 存儲屬性&#xff08; Stored Property&#xff09; 類似于成員變量這個概念 存儲在實例的內存中 結構體、類可以定義存儲屬性 枚舉不可以定義存儲屬性&#xff08;因為枚舉只存儲關聯值和case&#xff09; 1.2 計算屬性&am…

【HarmonyOS Next之旅】DevEco Studio使用指南(十二)

目錄 1 -> Code Linter代碼檢查 2 -> 配置代碼檢查規則 3 -> 查看/處理代碼檢查結果 1 -> Code Linter代碼檢查 Code Linter針對ArkTS/TS代碼進行最佳實踐/編程規范方面的檢查。 可根據掃描結果中告警提示手工修復代碼缺陷&#xff0c;或者執行一鍵式自動修復…

前端vue項目打包成桌面端exe應用

主要 使用 Electron將 vue項目打包為 exe 1.首先下載Electron git clone https://github.com/electron/electron-quick-start cd electron-quick-start npm install安裝完依賴之后 npm start運行成功 注意&#xff1a;如果你的項目使用了VueRouter&#xff0c;那么切記&…

基于springcloud的“微服務架構的巡游出租管理平臺”的設計與實現(源碼+數據庫+文檔+PPT)

基于springcloud的“微服務架構的巡游出租管理平臺”的設計與實現&#xff08;源碼數據庫文檔PPT) 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;springcloud 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體結構圖 E-R實體關系圖…

新一代達夢官方管理工具SQLark:可視化建表操作指南

在數據庫管理工作中&#xff0c;新建表是一項基礎且頻繁的操作。SQLark 的可視化建表功能為我們提供了一種高效、便捷且絲滑流暢的建表新體驗。一起來了解下吧。 SQLark 官方下載鏈接&#xff1a;www.sqlark.com 新建表作為常見的功能&#xff0c;相比其他管理工具&#xff0c;…

Scala相關知識學習總結6

1、集合計算高級函數說明 - 過濾&#xff1a;遍歷集合&#xff0c;提取滿足特定條件的元素組成新集合。 - 轉化/映射&#xff08;map&#xff09;&#xff1a;將集合里的每個元素應用到指定函數進行轉換。 - 扁平化&#xff1a;文檔未詳細闡述其具體含義和操作。 - 扁平化映射&…