linux中ansible整理筆記

一、工作模式

1. adhoc臨時命令

語法: ansible 主機或者組列表 -m 模塊 -a “參數”

2. playbook

語法:

ansible-playbook xxx.yml

二、模塊

1. ping

2.command:默認模塊(不支持重定向,管道)

3.shell:類似command,但是支持shell特性,如管道,重定向

4.script:用于在遠程主機上執行腳本

5.file:可以創建文件,目錄,鏈接等,還可以修改權限,屬性等

6.copy:用于將文件從控制端拷貝到被控制端

7.fetch:與copy模塊相反,copy是上傳,fetch是下載

8.lineinfile:用于確保目標文件中有一行內容

9.replace:inlinefile會替換一行,replace可以替換關鍵詞

10.user:實現linux用戶管理

11.group:創建、刪除組

12.yum_repository:用于配置yum

13.yum:用于rpm軟件包管理,如安裝、升級、卸載

14.service:用于控制服務

15.lvg:創建,刪除卷組,修改卷大小

16.lvol:創建,刪除邏輯卷,修改邏輯卷大小

17.filesystem:格式化,也就是創建文件系統

18.mount:掛載文件系統

19.parted:硬盤分區管理

20.setup:facts變量

21.debug:打印指定內容

22.firewalld:防火墻配置

23.template:可以上傳具有特定格式的文件(如文件中包含變更)

三、變量

1.預定義變量(facts)

1.1 通過setup模塊獲取

1.2 常用變量

ansible_hostname:主機名
ansible_all_ipv4_addresses:所有的ipv4地址
ansible_bios_version:BIOS版本信息
ansible_memtotal_mb:總內存大小
ansible_eth0.ipv4.address:eth0的ip地址

2.自定義變量

2.1 用戶自己定義的變量

2.2定義位置

2.2.1 主機清單文件中定義

2.2.2 playbook中定義

2.2.3 專門的變量文件中定義

2.2.4 在角色的defaults目錄和vars目錄中定義

四、錯誤處理

1.使用ignore_errors忽略錯誤

2.在task級別忽略,只針對某一任務

3.在play級別定義,針對play中所有任務

五、觸發執行的任務

1.通過handlers定義觸發執行的任務

2.handlers中定義的任務,不是一定會執行的

3.在tasks中定義的任務,通過notify關鍵通知handlers中哪個任務要執行

4.只有tasks中的任務狀態是changed才會進行通知

六、條件執行

1.使用when關鍵字進行條件判斷

2.常用操作符:

==,!=,>, <, >= ,<=

3.多條件:and, or

4.取反:not關鍵字

七、注冊變量

1.使用register關鍵字

2.用于捕獲和保存任務執行結果

八、任務塊

1.通過block關鍵字,將多個任務組合到一起

2.將整個block任務組,一起控制是否要執行

3.與rescue,always連用

3.1 block中的任務都成功,rescue的任務不執行

3.2 block中的任務出現失敗(failed),rescue的任務執行

3.1 block中的任務不論如何,always的任務總是執行

九、循環

1.使用loop關鍵字

2.相當于shell中的for循環

3.循環用到的變量名是固定的,叫item

十、角色role

1.主要目的:代碼重用

2.創建命令: ansible-galaxy init

3.角色目錄說明:

3.1 README.md

3.2 tasks

3.3 handlers

3.4 files

3.5 templates

3.6 vars

3.7 defaults

3.8 meta:包含一個main.yml文件,用于描述角色元信息,例如作者、依賴等

3.9 tests:存放一些測試代碼和測試用例文件

139bcfadd8ca4bcfa30980c9503cbc86.png

隨著ansible模塊越來越多,每次把ansible程序和模塊打包在一起,軟件的更新就特別麻煩,

軟件更新了,模塊可能跟不上,或者模塊更新了,而軟件更新又跟不上模塊的更新,所以

目前發展的方向是“軟件和模塊分離”

ansible軟件包為ansible-core(該軟件包中包含ansible核心命令和核心模塊),其他更多模塊單獨發布。

而模塊和插件等都單獨發布,也比較亂,所以設計了新的collection概念,一個collection目錄中可以把某一類的模塊,角色,插件都封裝在一起,下載collection就可以一次性下載所有相關的模塊,角色,插件。

紅帽會不定期發布一個容器,將ansible核心軟件和更多collection封裝的模塊都一起放到一個容器中,簡直是新手的福音,用戶不用關心軟件的安裝,也不用關心模塊從哪兒下載。

用戶只要啟動一個容器就可以搞定一切,然后通過ansible-navigator管理這個容器。

可以參考以下網站:

github地址:

GitHub - ansible/ansible-navigator: A text-based user interface (TUI) for Ansible.

配置文檔網址:Configuration - Ansible Navigator Documentation

eb208da3c0f04a19bf4efd0a58965599.png

在nginx中使用:

#適用于RHEL9
1)sudo yum -y install ansible-core ansible-navigator
2) mkdir ~/ansible && cd ~/ansible #目錄名稱并不限制必須為ansible,要視情況而定,但是目錄下的ansible.cfg和inventory文件是不可或缺的
3) vim ansible.cfg
[defaults]
inventory=inventory #清單文件
role_path=roles #角色目錄
remote_user=xxx #遠程用戶
[privilege_escalation] #sudo提權
become=True #是否提權
become_method=sudo #提權方式
become_user=root #提權用戶
become_ask_pass=False #是否需要密碼4)vim inventory
略。。。
5) mkdir roles # 創建角色目錄
6)ansible all -m ping #測試是否能夠ping通所有inventory記錄的主機
7)vim ~/.ansible-navigator.yml
--- 
ansible-navigator: execution-environment: image: registry.lab.example.com:5000/ee-supported-rhel8:latest pull: policy: missing 8) sudo vim /etc/containers/registries.conf #修改容器配置。。。略
[registries.search] 
registries = ['registry.lab.example.com:5000'] 
[registries.insecure] 
registries = ['registry.lab.example.com:5000'] 
9)podman login registry.lab.example.com
按照題目提示輸入用戶名,密碼
10)ansible-navigator images #下載鏡像
11)podman images #查看鏡像

# 注意:image的值看考題給的是什么,不要照抄

例題1-自定義角色:

根據下列要求,在/home/alice/ansible/roles 中創建名為httpd的角色:

1)安裝 httpd 軟件,并能夠開機自動運行

2)開啟防火墻,并允許 httpd 通過

3)使用模板 index.html.j2,用來創建/var/www/html/index.html 網頁, 內容如下(HOSTNAME是受管理節點的完全域名,IPADDRESS是IP地址):

Welcome to HOSTNAME on IPADDRESS

然后創建劇本 /home/alice/ansible/myrole.yml,為webtest主機組啟用httpd角色。

ansible目錄下的ansible.cfg文件(注意要定義roles_path)和inventory文件,略。。。
1) cd ~/ansible
2) mkdir roles
3) cd roles
4) ansible-galaxy init httpd
5) ls httpd
6) vim httpd/templates/index.html.j2
Welcome to {{ansible_fqdn}} on {{ansible_enp1s0.ipv4.address}} 
7) vim httod/tasks/main.yml #編輯任務文件
---  
- yum:name: httpd
- service:name: httpdstate: startedenabled: yes
- template:src: index.html.j2dest: /var/www/html/index.html
8) cd ~/ansible
9) vim myrole.yml
---  
- hosts: webtestroles:- httpd  
10) ansible-playbook myrole.yml #執行劇本

如果是從網絡資源下載角色:

網址:Ansible Galaxy

ad2e3214a3be4ba09bc6d4143a763a0f.png

#1.通過galaxy 安裝角色與collection 
創建劇本~/ansible/roles/down.yml,用來從以下 URL 下載角色, 
并安裝到~/ansible/roles 目錄下: 
http://server1.lab0.example.com/roles/haproxy.tar 此角色名為 haproxy 
http://server1.lab0.example.com/roles/myphp.tar 此角色名為 myphp 從http://server1.lab0.example.com/materials/下載如下 collection 并安裝到
~/ansible/collections 目錄下(僅適用于 RHEL9): 
ansible-posix-1.5.1.tar.gz 
community-general-6.3.0.tar.gz 解題參考: 
# ~/ansible目錄下
1) vim  roles/down.yml 
- src: http://server1.lab0.example.com/roles/haproxy.tar name: haproxy 
- src: http://server1.lab0.example.com/roles/myphp.tar name: myphp 2) ansible-galaxy  install -r  roles/down.yml #從上圖可知,ansible-galaxy collection install 網絡角色,且有下載路徑要求的使用下方命令,注意使用"-p"參數
3) ansible-galaxy collection install \ 
http://server1.lab0.example.com/materials/ansible-posix-1.5.1.tar.gz \ 
-p ~/ansible/collections 4)ansible-galaxy collection install \ 
http://server1.lab0.example.com/materials/community-general-6.3.0.tar.gz \ 
-p ~/ansible/collections 注意:http://server1.lab0.example.com為假設場景中的linux真機#使用上述通過galaxy下載的角色 
1)vim web.yml
--- 
- hosts: test05                          roles: - haproxy                            
- hosts: webtest                         roles: - myphp                              
2) ansible-playbook web.yml 
3)使用curl命令查看效果

4.在playbook,通過role引入要使用的模塊

十一、加解密

1.加密:

ansible-vault encrypt 文件

2.解密:

ansible-vault decrypt 文件

3.改密碼:

ansible-vault rekey 文件

4.執行加密的playbook:

ansible-playbook --ask-vault-password 文件

十二、特殊主機清單變量

1.ansible_ssh_user:指定登錄遠程主機的用戶名

2.ansible_ssh_pass:指定登錄遠程主機的密碼

3.ansible_ssh_port:指定登錄遠程主機的端口號

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

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

相關文章

IP地址顯示“不安全”怎么辦|已解決

解決IP地址顯示“不安全”的問題&#xff0c;通常需要確保網站或服務使用HTTPS協議進行加密通信&#xff0c;可以通過部署SSL證書來解決&#xff0c;以下是具體的解決步驟&#xff1a; 1 申請IP地址SSL證書&#xff1a;網站管理員應向證書頒發機構&#xff08;CA&#xff09;申…

網絡拓撲—WEB-IIS服務搭建

文章目錄 WEB-IIS服務搭建網絡拓撲配置網絡IISPC 安裝IIS服務配置IIS服務&#xff08;默認站點&#xff09;PC機訪問網頁 配置IIS服務&#xff08;新建站點&#xff09;PC機訪問網頁 WEB-IIS服務搭建 網絡拓撲 //交換機忽略不計 IIS服務IP&#xff1a;192.168.1.1 PC機IP&…

人類交互2 聽覺處理和語言中樞

人類聽覺概述 人類聽覺是指通過耳朵接收聲音并將其轉化為神經信號&#xff0c;從而使我們能夠感知和理解聲音信息的能力。聽覺是人類五種感覺之一&#xff0c;對我們的日常生活和交流至關重要。 聽覺是人類交流和溝通的重要工具。通過聽覺&#xff0c;我們能夠聽到他人的語言…

安裝錯誤提示Please run MaterialLibrary2018.msi first或者其他MaterialLibrary版本

打開autoremove&#xff0c;系統檢查&#xff0c;點擊開始檢查。檢查完成修復。 可以解決部分該問題&#xff0c;如果沒解決的請咨詢

Linux中的文件描述符

1.系統調用接口和庫函數的關系 函數&#xff1a;fopen fclose fread fwrite 都是c標準庫當中的函數&#xff0c;也就是用戶操作接口中ibc系統調用&#xff1a;open close read write 都是系統調用提供的接口 c語言中接口底層封裝的都是系統調用接口 FILE* stdin stdout stderr…

[POI2008] STA-Station/洛谷P3478(樹形dp)

[ P O I 2008 ] S T A ? S t a t i o n ( 樹形 d p ) \Huge{[POI2008] STA-Station(樹形dp)} [POI2008]STA?Station(樹形dp) 題目鏈接&#xff1a;[P3478 POI2008] STA-Station - 洛谷 文章目錄 題意思路標程 題意 給定一個 n n n個點的樹&#xff0c;請求出一個結點&#…

js無感刪除url搜索部分,不刷新頁面

如&#xff1a;把下面的網址 http://127.0.0.1:5173/?code3b9cc36e&state 改成 http://127.0.0.1:5173 history.pushState(null, 網站標題, location.origin)

TikTok越獄檢測之二 <調試器檢測>

來了&#xff0c;調試器檢測。總結如下,多多指教: 檢測app 是否被附加調試: 原理就是檢測父進程是否 launchd啟動&#xff0c;在OS X和iOS 系統中&#xff0c;用戶環境始于launchd&#xff0c;為用戶態出現的第一個進程&#xff0c;為所有的進程的祖先&#xff0c;launchd 的進…

Python模塊、包和異常處理

大家好&#xff0c;在當今軟件開發領域&#xff0c;Python作為一種簡潔、易讀且功能強大的編程語言&#xff0c;被廣泛應用于各種領域。作為一名測試開發工程師&#xff0c;熟練掌握Python的模塊、包和異常處理是提高代碼可維護性和錯誤處理能力的關鍵。本文將和大家一起探討Py…

SAP-MRP和采購申請

1、如果采購申請是手工創建的,跑MRP會不會被覆蓋? 創建一個采購申請18089476,然后運行MRP-MD03,再用MD04查看下 從上圖看,手工創建的采購申請被打上*號,沒有被覆蓋掉。 2、如果采購申請被審批了,會不會被覆蓋掉? 首先創建一個獨立需求MD61 然后庫存消耗掉為0,運行M…

shell實現ssh服務防止暴力破解 —— 筑夢之路

實現原理 對系統登陸日志文件/var/log/secure&#xff0c;進行數據篩選&#xff0c;查找登陸失敗的ip地址&#xff0c;然后將ip加入到黑名單中。 腳本內容 #!/bin/bash# 獲取登陸失敗的ip地址failedcat /var/log/secure|grep "Failed"|awk {print $11}|sort|uniq …

普源精電收購耐數電子——用“鈔能力”拿下“量子”?

「量子市界」聚焦量子前沿&#xff0c;揭秘市場動態┃2024年4月30日&#xff0c;普源精電新增“量子科技”概念。 似乎一夜之間&#xff0c;新增“量子科技”概念的上市企業如雨后春筍般登場——普源精電就是其一。普源精電本就持有耐數電子32.26%股權&#xff0c;于4月2日發布…

c4d云渲染是工程文件會暴露嗎?

在數字創意產業飛速發展的今天&#xff0c;C4D云渲染因其高效便捷而備受歡迎。然而&#xff0c;隨著技術應用的深入&#xff0c;人們開始關注一個核心問題&#xff1a;在享受云渲染帶來的便利的同時&#xff0c;C4D工程文件安全嗎&#xff1f;是否會有暴露的風險&#xff1f;下…

【如何讓論文中摘要后面的內容不出現在目錄中】

首先選擇摘要二字&#xff0c;設置為一級標題&#xff0c;然后選擇摘要后面的內容設置為正文樣式&#xff0c;再選擇這一部分看一下是不是都是正文大綱級別&#xff0c;如果是那就可以了。 具體流程如下 1、選擇摘要二字&#xff0c;設置為一級標題樣式 2、選擇摘要后面的文…

x264 碼率控制原理:rate_estimate_qscale 函數

rate_estimate_qscale 函數 原理 函數功能:根據目前使用的實際比特數更新一幀的qscale;是一個復雜的決策過程,需要考慮多種因素,如幀類型、編碼的復雜度、目標比特率、緩沖區大小等,以確保視頻質量和文件大小之間的平衡。函數參數分析:x264_t *h :編碼器上下文信息結構…

擴散模型學習1

DDPM 總體訓練原理 https://www.bilibili.com/video/BV1nB4y1h7CN/?spm_id_from333.337.search-card.all.click&vd_sourcef745c116402814185ab0e8636c993d8f 講得很好&#xff1a;每次都是輸入t和noise-x的圖像&#xff0c;預測noise之后得到和加入的noise比較&#xff1b…

LLM實戰:當網頁爬蟲集成gpt3.5

1. 背景 最近本qiang~關注了一個開源項目Scrapegraph-ai&#xff0c;是關于網頁爬蟲結合LLM的項目&#xff0c;所以想一探究竟&#xff0c;畢竟當下及未來&#xff0c;LLM終將替代以往的方方面面。 這篇文章主要介紹下該項目&#xff0c;并基于此項目實現一個demo頁面&#x…

Java并發: 鎖和同步

在Java并發: 面臨的挑戰那一篇中我們提到鎖和同步是實現并發安全(可見性/原子性)的方法之一。這一章我們來講講Java中的鎖和同步的各種工具&#xff0c;包括: LockSupportAbstractQueuedSynchronizerJava內置的鎖實現 1. LockSupport LockSupport是基于Unsafe的park/unpark實…

智能禁區監控:計算機視覺在人員禁區闖入檢測中的應用

基于視覺分析的人員禁區闖入行為檢測算法主要依賴于計算機視覺技術和深度學習算法。這些技術結合高性能的攝像頭和圖像處理硬件&#xff0c;實現了對監控區域內人員行為的自動識別和分析。具體來說&#xff0c;這種檢測算法利用攝像頭捕捉的視頻數據&#xff0c;通過深度學習模…

Kubernetes 應用滾動更新

Kubernetes 應用版本號 在 Kubernetes 里&#xff0c;版本更新使用的不是 API 對象&#xff0c;而是兩個命令&#xff1a;kubectl apply 和 kubectl rollout&#xff0c;當然它們也要搭配部署應用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里應用都是以 …