Ansible01-Ansible的概述、實驗環境初始化、Inventory

目錄

  • 寫在前面
  • 1. Ansible是什么
    • 1.1 簡介與來歷
    • 1.2 Ansible的特點
    • 1.3Ansible的架構與工作流程
      • 1.3.1 ansible 任務執行模式
      • 1.3.2 ansible 執行流程
      • 1.4 Ansible的模塊
  • 2. Ansible實驗初始化
    • 2.1 實驗環境
    • 2.2Ansible的安裝
      • 2.2.1 Ansible的程序結構
    • 2.3 修改Ansible配置文件
      • 2.3.1 配置文件中常見參數
    • 2.4 Ansible的命令參數
  • 3. Ansible Inventory 主機清單文件
    • 3.1 設置Inventory
      • 3.2.1 子組
      • 3.2.2 指定ansible用戶、密碼、端口(不推薦)

寫在前面

在ansible部分,決定以多篇文章的方式進行記錄。寫成一篇太累太費時太費腦TuT

1. Ansible是什么

1.1 簡介與來歷

Ansible 是一個開源的基于Python開發的自動化工具,用于配置管理、應用程序部署和任務自動化。它旨在簡化 IT 基礎設施管理,使得開發運維 (DevOps) 流程更加高效和可靠。
Ansible 由 Michael DeHaan 于 2012 年創建,并于同年發布。它由 Red Hat 贊助,并于 2015 年被 Red Hat 收購。Ansible 的設計理念是簡潔易用,旨在解決傳統自動化工具復雜性和學習曲線的問題。

1.2 Ansible的特點

  • 無客戶端模式:僅需在控制端部署Ansible環境,被控端無需操作;
  • SSH工作:基于ssh協議對設備進行管理;
  • 框架概念:Ansible基于模塊進行工作,本身沒有能力,真正工作的是運行的模塊
  • playbook:使用基于yaml的playbook實現自動化操作;
  • 可擴展性:支持API等方式擴展;
  • 冪等性:不關注執行過程,執行的結果無關次數,結果相同;

1.3Ansible的架構與工作流程

在這里插入圖片描述

1.3.1 ansible 任務執行模式

Ansible 系統由控制主機對被管節點的操作方式可分為兩類,即adhoc和playbook

  • ad-hoc模式(點對點模式)
     使用單個模塊,支持批量執行單條命令。ad-hoc 命令是一種可以快速輸入的命令,而且不需要保存起來的命令。就相當于bash中的一句話shell。
  • playbook模式(劇本模式)
     是Ansible 主要管理方式 ,也是Ansible功能強大的關鍵所在。playbook通過多個task集合完成一類功能,如Web服務的安裝部署、數據庫服務器的批量備份等。可以簡單地把playbook理解為通過組合多條ad-hoc操作的配置文件。

1.3.2 ansible 執行流程

Ansible在運行時, 首先讀取ansible.cfg中的配置, 根據規則獲取Inventory中的管理主機列表, 并行的在這些主機中執行配置的任務, 最后等待執行返回的結果。

  • 命令執行過程
  1. 加載自己的配置文件,默認/etc/ansible/ansible.cfg;
  2. 查找對應的主機配置文件,找到要執行的主機或者組;
  3. 加載自己對應的模塊文件,如 command;
  4. 通過ansible將模塊或命令生成對應的臨時py文件(python腳本), 并將文件傳輸至遠程服務器;
  5. 對應執行用戶的家目錄的.ansible/tmp/XXX/XXX.PY文件;
  6. 給文件 +x 執行權限;
  7. 執行并返回結果;
  8. 刪除臨時py文件,sleep 0退出;

1.4 Ansible的模塊

  • Ansible:Ansible核心程序。
  • Host Inventory:記錄由Ansible管理的主機信息,包括端口、密碼、ip等。
  • Playbooks:“劇本”YAML格式文件,多個任務定義在一個文件中,定義主機需要調用哪些模塊來完成的功能。
  • CoreModules:核心模塊,主要操作是通過調用核心模塊來完成管理任務。
  • CustomModules:自定義模塊,完成核心模塊無法完成的功能,支持多種語言。
  • ConnectionPlugins:連接插件,Ansible和Host通信使用

2. Ansible實驗初始化

2.1 實驗環境

Server:    manager     CentOS8     192.168.100.151
Host01:    front   	CentOS8     192.168.100.148
Host02:    storage     CentOS8     192.168.100.150
Host03:    backup  	CentOS8     192.168.100.149

2.2Ansible的安裝

#ansible需要有epel源的支持,所以先安裝epel-release
[root@manager ~]# yum install -y epel-release[root@manager ~]# yum install -y ansible[root@manager ~]# ansible --version
ansible [core 2.16.2]config file = /etc/ansible/ansible.cfgconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python3.11/site-packages/ansibleansible collection location = /root/.ansible/collections:/usr/share/ansible/collectionsexecutable location = /usr/bin/ansiblepython version = 3.11.5 (main, Oct 25 2023, 14:45:39) [GCC 8.5.0 20210514 (Red Hat 8.5.0-21)] (/usr/bin/python3.11)jinja version = 3.1.2libyaml = True######也可以用pip安裝,首先安裝python-pip,然后pip拉取ansible的包
yum install -y python-pip
pip install ansible

2.2.1 Ansible的程序結構

  • 配置文件目錄:/etc/ansible/
  • 執行文件目錄:/usr/bin/ansible
  • lib庫依賴目錄:/usr/lib/pythonx.xx/site-packages/ansible*
  • help文檔目錄:/usr/share/doc/ansible*
  • man文檔目錄:/usr/share/man/man1/ansible*

2.3 修改Ansible配置文件

從 Ansible 2.12 版本開始,默認的配置文件不再有具體內容。但可以通過運行一個命令來生成一個示例配置文件。這個文件會包含所有默認設置,但都是被注釋掉的(即“disabled”),如同2.12版本之前一樣。

#生成配置文件
ansible-config init --disabled > ansible.cfg#或者更加完整的
ansible-config init --disabled -t all > ansible.cfg

關于配置文件,這里修改兩點:

  • 關閉主機密鑰檢查(host_key_checking)
  • 開啟日志功能
#不必生成新的配置文件,就在空的配置文件內添加即可
cat >> /etc/ansible/ansible.cfg << EOF
[defaults]
host_key_checking = False
log_path = /var/log/ansible.log
EOF

2.3.1 配置文件中常見參數

inventory = /etc/ansible/hosts		  #這個參數表示資源清單inventory文件的位置
library = /usr/share/ansible		 #指向存放Ansible模塊的目錄,支持多個目錄方式,只要用冒號(:)隔開就可以
forks = 5		                      #并發連接數,默認為5
sudo_user = root		              #設置默認執行命令的用戶
remote_port = 22		              #指定連接被管節點的管理端口,默認為22端口,建議修改,能夠更加安全
ask_pass = True                #是否需要密碼
host_key_checking = False		     #設置是否檢查SSH主機的密鑰,值為True/False。關閉后第一次連接不會提示配置實例
timeout = 60		                #設置SSH連接的超時時間,單位為秒
log_path = /var/log/ansible.log		#指定一個存儲ansible日志的文件(默認不記錄日志)

2.4 Ansible的命令參數

# ansible 命令參數
# anisble命令語法: ansible [-i 主機文件] [-f 批次] [組名] [-m 模塊名稱] [-a 模塊參數]
ansible詳細參數:-v,-verbose            # 詳細模式,如果命令執行成功,輸出詳細的結果 (-vv –vvv -vvvv)-i PATH, -inventory=PATH  #  指定 host 文件的路徑,默認是在 /etc/ansible/hosts 
inventory  [??nv?ntri]  庫存-f NUM,-forks=NUM      # NUM 是指定一個整數,默認是 5 ,指定 fork 開啟同步進程的個數。-m NAME,-module-name=NAME    #   指定使用的 module 名稱,默認使用 command模塊-a,MODULE_ARGS         #指定 module 模塊的參數-k,-ask-pass           #提示輸入 ssh 的密碼,而不是使用基于 ssh 的密鑰認證-sudo                  # 指定使用 sudo 獲得 root 權限-K,-ask-sudo-pass      #提示輸入 sudo 密碼,與 -sudo 一起使用-u USERNAME,-user=USERNAME          # 指定移動端的執行用戶-C,-check             #測試此命令執行會改變什么內容,不會真正的去執行# ansible-doc詳細參數:ansible-doc -l          #列出所有的模塊列表ansible-doc -s 模塊名    #查看指定模塊的參數  -s,   snippet  [?sn?p?t]   片斷
[root@manager~]#  ansible-doc -s service#列出模塊使用簡介
[root@manager~]# ansible-doc -l   # 指定一個模塊詳細說明
[root@ansible_server~]# ansible-doc -s fetch   # 查詢模塊在劇本中應用方法
[root@manager~]# ansible-doc fetch      

3. Ansible Inventory 主機清單文件

Ansible Inventory指的是ansible管理的主機的列表,即主機清單
ansible默認讀取/etc/ansible/hosts文件,也可以修改路徑(用ansible -i指定)

3.1 設置Inventory

  • 指明主機的方式:
    • 直接指明主機ip或域名
    • 定義主機組再加入
#設置Inventory
[root@manager ~]# vim /etc/ansible/hosts
[front]
192.168.100.148[storage]
192.168.100.150[backup]
192.168.100.149
...#測試,對Inventory的所有主機ping測試
[root@manager ~]# ansible all -m ping
192.168.100.148 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
192.168.100.149 | UNREACHABLE! => {"changed": false,"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.100.149 port 22: No route to host","unreachable": true
}
...

3.2.1 子組

對于多個不同的組,創建一個聚合的組,便于一次對多組執行操作。

創建組data,包含storage和backup
ansible data -m ping

#在/etc/ansible/hosts中添加
[data:children]
storage
backup#測試(測試主機未開機)
ansible data -m ping
192.168.100.149 | UNREACHABLE! => {"changed": false,"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.100.149 port 22: No route to host","unreachable": true
}
192.168.100.150 | UNREACHABLE! => {"changed": false,"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.100.150 port 22: No route to host","unreachable": true
}

3.2.2 指定ansible用戶、密碼、端口(不推薦)

前文提到,ansible是基于ssh控制Inventory中的主機的。我之前的文章已經寫過如何配置ssh密鑰認證
但若沒有配置,也可以在Inventory中指定ansible使用的用戶、密碼以及ssh的端口。
推薦設置ssh密鑰登錄

#/etc/ansible/hosts中的內容
[front]
192.168.100.148 ansible_user=root ansible_password=Huawei@123 ansible_port=22[storage]
192.168.100.150  ansible_user=root ansible_password=Huawei@123 ansible_port=22[backup]
192.168.100.149 ansible_user=root ansible_password=Huawei@123 ansible_port=22#測試
#若報錯,為ssh: Permission denied (publickey.password)。即無密碼。
192.168.100.148 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}

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

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

相關文章

【408精華知識】頁、頁面、頁框、頁幀、內存塊、物理塊、物理頁面還傻傻分不清?

在做題過程中&#xff0c;我們經常能看到頁、頁框、塊等概念&#xff0c;初接觸時&#xff0c;常感覺傻傻分不清&#xff0c;這篇文章將簡潔地介紹它們之間的聯系與區別。 這些概念之間的根本區別&#xff0c;在于是物理上的概念還是邏輯上的概念&#xff0c;也即是虛地址還是實…

匯聚榮:新手做拼多多應該注意哪些事項?

新手在拼多多開店&#xff0c;面臨的是競爭激烈的市場和復雜的運營規則。要想在這個平臺上脫穎而出&#xff0c;必須注意以下幾個關鍵事項。 一、市場調研與定位 深入了解市場需求和競爭對手情況是新手開店的首要步驟。選擇有潛力的細分市場&#xff0c;并針對目標消費者群體進…

華為云服務培訓

一、存儲類服務實踐 是什么&#xff1a; 云硬盤( Elastic Volume Service )是一種為 ECS&#xff08;彈性云服務器&#xff09;、BMS&#xff08;裸金屬服務器&#xff09; 等計算服務提供持久性存儲的服務。 作用&#xff1a; 它通過數據冗余和緩存加速等多項技術&#xf…

卷積報錯:AttributeError: ‘Conv2d‘ object has no attribute ‘total_ops‘ (已解)

AttributeError: ‘Conv2d’ object has no attribute ‘total_ops’ File "/home/...../..._encoder.py", line 34, in forwardx = self.conv(x)File "/home/...../python3.8/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_im…

Spring系列-03-BeanFactory和Application接口和相關實現

BeanFactory BeanFactory和它的子接口們 BeanFactory 接口的所有子接口, 如下圖 BeanFactory(根容器)-掌握 BeanFactory是根容器 The root interface for accessing a Spring bean container. This is the basic client view of a bean container; further interfaces such …

windows 11上自帶時間管理-番茄工作法

在 Windows 11 中&#xff0c;你可以使用 專注 功能來最大程度地減少干擾&#xff0c;幫助你保持專注。 專注的工作原理 專注時段打開后&#xff0c;將會出現以下情況&#xff1a; 專注計時器將顯示在屏幕上 請勿打擾將打開 任務欄中的應用不會閃爍發出提醒 任務欄中應用的…

內網穿透原理解析

在互聯網信息時代的今天&#xff0c;我們經常會聽到“內網穿透”&#xff0c;卻有很多人對此并不了解&#xff0c;下面小編給大家介紹一下內網穿透的工作原理。 1. 什么是內網穿透? 在了解內網穿透原理之前&#xff0c;我們先說什么是內網穿透。內網&#xff0c;就是在公司或…

SpringCloud系列(23)--手寫實現負載輪詢算法

前言&#xff1a;在上一篇文章中我們介紹了關于負載輪詢算法的原理以及看了源代碼&#xff0c;而本章節內容則是著重于我們自己手寫一個負載輪詢算法 1、分別編寫provider-payment8001、provider-payment8002這兩個子項目的PaymentController類&#xff0c;增加一個/payment/lb…

C++中引用的全面解析與實戰應用

C中的引用作為一種強大的特性&#xff0c;不僅能夠提升代碼的效率和清晰度&#xff0c;還能在一定程度上保障數據的安全性。本文將深入探討引用的各個方面&#xff0c;包括其定義、使用場景、類型、與指針的區別&#xff0c;并通過實例加以說明。 引用的定義與基本概念 引用可…

探究Python中的元組:不可變性與多重用途

元組是 Python 中的另一種重要數據結構&#xff0c;與列表相似&#xff0c;但具有一些關鍵區別。讓我們來詳細了解一下 Python 中的元組&#xff0c;包括基本語法、常用命令、示例代碼、應用場景、注意事項和總結。 基本語法 創建元組 在 Python 中&#xff0c;元組使用圓括…

Py之llama-parse:llama-parse(高效解析和表示文件)的簡介、安裝和使用方法、案例應用之詳細攻略

Py之llama-parse&#xff1a;llama-parse(高效解析和表示文件)的簡介、安裝和使用方法、案例應用之詳細攻略 目錄 llama-parse的簡介 llama-parse的安裝和使用方法 1、安裝 2、使用方法 第一步&#xff0c;獲取API 密鑰 第二步&#xff0c;安裝LlamaIndex、LlamaParse L…

AI爆文寫作:經常做這四個小練習,讓你解鎖爆文標題的秘籍,讓你的標題炸裂吸晴!

文章目錄 一、無法吸引眼球的標題二、標題炸裂的秘籍練習1:洞察受眾的渴望與恐懼。練習2:運用感官語言,用生動的描述和具體細節,在讀者心中勾勒出一幅畫面。練習3:展示變化。練習4:用意外轉折激發好奇心。一、無法吸引眼球的標題 這樣的標題: [如何通過閱讀改變人生」「…

LeetCode 1542.找出最長的超贊子字符串:前綴異或和(位運算)

【LetMeFly】1542.找出最長的超贊子字符串&#xff1a;前綴異或和&#xff08;位運算&#xff09; 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/find-longest-awesome-substring/ 給你一個字符串 s 。請返回 s 中最長的 超贊子字符串 的長度。 「超贊子字符串」需…

<string.h>中部分庫函數的模擬實現

前言 嗨&#xff0c;我是firdawn&#xff0c;本章將簡單介紹&#xff0c;<string.h>中部分庫函數的模擬實現&#xff0c;如strncpy&#xff0c;strncat&#xff0c;memcpy&#xff0c;memmove。在本文片末&#xff0c;還講簡單介紹判斷機器大小端的函數實現&#xff0c;…

VSCode SAP Systems配置HTTPS訪問SAP

第一次訪問提示&#xff0c;Self-Signed 證書 解決辦法&#xff1a;https訪問SAP Fiori網站&#xff0c;導出SSL證書為DER格式保存到硬盤上 雙擊DER文件&#xff0c;導入到系統 退出VSCode&#xff0c;再次啟動 Test Connection, 提示 The system URL is using a hostname …

服務器攻防-中間件安全,weblogic(沒怎么搞懂)

1.weblogic-工具 jboss 1.弱口令 直接輸入admin就就去了 2.反序列化&#xff08;不是很懂java) jenkins glassfish 讀密碼文件 讀取 就可以知道它的密碼 我們就可以寫腳本

使用DataGrip連接跳板機后再連接遠程服務器的mysql數據庫

相比配置本地數據庫就是多了一步SSH/SSL配置。 添加新的mysql連接&#xff0c;選擇SSH/SSL&#xff0c;勾選Use SSH tunnel&#xff1a; 點擊右邊的…配置跳板機連接&#xff0c;輸入賬號密碼&#xff0c;然后保存&#xff1a; 接著配置General&#xff0c;里面填上要連接的數…

一款數字化管理平臺源碼:云MES系統(附架構圖、流程)技術架構:springboot + vue-element-plus-admin

制造生產企業打造數字化生產管控的系統&#xff0c;從原材料、生產報工、生產過程、質檢、設備、倉庫等整個業務流程的管理和控制&#xff0c;合理安排生產計劃、實時監控生產、優化生產工藝、降低不良產出和運營成本&#xff1b; 技術架構&#xff1a;springboot vue-elemen…

DHT11獲取數據傳輸到PC端

1.DHT11的時序數據 a : dht 1 b &#xff1a;dht 0延時30ms c&#xff1a; dht 1 卡d點&#xff1b;while(dht1); 卡e點 while(!dht) 卡f點&#xff1a;while(dht) 卡g點&#xff1a;while(!dht) 有效數據都是高電平&#xff0c;持續時間不一樣&#xff0c;50us讀&#…

Go語言實現人臉檢測(Go的OpenCV綁定庫)

文章目錄 OpenCVGithub官網安裝環境變量 Go的OpenCV綁定庫Github文檔安裝搜索視頻設備ID顯示視頻檢測人臉 OpenCV Github https://github.com/opencv/opencv/ 官網 https://opencv.org/ 安裝 brew install opencv brew upgrade opencv安裝目錄 cd /usr/local/opt/opencv…