欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

如何設置Ansible庫存文件

什么是 Ansible?Ansible 是一款功能強大且易于使用的現代應用程序部署和配置管理工具。它使得從單個控制節點處理數以千計的遠程服務器(也稱為受管節點)變得容易。Ansible 允許您輕松地重現配置環境,并避免您登錄到單個服務器并一臺一臺地配置它們。

如何設置Ansible庫存文件

即使在 Ansible 中跟蹤數以千計的遠程服務器也可能變得很麻煩,因此了解如何使用稱為清單文件的特殊文件對托管節點進行分組和定位至關重要。

什么是 Ansible 庫存文件?

Ansible 清單文件允許系統管理員跟蹤他們管理的遠程系統。默認清單文件稱為hosts文件,位于/etc/ansible目錄中。這是指定所有受管遠程節點的地方。

Ansible 還使您可以靈活地在控制節點上的首選位置創建自定義清單文件以滿足您的偏好。當您擁有復雜的環境并且需要將受管節點隔離到單獨的清單文件而不是將它們全部放在hosts文件中時,這是理想的選擇。

在本指南中,您將安裝 Ansible 并在控制節點上設置自定義清單文件。

先決條件

為了演示如何在清單文件中定義遠程服務器,我們將使用以下設置,其中所有服務器都部署了 Ubuntu 20.04 操作系統:

Ansible 控制節點:這是安裝 Ansible 的服務器。它用于通過 SSH 連接到您的托管節點并管理它們。

托管節點:這些是將從 Ansible 控制節點管理的遠程節點:

節點 1:?198.148.118.68

節點 2:?198.148.118.129

我們的小型實驗室設置足以說明您如何使用 Ansible 清單文件來管理您的遠程系統。但是,您可以擁有的托管節點的數量沒有限制。

在 Ubuntu 20.04 上安裝 Ansible

我們的第一步是在控制節點上安裝 Ansible。因此,通過 SSH 或使用免費的 SSH 客戶端(如PuTTY?)登錄到您的控制節點。

登錄后,通過運行以下命令更新系統包列表。-y 選項自動假定“是”作為對所有命令行提示的回答。

sudo apt update

如何設置Ansible庫存文件

接下來,安裝 Ansible:

sudo apt install -y ansible

如何設置Ansible庫存文件

這將安裝 Ansible 和許多其他附加包和依賴項。完成后,通過檢查 Ansible 的版本來驗證是否安裝了 Ansible:

ansible –-version

下面的輸出證明我們已經成功安裝了 Ansible 2.9.6 版本。

如何設置Ansible庫存文件

如前所述,默認清單文件位于 /etc/ansible/hosts。使用首選命令行編輯器打開文件后,您將看到一些關于預期內容的基本指南。

sudo nano /etc/ansible/hosts

# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character
#   - Blank lines are ignored
#   - Groups of hosts are delimited by [header] elements
#   - You can enter hostnames or ip addresses
#   - A hostname/ip can be a member of multiple groups

# Ex 1: Ungrouped hosts, specify before any group headers:

## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

# Ex 2: A collection of hosts belonging to the 'webservers' group:

## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110

默認情況下,所有條目都被注釋掉并且沒有指定主機。在下一步中,您將連接到遠程主機并創建自定義清單文件。

設置無密碼 SSH 連接

Ansible 是一種無代理部署工具,它使用 SSH 協議與遠程節點進行通信。為了無縫地實現這一點,我們需要采取額外的步驟,在 Ansible 控制節點和遠程系統之間配置一個無密碼的 SSH 連接。

首先,使用以下命令生成 SSH 密鑰對:

ssh-keygen

它將創建一個 SSH 密鑰對,其中包含存儲在您主目錄的 .ssh/ 文件夾中的公鑰和私鑰。

如何設置Ansible庫存文件

私鑰應保留在 Ansible 控制節點上,絕不能泄露或與任何人共享,以避免中間人攻擊等安全漏洞。另一方面,您可以輕松地與您選擇的任何遠程系統共享公鑰。

要成功配置無密碼 SSH 連接,您需要將公鑰復制到遠程節點。ssh-copy-id您可以使用所示語法中的命令輕松執行此操作:

ssh-copy-id user@server-ip-address

在我們的例子中,命令將是:

ssh-copy-id root@198.148.118.68

出現提示時輸入遠程系統的密碼,然后按 ENTER 鍵將公鑰復制到服務器。

如何設置Ansible庫存文件

為了驗證我們是否可以在沒有密碼身份驗證的情況下登錄到遠程系統,我們將嘗試通過 SSH 登錄,方法是證明用戶名后跟“@”,然后是遠程節點的 IP 地址。

ssh root@198.148.118.68

下面提供的代碼片段是對我們剛剛在沒有密碼的情況下登錄到遠程 node1 的確認。

如何設置Ansible庫存文件

公鑰保存在~/.ssh/authorized_keys遠程節點的文件中。

您可以仔細檢查它是否存在:

cat ~/.ssh/authorized_keys

如何設置Ansible庫存文件

對所有節點重復相同的過程,并確保您可以在沒有密碼身份驗證的情況下通過 SSH 連接到它們。

創建自定義庫存文件

Ansible 使用位于的默認清單文件來引用托管節點,除非您通過該選項/etc/ansible/hosts指定自定義清單文件。-i

默認的清單文件工作得很好。實際上,您可以使用遠程節點的 IP 地址將其放入其中,如下所示:

198.148.118.68
198.148.118.129

然后,您可以在遠程節點上執行 ping 模塊,而無需明確指定遠程主機:

sudo ansible -m ping all

如何設置Ansible庫存文件

當然,這沒有任何問題,但是當面對不同項目下的多個托管節點時,最佳做法是為每個項目創建單獨的清單文件。通過這種方式,您將促進資源跟蹤并更輕松地與其他系統管理員協作,而無需讓每個人都糾結在一個hosts文件中。

現在,讓我們創建一個自定義清單文件。為此,您應該首先創建一個項目目錄并導航到其中:

mkdir project_dir && cd project_dir

接下來,創建一個簡單的文本文件。您可以給它任意名稱:

nano inventory

然后使用它們的 IP 地址每行列出您的托管節點:

198.148.118.68
198.148.118.129

保存更改并退出文件。ansible-inventory現在您可以使用命令驗證托管主機。請注意,使用該-i選項時必須引用清單文件的完整路徑。

ansible-inventory -i project_dir/inventory --list

如何設置Ansible庫存文件

從這里,您可以使用自定義清單文件在托管主機上執行劇本或 ping 模塊:

sudo ansible -i project_dir/inventory -m ping all

如何設置Ansible庫存文件

將節點組織成組和子組

為了更清晰的清單文件和更輕松地管理您的受管節點,通常建議將它們組織成組和子組。

一臺主機可以屬于一個或多個組。在下面的示例中,我們webservers以 INI 格式將 2 臺主機分組到該組下。

[webservers]
198.148.118.68
198.148.118.129

下面的清單文件更好地說明了多臺服務器被分為不同的組,例如webservers,load_balancers和db_servers.

[webservers]
198.148.118.68
198.148.118.129
198.148.118.150
198.148.118.175

[load_balancers]
198.148.118.100
198.148.118.200

[db_servers]
198.148.118.50
198.148.118.60

再次運行ansible-inventory命令,您應該會看到與此處類似的安排:

ansible-inventory -i project_dir/inventory --list

如何設置Ansible庫存文件

您還可以將多個組定義為“父”組下的“子”組。在這種情況下,“父”組成為元組。以下是如何使用元組重新組織以前的清單的說明:

[childgroup1]
node1
node2

[childgroup2]
node3
node4

[parent1:children]
childgroup1
childgroup2

考慮到這一點,我們可以重新組織我們的庫存,如下所示。

[webservers_miami]
198.148.118.68
198.148.118.129

[webservers_virginia]
198.148.118.150
198.148.118.175

[load_balancer_ohio]
198.148.118.100

 [load_balancer_texas]
198.148.118.200

[db_server_miami]
198.148.118.50

[db_server_virginia]
198.148.118.60

[webservers:children]
webservers_miami
webservers_virginia

[load_balancers:children]
load_balancer_ohio
load_balancer_texas

[db_servers:children]
db_server_miami
db_server_virginia

再次,您可以按如下方式驗證庫存清單:

ansible-inventory -i project_dir/inventory --list

如何設置Ansible庫存文件

這樣的安排可以幫助您使用劇本來定位較小的服務器組,而不是一次定位所有節點。例如,您可以在[webservers_miami]子組中執行 ping 模塊,如下所示:

sudo ansible -i project_dir/inventory -m ping webservers_miami

如何設置Ansible庫存文件

使用模式來定位命令的執行

使用 Ansible 運行劇本或臨時命令時,您需要提供通常在清單文件中定義的目標。模式可以靈活地定位清單文件中的特定主機或組。它們支持通配符、正則表達式等等。

為了演示如何使用模式,請考慮下面的清單文件:

[webservers]
198.148.118.68
198.148.118.129
198.148.118.160

[db_servers]
198.148.118.55
198.148.118.110

[staging]
198.148.118.160
198.148.118.110

[production]
198.148.118.68
198.148.118.129
198.148.118.55

假設您要執行一個僅針對生產環境中運行的 Web 服務器的臨時命令。在此清單中,只有兩個網絡服務器符合此條件:198.148.118.68和198.148.118.129。

您可以簡單地使用以下匹配模式,而不是分別針對兩個目標主機:

sudo ansible webservers:\&production -m ping

& 符號 - & - 表示邏輯運算 AND。這意味著有效的主機必須在兩個組中,即webservers和production。由于這是一個臨時命令,我們需要\在命令中插入轉義符。

要定位webservers組中但不在 中的主機production,請使用以下模式:

sudo ansible webservers:\!production -m ping

此處,!符號表示邏輯運算符 NOT,它表示有效主機不得包含在production組中。再一次,我們需要包含\轉義字符,因為我們正在運行一個必須由 shell 解釋的臨時命令。

下表提供了在使用 Ansible 自動化工具運行臨時命令和劇本時可以使用的其他模式。

圖案 目標
all 清單文件中的所有目標
node1 單個節點或主機 (?node1)
node1:node2 和node1_node2
group1 group1僅適用于所有主機
group1:group2 適用于所有group1主機group2
group1:\&group2 兩者兼有的主機或group1服務器group2
group1:\&group2 主機或服務器在group1但不在group2

配置主機別名

別名是引用受管節點的一種簡單方法。就像昵稱一樣,它們可以幫助您輕松識別您的資源,而無需在運行劇本時回憶復雜的名稱。

要定義別名,只需指定一個別名,后跟一個與遠程主機的主機名或 IP 相對應的變量名。

alias variable_name

例如:

primary_server   ansible_host=198.148.118.68`
secondary_server ansible_host=198.148.118.129`

然后驗證清單列表以檢查節點是否被別名引用。

ansible-inventory -i project_dir/inventory --list

如何設置Ansible庫存文件

從輸出中我們可以看到服務器現在被它們的別名所引用。您還可以通過使用別名引用節點來運行臨時命令:

sudo ansible -i project_dir/inventory -m ping primary_server

如何設置Ansible庫存文件

配置變量名稱

在 Ansible 中,變量用于處理托管主機之間的差異。使用變量,您可以在執行劇本或臨時命令時表示系統之間的差異。例如,在上一節中,我們使用了ansible_host簡單地告訴 Ansible 在哪里搜索托管節點的 IP 地址的變量。

在清單文件中,您可以使用變量來定義主機名、連接類型、端口等。在下面的示例中,我們進一步定義了用于啟動到節點的遠程連接的用戶。

在這種情況下,我們有兩個變量:ansible_host指定主機的 IP,以及ansible_user指定用于連接遠程主機的用戶。

server01 ansible_host=198.148.118.68 ansible_user=root
server02 ansible_host=198.148.118.129 ansible_user=user

此外,您還可以創建主機組并在組級別具有變量。在這個例子中,我們有兩個獨立的變量組——[webservers_a:vars]它們[webservers_b:vars]定義了連接到被管節點的用戶。

[webservers_a]
server01 ansible_host=198.148.118.68

[webservers_b]
server02 ansible_host=198.148.118.129

[webservers_a:vars]
ansible_user=root

[webservers_b:vars]
ansible_user=user

結論

在本教程中,我們深入研究了 Ansible 清單,并演示了如何將托管主機組織成組和子組。然后我們更進一步,演示了如何使用模式來定位特定的主機組,觸及別名,最后用允許某些關鍵參數因主機而異的變量結束。

文章鏈接: http://www.qzkangyuan.com/13974.html

文章標題:如何設置Ansible庫存文件

文章版權:夢飛科技所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
IDC云庫

2023年如何保護您的加密貨幣安全

2022-12-8 14:59:44

IDC云庫

什么是機器學習?機器學習項目可能的機器學習硬件選擇

2022-12-8 15:20:22

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 辽宁省| 高清| 靖州| 门头沟区| 儋州市| 利辛县| 庆云县| 南岸区| 舒兰市| 安新县| 富源县| 庆元县| 蒙自县| 平顶山市| 广州市| 临汾市| 冷水江市| 柯坪县| 新巴尔虎右旗| 溧水县| 新干县| 四会市| 双流县| 兴仁县| 荥经县| 丰宁| 读书| 阿拉善右旗| 毕节市| 曲周县| 淳化县| 达孜县| 彭山县| 封丘县| 蒙阴县| 靖宇县| 屏东县| 齐河县| 工布江达县| 咸宁市| 吴江市|