飛天使-linux操作的一些技巧與知識點6

文章目錄

        • 在議playbook
        • 虛擬環境中安裝ansible
        • playbook 結合變量的一些演示
          • 普通的vars_files 變量,在同級目錄創建目錄
          • 使用host_vars 定義變量
          • group_vars定義變量
          • 根據不同系統操作不同版本
          • 傳遞多個外置變量
          • 舉例幾個不同的示例
          • facts
          • when
          • loop
          • handlers 與 notify
          • tags 任務標簽
          • 異常處理
            • nginx 的異常處理
          • jinja2
          • roles

在議playbook
主要是使用不同的模塊進行編排
如果格式有問題,找chatgpt調整下格式輸出就可以
缺點是比較死板,不能成體系 
虛擬環境中安裝ansible
要在CentOS 7系統上讓Ansible使用Python 3,你可以按照以下步驟進行操作:確認你的CentOS 7系統已安裝Python 3。你可以通過在終端中運行python3 --version命令來檢查是否已安裝Python 3。安裝Python 3的pip包管理工具。在CentOS 7上,你可以使用以下命令安裝:sudo yum install python3-pip
安裝python3-devel軟件包以支持Python 3的開發庫。運行以下命令進行安裝:
sudo yum install python3-devel
創建一個Python 3虛擬環境(可選)。虛擬環境可以幫助你隔離Ansible所需的Python包與系統級安裝的Python包。使用以下命令創建虛擬環境:
python3 -m venv ansible-env
激活虛擬環境:source ansible-env/bin/activate
安裝Ansible和所需的Python包。在虛擬環境中運行以下命令:
pip install ansible
配置Ansible以使用Python 3。打開/etc/ansible/ansible.cfg文件,并找到以下行:
# interpreter_python = auto_silent
取消注釋并將其更改為以下內容:interpreter_python = /usr/bin/python3
確認Ansible使用Python 3。運行以下命令來檢查:
ansible --version
playbook 結合變量的一些演示
普通的vars_files 變量,在同級目錄創建目錄
- hosts: webserversvars_files:- ./test.ymltasks:- name: Output Varsdebug:msg:- "{{ http_packages }}"- "{{ db_packages }}"$cat test.yml
test: ansible_vars_files
http_packages: 123
db_packages: 123r返回結果
=> {"msg": [123,null]
}
注意: test.yml 一定要有這個變量,哪怕為空,否則報錯test.yml 可以被多個playbook 引用vars_files:- ./test.yml
使用host_vars 定義變量
hosts 配置文件為 
[webservers]
1.1.1.1 aaa=2 bbb=master[webservers:vars]
port=80---
- hosts: webserverstasks:- name: output variablesdebug:msg: "{{ aaa }} {{ bbb }} {{ port }}"> {"msg": "2 master 80"
}
group_vars定義變量
在項目目錄中創建 group_vars 目錄,然后在創建一個文件,文件的文件名稱要與
inventory 清單中的組名稱保持完全一致;在 group_vars 目錄中創建 webservers 文件,為 webservers 主機組設定變
量;"msg": [11,22]
}$cat group_vars/all
web: 11
web1: 22
(ansible-env)$cat t5.yml
- hosts: webserverstasks:- name: Output Vaiables"debug:msg:- "{{ web }}"- "{{ web1 }}"
根據不同系統操作不同版本

注意 www 用戶是有sudo 權限 ---
- hosts: webserversbecome: yesbecome_user: wwwtasks:# 通過fact變量判斷系統為centos才會安裝httpd- name: Centos Install httpdyum: name=httpd state=presentwhen: (ansible_distribution == "CentOS")# 通過fact變量判斷系統為ubuntu才會安裝httpd2- name: Ubuntu Install httpdyum: name=httpd2 state=presentwhen: (ansible_distribution == "Ubuntu")
傳遞多個外置變量
ansible-playbook f5.yml -i hosts -e
"web_packages=GeoIP" -e "ftp_packages=telnet"
舉例幾個不同的示例
- hosts: alltasks:- name:shell: netstat -lntpregister: System_Status- name: Get System Statusdebug: msg={{System_Status.stdout_lines}}
- hosts: webserverstasks:- name: Output variables ansible factsdebug:msg: >this default IPv4 address "{{ ansible_fqdn}}" is "{{ ansible_default_ipv4.address }}"- hosts: alltasks:- name: Ignore Falsecommand: /bin/falseignore_errors: yes- name: touch new filefile: path=/tmp/old state=touch
facts
用來采集客戶端信息,
ansible localhost -m setup -a "filter="ansible_default_ipv4""
when
when 判斷在 Ansible 中的使用頻率非常高;比如 yum 模塊可以自動檢測軟件包是
否已被安裝,而無需人為干涉,但對于有些任務則是需要進行判斷才可以實現的。
比如: web 節點都需要配置 nginx 倉庫,但其他節點并不需要,此時就會用到
when 判斷。
比如: Centos 與 Ubuntu 都需要安裝 Apache ,而 Centos 系統軟件包為
httpd ,而 Ubuntu 系統軟件包為 httpd2 ,那么此時就需要判斷主機系統,然
后為不同的主機系統安裝不同的軟件包。hen: (ansible_hostname is match("web*"))
主機名不為web的不做任何處理
loop
loop 是重復
- hosts: web
tasks:
- name: Add Users
user:
name: {{ item.name }}
groups: {{ item.groups }}
state: present
loop:
- { name: 'testuser1', groups: 'bin' }
- { name: 'testuser2', groups: 'root' }- hosts: all
tasks:
- name: Configure Rsync Server
copy: src={{ item.src }} dest=/etc/{{ item.dest }} mode={{
item.mode }}
with_items:
- {src: "rsyncd.conf", dest: "rsyncd.conf", mode: "0644"}
- {src: "rsync.passwd", dest: "rsync.passwd", mode:
"0600"}
handlers 與 notify
Handlers 是一個觸發器,同時是一個特殊的 tasks ,它無法直接運行,它需要被
tasks 通知后才會運行。比如: httpd 服務配置文件發生變更,我們則可通過
Notify 通知給指定的 handlers 觸發器,然后執行相應重啟服務的操作,如果配
置文件不發生變更操作,則不會觸發 Handlers 任務的執行;如果配置文件發生變化會調用該handlers下面的對應名稱的task
handlers:- name: Restart Httpd Serverservice: name=httpd state=restartedhandlers 注意事項
1.無論多少個 task 通知了相同的 handlers , handlers 僅會在所有
tasks 結束后運行一次。
2.只有 task 發生改變了才會通知 handlers ,沒有改變則不會觸發
handlers
3.不能使用 handlers 替代 tasks 、因為 handlers 是一個特殊的 tasks
tags 任務標簽
默認情況下, Ansible 在執行一個 playbook 時,會執行 playbook 中所有的任
務。而標簽功能是用來指定要運行 playbook 中的某個特定的任務;
1.為 playbook 添加標簽的方式有如下幾種:
對一個 task 打一個標簽
對一個 task 打多個標簽
對多個 task 打一個標簽
2. task 打完標簽使用的幾種方式
-t 執行指定tag標簽對應的任務
--skip-tags 執行除 --skip-tags 標簽之外的所有任務ansible-playbook --skip-tags install_server
xxx.yml標簽結合include  
[root@ansible ~]# cat main.yml
- hosts: localhost
tasks:
- name: Installed Tomcat8 Version
include: install_tomcat8.yml
tags: tomcat8
- name: Installed Tomcat9 Version
include: install_tomcat9.yml
tags: tomcat9
異常處理
- hosts: webserverstasks:- name: configure httpd servertemplate:src: ./httpd.conf.j2dest: /etc/httpd/conf/httpd.confnotify: Restart Httpd Server- name: Check HTTPDshell: /usr/sbin/httpd -tregister: httpd_checkfailed_when: httpd_check.rc != 0 or '"OK"' not in httpd_check.stdout- name: start httpd serverservice:name: httpdstate: startedenabled: yeshandlers:- name: Restart Httpd Serversystemd:name: httpdstate: restarted
nginx 的異常處理
- hosts: webservertasks:- name: Install Nginx Serveryum:name: nginxstate: present- name: Configure Nginx Servertemplate:src: ./nginx.conf.j2dest: /etc/nginx/nginx.confnotify: Restart Nginx Server- name: Check Nginx Servershell: /usr/sbin/nginx -tregister: check_nginxchanged_when: '"successful" in check_nginx.stdout'- name: Start Nginx Serverservice:name: nginxstate: startedenabled: yeshandlers:- name: Restart Nginx Serversystemd:name: nginxstate: restarted在這個標準格式的 Playbook 中,我們在"hosts"中指定了目標主機組,并定義了多個任務。每個任務都有一個名稱以及對應的模塊和參數。要解決場景1,即要求每臺主機的端口都不一樣,可以在 Jinja2 模板文件 (nginx.conf.j2) 中使用變量來動態設置端口號。例如,可以通過定義一個名為nginx_port的變量,并在模板文件中使用它來設置 Nginx 的監聽端口。要解決場景2,即使用 Jinja2 模板來修改被管理主機的配置文件,我們使用了template模塊。該模塊會將指定的模板文件復制到遠程主機,并在復制過程中解析文件中的變量值。在"Check Nginx Server"任務中,我們使用了changed_when來定義任務的改變條件。只有當檢查 Nginx 配置的輸出中包含"successful"時,任務才會被標記為已改變。最后,在處理程序部分,我們定義了一個名為"Restart Nginx Server"的處理程序,它會在被通知時使用systemd模塊重啟 Nginx 服務。請注意,Ansible Playbook 的格式要求嚴格,正確的縮進和符號使用非常重要。以上提供的輸出已經按照標準格式進行了調整。
jinja2
Jinja2 是 Python 的全功能模板引擎
Ansible 需要使用 Jinja2 模板來修改被管理主機的配置文件。
ansible 使用 jinja2 模板需要借助 template 模塊實現,那 template 模塊是用
來做什么的?
template 模塊和 copy 模塊完全一樣,都是拷貝文件至遠程主機,區別在于
template 模塊會解析要拷貝的文件中變量的值,而 copy 則是原封不動的將文件拷
貝至被控端。
roles
更加規范,更加標準的去靈活安排你維護的業務

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

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

相關文章

nginx中的正則表達式及location和rewrite

目錄 常用的Nginx 正則表達式 location和rewrite的區別 location location 大致可以分為三類 location 常用的匹配規則 location 優先級 location 示例說明 location優先級的總結 rewrite rewrite的功能 rewrite實現跳轉的條件 rewrite的執行順序 rewrite的語法格式…

ARM day3

題目&#xff1a;實現3盞燈的流水 代碼&#xff1a; .text .global _start _start: 設置RCC寄存器使能 LDR R0,0X50000A28 LDR R1,[R0] ORR R1,R1,#(0X1<<4) ORR R1,R1,#(0X1<<5) STR R1,[R0]設置PE10管腳為輸出模式 LDR R0,0X50006000 LDR R1,[R0] BIC R1,R1,…

文心ERNIE Bot SDK+LangChain:基于文檔、網頁的個性化問答系統

現在各行各業紛紛選擇接入大模型&#xff0c;其中最火且可行性最高的形式無異于智能文檔問答助手&#xff0c;而LangChain是其中主流技術實現工具&#xff0c;能夠輕松讓大語言模型與外部數據相結合&#xff0c;從而構建智能問答系統。ERNIE Bot SDK已接入文心大模型4.0能力&am…

如何使用Imagewheel本地搭建一個簡單的的私人圖床公網可訪問?

文章目錄 1.前言2. Imagewheel網站搭建2.1. Imagewheel下載和安裝2.2. Imagewheel網頁測試2.3.cpolar的安裝和注冊 3.本地網頁發布3.1.Cpolar臨時數據隧道3.2.Cpolar穩定隧道&#xff08;云端設置&#xff09;3.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 4.公網訪問測…

Java:字符流 文件輸出 與 讀入 方法

Java&#xff1a;字節流 文件輸出與讀入方法 并 實現文件拷貝 文章目錄 字符流FileReaderFileWrite 字符流 字符流底層就是字節流。 字符流 字節流 字符集 特點&#xff1a; 輸入流&#xff1a;一次讀入一個字節&#xff0c;遇到中文時&#xff0c;一次讀多個字節。 輸出流…

POJ-2777 Count Color

經典區間染色板子題 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N 1e610; struct Segment{int l,r,id; }tr[N<<2]; int n,color,m;void pushdown(int u){if(tr[u].id){tr[u<<1].id tr[u<&l…

P5707 【深基2.例12】上學遲到題解

題目 學校和 yyy 的家之間的距離為s米&#xff0c;而 yyy 以v米每分鐘的速度勻速走向學校。 在上學的路上&#xff0c;yyy 還要額外花費10分鐘的時間進行垃圾分類。 學校要求必須在上午8:00到達&#xff0c;請計算在不遲到的前提下&#xff0c;yyy 最晚能什么時候出門。 由…

python中PDF2docx運行時出現錯誤提示:pixmap must be grayscale or rgb to write as png,怎樣解決?

這是由于pixmap&#xff08;像素圖&#xff09;的顏色空間不是灰度或RGB而導致的。可能是因為PDF2docx試圖將不支持的顏色空間轉換為PNG格式造成的。 要解決此問題&#xff0c;可以嘗試以下幾個步驟&#xff1a; 1.升級pdf2docx到最新版本。有時候最新版本已經解決了這個問題…

【影像組學入門百問】1#---#3

#1-影像組學的常規步驟是怎么樣的&#xff1f; 傳統影像組學的步驟包括&#xff1a; 1、影像獲取及預處理&#xff1b; 2、感興趣區(ROI)標定&#xff1b; 3、影像組學特征提取&#xff1b; 4、特征降維&#xff1b; 5、模型建立、優化。 #2-做影像組學用的電腦硬件配置有什么…

計算機視覺之手勢、面部、姿勢捕捉以Python Mediapipe為工具

計算機視覺之手勢、面部、姿勢捕捉以 Python Mediapipe為工具 文章目錄 1.Mediapipe庫概述2.手勢捕捉(hands)3.面部捕捉(face)4.姿勢捕捉(pose) 1.Mediapipe庫概述 Mediapipe是一個開源且強大的Python庫&#xff0c;由Google開發和維護。它提供了豐富的工具和功能&#xff0c…

ExecuteScalar()方法

ExecuteScalar()方法 大家好&#xff0c;我是免費搭建查券返利機器人賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天&#xff0c;我們將深入探討數據庫編程中的一個關鍵主題——ExecuteScalar()方法&#xff…

stm32學習總結:3、Proteus8+STM32CubeMX+MDK很有搞頭

stm32學習總結&#xff1a;3、Proteus8STM32CubeMXMDK很有搞頭 文章目錄 stm32學習總結&#xff1a;3、Proteus8STM32CubeMXMDK很有搞頭一、前言二、資料收集三、實際案例-點燈1、Proteus8安裝2、Proteus創建stm32F013C6項目并添加外圍LED電路3、STM32CubeMX配置F103C6引腳生成…

12.10_黑馬數據結構與算法筆記Java

目錄 058 鏈表 e10 判環算法1 thinking&#xff1a;什么是空指針&#xff1f; 058 鏈表 e10 判環算法2 059 數組 e01 合并有序數組1 059 數組 e01 合并有序數組2 060 隊列 鏈表實現1 061 隊列 鏈表實現2 062 隊列 環形數組實現 方法1-1 063 隊列 環形數組實現 方法1-2…

帶有 RaspiCam 的 Raspberry Pi 監控和延時攝影攝像機

一、說明 一段時間以來&#xff0c;我一直想構建一個運動激活且具有延時功能的樹莓派相機&#xff0c;但從未真正找到我喜歡的案例。我在thingiverse上找到了這個適合樹莓派和相機的好案例。它是為特定的魚眼相機設計的&#xff0c;但從模型來看&#xff0c;我擁有的廉價中國魚…

【Vulnhub 靶場】【Hackable: III】【簡單 - 中等】【20210602】

1、環境介紹 靶場介紹&#xff1a;https://www.vulnhub.com/entry/hackable-iii,720/ 靶場下載&#xff1a;https://download.vulnhub.com/hackable/hackable3.ova 靶場難度&#xff1a;簡單 - 中等 發布日期&#xff1a;2021年06月02日 文件大小&#xff1a;1.6 GB 靶場作者&…

k8s常用操作命令

目標 了解 Kubernetes基礎命令。對已部署的應用故障排除。 基礎命令&#xff1a;create&#xff0c;delete&#xff0c;get&#xff0c;run&#xff0c;expose&#xff0c;set&#xff0c;explain&#xff0c;edit create 命令&#xff1a;根據文件或者輸入來創建資源 # 創建…

消融實驗:深度學習的關鍵分析工具

消融實驗&#xff1a;深度學習的關鍵分析工具 在深度學習和機器學習領域&#xff0c;消融實驗&#xff08;Ablation Study&#xff09;是一種重要的實驗方法&#xff0c;用于理解和評估模型的各個組成部分對其整體性能的貢獻。通過這種方法&#xff0c;研究人員可以更深入地了…

Docker | 自定義網絡

?作者簡介:大家好,我是Leo,熱愛Java后端開發者,一個想要與大家共同進步的男人???? ??個人主頁:Leo的博客 ??當前專欄:Docker系列 ?特色專欄: MySQL學習 ??本文內容: Docker | 自定義網絡 ??個人知識庫: 知識庫,歡迎大家訪問 1.前言 大家好,我是Leo哥…

當視覺遇到毫米波雷達:自動駕駛的三維目標感知基準

? 文章&#xff1a;Vision meets mmWave Radar: 3D Object Perception Benchmark for Autonomous Driving 作者: Yizhou Wang, Jen-Hao Cheng, Jui-Te Huang , Sheng-Yao Kuan , Qiqian Fu , Chiming Ni 編輯&#xff1a;點云PCL 歡迎各位加入知識星球&#xff0c;獲取PDF…

vector類

> 作者簡介&#xff1a;?舊言~&#xff0c;目前大二&#xff0c;現在學習Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右銘&#xff1a;松樹千年終是朽&#xff0c;槿花一日自為榮。 > 目標&#xff1a;熟悉vector庫 > 毒雞湯&#xff1a;從人生低谷…