自動化運維之ansible

一、認識自動化運維

假如管理很多臺服務器,主要關注以下幾個方面“

1.管理·機與被管理機的連接(管理機如何將管理指令發送給被管理機)

2.服務器信息收集(如果被管理的服務器有centos7.5外還有其它linux發行版,如suse,ubuntu等。當你要做的事情在不同os上有所不同,你需要收集信息,并將其分開處理)

3.服務器分組(因為有些時候我要做的事情不是針對所有服務器,可能只針對某一個分組)

4.管理內容的主要分類

文件目錄管理(包括文件的創建,刪除,修改,查看狀態,遠程拷貝等)

用戶和組管理

cron時間任務管理

yum源配置與通過yum管理軟件包

服務管理

遠程執行腳本

遠程執行命令

二、ansilble

2.1 ansible環境搭建

1.靜態ip

2.主機名及主機名互相綁定

3.關閉防火墻,selinux

4.時間同步

5.確認和配置yum源(需要epel源)

實驗過程:

第一步:管理機上安裝ansible,被管理節點必須打開ssh服務

yum install epel-release
yum install ansible
ansible --version

第二步:實現master對agent的免密登錄。只在master上做。(如果這一步不做,則在后面操作agent時要加-k參數傳密碼;或者在主機清單里傳密碼

ssh-keygen
ssh-copy-id -i 192.168.124.131
ssh-copy-id -i 192.168.124.132

第三步:在master上定義主機組,并測試連接性

【group】

192.168.124.131

192.168.124.132

2.2服務器分組

ansible通過一個主機清單功能來實現服務器分組

ansible的默認主機清單配置文件為/etc/ansible/hosts

示例:

[nginx]               組名 
apache[1:10].aaa.com  表示apache1.aaa.com到apache10.aaa.com這10臺機器
nginx[a:z].aaa.com    表示nginxa.aaa.com到nginxz.aaa.com共26臺機器
10.1.1.[11:15]        表示10.1.1.11到10.1.1.15這5臺機器10.1.1.1:2222         設置端口為2222定義10.1.1.12:2222這臺服務器的別名為nginx1
nginx1 ansible_ssh_host=10.1.1.12 ansible_ssh_port=2222沒有做免密登錄的服務器可以指定用戶名和密碼
nginx1 absible_ssh_host=10.1.1.12 ansible_ssh_port=2222 ansible_ssh_user=root ansible_-ssh_pass="123456"利用別名來分組
nginx1 ansible_ssh_host=10.1.1.12 ansible_ssh_port=2222 ansible_ssh_user=root ansible_ssh_pass="123456"
nginx2 ansible_ssh_host=10.1.1.13[nginx]
nginx1
nginx2

2.3ansible模塊

ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是absible所運行的模塊,ansible只是提供一種框架。

ansible支持的模塊非常的多,我們并不需要把每個模塊都記住,而是只需要熟悉一些常見的模塊,其他的模塊在需要用到時查詢即可

2.3.1查看所有支持的模塊

ansible-doc -l

2.3.2hostname模塊

hostname模塊用于修改主機名(注意:他不能修改/etc/hosts文件)

將其中一臺遠程主機名修改為agent1.cluster.com

master# ansible 192.168.124.131 -m hostname -a 'name=agent1.cluster.com'
基本格式為:ansible 操作的機器名或組名 -m 模塊名 -a "參數1=值1 參數2=值2"

2.3.3file模塊(重點)

創建目錄

刪除:

2.3.4copy模塊(重點)

copy模塊用于對文件的遠程拷貝操作(如把本地的文件拷貝到遠程的機器上)

在master上準備一個文件,拷貝此文件到group1的所有機器上

copy模塊拷貝時要注意拷貝目錄后面是否帶"/"符號

/etc/yum.repos.d后面不帶/符號,則表示把/etc/yum.repos.d整個目錄拷貝到/tmp/目錄下
master# ansible group1 -m copy -a 'src=/etc/yum.repos.d dest=/tmp/'
/etc/yum.repos.d/后面帶/符號,則表示把/etc/yum.repos.d/目錄里面的所有文件拷貝到/tmp/目錄下
master# ansible group1 -m copy -a 'src=/etc/yum.repos.d/ dest=/tmp/'

2.3.5stat模塊(了解)

stat模塊類似于linux的stat命令,用于獲取文件的狀態信息

獲取/etc/fstab文件的狀態信息

2.3.6template模塊(擴展)

與copy模塊功能幾乎一樣

template模塊首先使用變量渲染jinjia2模版文件成普通文件,然后再復制過去,而copy模塊不支持。(jinja2是一個基于python的模版引擎)

master# ansible -m template group1 -a "src=/etc/hosts dest=/tmp/hosts"

template模塊不能拷貝目錄

master# ansible -m template group1 -a "src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/"

2.3.7fetch模塊

fetch模塊與copy模塊類似,但作用相反。用于把遠程機器的文件拷貝到本地。

第一步:在兩臺被管理機上分別創建一個同名文件(但內容不同)

agent1# echo 12345 > /tmp/1.txt
agent2# echo 54321 > /tmp/1.txt

第二步:從master上fetch文件(因為group1里有2臺機器,為了避免同名文件沖突,它使用了不同的目錄

master# ansible group1 -m fetch -a 'src=/tmp/1.txt dest=/tmp/'

第三步:先刪除上面fetch過來的,然后嘗試只fetch其中一臺機器的,也會使用名稱來做子目錄區分

master# rm /tmp/10.1.1.* -rfmaster# ansible 10.1.1.12 -m fetch -a 'src=/tmp/1.txt dest=/tmp/'

注意:fetch模塊不能從遠程拷貝目錄到本地

2.3.8user模塊

user模塊用于管理用戶賬號和用戶屬性

ansible group1 -m user -a "name=zhangsan uid=1004 home=/home/hhh shell=/bin/false command=@_@"

刪除用戶以及家目錄

ansible group1 -m user -a "name=zhangsan state=absent remove=yes"

2.3.9group模塊

創建組

ansible group1 -m group -a "name=admins gid=5000"

刪除組

ansible group1 -m group -a "name=admins state=absent"

2.3.10cron模塊

cron模塊用于管理周期性時間任務

創建一個cron任務,不指定suer的話,默認就是root(因為我這里是用root操作的)

如果minute,hour,day,month,week不指定的話,默認都為*

master# ansible group1 -m -cron -a 'name="test cron1" user=zhangsan job="touch /tmp/111" minute=*/2'

刪除cron任務

master #ansible group1 -m -cron -a 'name="test cron1" state=absent'

2.3.11yum模塊(重點)

yum模塊用于使用yum命令來實現軟件包的安裝與卸載

使用yum安裝一個軟件(前提:group1的機器上的yum配置都已經ok)

master#ansible group1 -m yum -a 'name=vsfpd state=present'

使用yum安裝httpd,http-devel軟件,state=latest表示安裝最新版本

master#ansible group1 -m yum -a 'name=httpd,httpd-devel state=latest'

使用yum卸載httpd,httpd-devel軟件

master#ansible group1 -m yum -a 'name=httpd,httpd-devel state=absent'

2.3.12service模塊

service模塊用于控制服務的啟動,關閉,開機自啟動等

啟動vsftpd服務,并設為開孔自動啟動

master# ansible group1 -m service -a 'name=vsftpd state=started enabled=on'

2.3.13script-command-shell模塊

script模塊用于在遠程機器上執行本地腳本

master# ansible group1 -m script -a '/tmp/xxx.sh'

command和shell模塊都是用于執行linux命令的,這對于熟悉的工程師來說,用起來非常high

shell模塊與command模塊差不多(command模塊不能執行一些類似于¥HOME,>,<,|等符號,但Shell可以)

master# ansible -m command group1 -a "useradd user2"
master# ansible -m command group1 -a "id user2"master# ansible -m command group1 -a "cat /etc/passwd |wc -l"  --報錯
master# ansible -m shell group1 -a "cat /etc/passwd |wc -l"  --成功

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

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

相關文章

【溫室氣體數據集】亞洲地區長期空氣污染物和溫室氣體排放數據 REAS

目錄 REAS 數據集概述 REAS 數據版本及特點 數據內容(以 REASv3.2.1 為例) 數據形式 數據下載 參考 REAS 數據集(Regional Emission inventory in ASia,亞洲區域排放清單)是由日本國立環境研究所(NIES)及相關研究人員開發的一個覆蓋亞洲地區長期空氣污染物和溫室氣體排放…

中州養老項目:利用Redis解決權限接口響應慢的問題

目錄 在Java中使用Redis緩存 項目中集成SpringCache 在Java中使用Redis緩存 Redis作為緩存,想要在Java中操作Redis,需要 Java中的客戶端操縱Redis就像JDBC操作數據庫一樣,實際底層封裝了對Redis的基礎操作 如何在Java中使用Redis呢?先導入Redis的依賴,這個依賴導入后相當于把…

MathJax - LaTeX:WordPress 公式精準呈現方案

寫在前面&#xff1a;本博客僅作記錄學習之用&#xff0c;部分圖片來自網絡&#xff0c;如需引用請注明出處&#xff0c;同時如有侵犯您的權益&#xff0c;請聯系刪除&#xff01; 文章目錄前言安裝 MathJax-LaTeX 插件修改插件文件效果總結互動致謝參考前言 在當今知識傳播與…

詳細解讀Docker

1.概述Docker是一種優秀的開源的容器化平臺。用于部署、運行應用程序&#xff0c;它通過將應用及其依賴打包成輕量級、可移植的容器&#xff0c;實現高效一致的運行效果&#xff0c;簡單來說&#xff0c;Docker就是一種輕量級的虛擬技術。2.核心概念2.1.容器&#xff08;Contai…

GEE:基于自定義的年度時序數據集進行LandTrendr變化檢測

本文記錄了使用自己的年度時序數據集,進行 LandTrendr 變化檢測的代碼。結果輸出變化年份、變化幅度以及變化持續時間。 結果如下圖所示, 文章目錄 一、核心函數 二、代碼 三、代碼鏈接 一、核心函數 var eeltgcm = require(users/949384116/lib:LandTrendr/getChangeMap)v…

PostgreSQL收集pg_stat_activity記錄的shell工具pg_collect_pgsa

這是一個純腳本工具&#xff0c;用于從PostgreSQL的pg_stat_activity視圖中定期收集數據并保存到本地日志文件。 相關背景&#xff1a; 某個慢SQL打滿內存&#xff0c;導致系統kill掉postgres的某個進程&#xff0c;進而導致postgres進程重啟&#xff0c;沒有現場排查不了具體…

通俗的話語解讀《銀行保險機構信息科技外包風險監管辦法》

這份文件不是 “紙上規矩”&#xff0c;而是銀行保險機構做信息科技外包的 “實操手冊”—— 從要不要外包、選誰合作&#xff0c;到怎么管過程、防風險&#xff0c;再到出問題怎么應對&#xff0c;都給了明確方向。作為管理者&#xff0c;核心是把這些要求落地到日常決策和系統…

芯片ATE測試PAT(Part Average Testing)學習總結-20250916

目錄 一、基本概念 二、靜態PAT 三、動態PAT 四、參考鏈接: 一、基本概念 零件平均測試(Part Average Testing,PAT)是一種基于統計學的質量控制方法,主要用于半導體制造中篩選出與正常參數范圍偏差較大的“異常值”芯片,以提高產品質量和可靠性; 二、靜態PAT 靜態…

【數據結構、java學習】數組(Array)

1&#xff0c;概念 數組一旦定義&#xff0c;其維數和維界就不再改變。 因此除了結構的初始化和銷毀之外&#xff0c;數組只有存取元素和修改元素值的操作。Array可以存放對象類型、基本數據類型的數據。數組中元素在內存中按順序線性存放&#xff0c;通過第一個元素就能訪問隨…

58-正則表達式

1. 概念正則表達式是一種用來匹配字符串的強有力的武器.設計思想&#xff1a;用一種描述性的語言來給字符串定義一個規則&#xff0c;凡是符合規則的字符串&#xff0c;就認為它"匹配"【合法】否則就是不匹配[不合法]舉例&#xff1a;beijinglishao163.com2. 規則 1.…

圖片木馬制作的三種方法

本文轉自&#xff1a;https://www.cnblogs.com/cybersecuritystools/p/14932567.html 0x01什么是圖片木馬&#xff1f; 圖片木馬在網絡上沒有統一的定義&#xff0c;在這里我給出自己的定義。圖片木馬是一張能正常顯示又包含惡意代碼&#xff08;比如一句話木馬&#xff09;的…

【Redis】緩存的穿透、擊穿和雪崩

引言要了解緩存的這幾個相關問題&#xff0c;我們先以一個例子來引入&#xff1a;有一個get請求&#xff1a;api/news/getById/1正常情況下對其申請訪問的流程如圖&#xff1a;但若是如此&#xff0c;訪問增多或者受到攻擊時很容易受到以下問題1 緩存穿透1.1 造成原因當查詢一個…

打造一款高穩定、低延遲、跨平臺RTSP播放器的技術實踐

一、引言 RTSP&#xff08;Real Time Streaming Protocol&#xff09;作為經典的實時流媒體協議&#xff0c;已經深深嵌入到安防監控、遠程教育、工業巡檢、低空經濟、醫療影像傳輸等行業之中&#xff0c;可以說是這些場景的視頻傳輸“基礎設施”。一個穩定的 RTSP 播放器&…

C++_數據結構

數據結構是計算機存儲、組織數據的方式&#xff0c;它使得數據能夠被高效地訪問和修改。根據數據元素之間關系的不同特性&#xff0c;數據結構可以分為多種類型。主要可以分為兩大類&#xff1a;邏輯結構和物理結構&#xff08;也稱存儲結構&#xff09;。 一、邏輯結構&#x…

一個正常的 CSDN 博客賬號,需要做哪些基礎準備?

一個正常的 CSDN 博客賬號&#xff0c;需要做哪些準備&#xff1f; CSDN&#xff08;中國軟件開發網&#xff09;作為國內最具影響力的技術社區之一&#xff0c;不僅是開發者獲取信息的重要平臺&#xff0c;也是技術人建立個人品牌、輸出知識、積累影響力的重要陣地。想要把一…

【Python基礎】 17 Rust 與 Python 運算符對比學習筆記

一、算術運算符運算符Rust &#x1f980;Python &#x1f40d;示例 (Rust)示例 (Python)說明加法加法let sum 5 3;sum 5 3-減法減法let diff 5 - 3;diff 5 - 3*乘法乘法let product 5 * 3;product 5 * 3/除法除法let quotient 5 / 3; → 1quotient 5 / 3 → 1.666...…

單鏈表逆序java

在Java中實現單鏈表的逆序&#xff0c;可以通過迭代或遞歸兩種方式。以下是兩種方法的詳細實現&#xff1a; 1. 迭代方法&#xff08;推薦&#xff09; public class ListNode {int val;ListNode next;ListNode(int x) { val x; } }class Solution {public ListNode reverseLi…

(11)用于無GPS導航的制圖師SLAM(二)

文章目錄 前言 7 構建軟件包 8 開始制圖 9 配置 ArduPilot 10 測試 11 視頻 前言 本頁展示了如何使用 RPLidarA2 激光雷達(RPLidarA2 lidar)設置 ROS 和 Google Cartographer SLAM&#xff0c;為 ArduPilot 提供本地位置估計&#xff0c;使其可以在沒有 GPS 的情況下運行…

1.5、機器學習-回歸算法

1、線性回歸模型 線性回歸模型(Liner Regression)&#xff0c;是利用線性擬合的方式來探尋數據背后的規律。通過搭建線性回歸模型&#xff0c;可以尋找這些散點&#xff08;也稱樣本點&#xff09;背后的趨勢線(也稱回歸曲線)。 借助回歸曲線&#xff0c;我們可以進行一些簡單…

eclipse 安裝 lombok

好久沒有用eclipse&#xff0c;新裝eclipse 發現lombok 沒有生效&#xff0c;如下安裝最省事&#xff0c;無需安裝plugin等。 進入maven 本地目錄&#xff0c;如&#xff1a;org\projectlombok\lombok\1.18.38&#xff0c;點擊lombok jar文件指定eclipse 目錄&#xff0c;安裝完…