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

如何設(shè)置Ansible庫存文件

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

如何設(shè)置Ansible庫存文件

即使在 Ansible 中跟蹤數(shù)以千計(jì)的遠(yuǎn)程服務(wù)器也可能變得很麻煩,因此了解如何使用稱為清單文件的特殊文件對托管節(jié)點(diǎn)進(jìn)行分組和定位至關(guān)重要。

什么是 Ansible 庫存文件?

Ansible 清單文件允許系統(tǒng)管理員跟蹤他們管理的遠(yuǎn)程系統(tǒng)。默認(rèn)清單文件稱為hosts文件,位于/etc/ansible目錄中。這是指定所有受管遠(yuǎn)程節(jié)點(diǎn)的地方。

Ansible 還使您可以靈活地在控制節(jié)點(diǎn)上的首選位置創(chuàng)建自定義清單文件以滿足您的偏好。當(dāng)您擁有復(fù)雜的環(huán)境并且需要將受管節(jié)點(diǎn)隔離到單獨(dú)的清單文件而不是將它們?nèi)糠旁趆osts文件中時,這是理想的選擇。

在本指南中,您將安裝 Ansible 并在控制節(jié)點(diǎn)上設(shè)置自定義清單文件。

先決條件

為了演示如何在清單文件中定義遠(yuǎn)程服務(wù)器,我們將使用以下設(shè)置,其中所有服務(wù)器都部署了 Ubuntu 20.04 操作系統(tǒng):

Ansible 控制節(jié)點(diǎn):這是安裝 Ansible 的服務(wù)器。它用于通過 SSH 連接到您的托管節(jié)點(diǎn)并管理它們。

托管節(jié)點(diǎn):這些是將從 Ansible 控制節(jié)點(diǎn)管理的遠(yuǎn)程節(jié)點(diǎn):

節(jié)點(diǎn) 1:?198.148.118.68

節(jié)點(diǎn) 2:?198.148.118.129

我們的小型實(shí)驗(yàn)室設(shè)置足以說明您如何使用 Ansible 清單文件來管理您的遠(yuǎn)程系統(tǒng)。但是,您可以擁有的托管節(jié)點(diǎn)的數(shù)量沒有限制。

在 Ubuntu 20.04 上安裝 Ansible

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

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

sudo apt update

如何設(shè)置Ansible庫存文件

接下來,安裝 Ansible:

sudo apt install -y ansible

如何設(shè)置Ansible庫存文件

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

ansible –-version

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

如何設(shè)置Ansible庫存文件

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

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

默認(rèn)情況下,所有條目都被注釋掉并且沒有指定主機(jī)。在下一步中,您將連接到遠(yuǎn)程主機(jī)并創(chuàng)建自定義清單文件。

設(shè)置無密碼 SSH 連接

Ansible 是一種無代理部署工具,它使用 SSH 協(xié)議與遠(yuǎn)程節(jié)點(diǎn)進(jìn)行通信。為了無縫地實(shí)現(xiàn)這一點(diǎn),我們需要采取額外的步驟,在 Ansible 控制節(jié)點(diǎn)和遠(yuǎn)程系統(tǒng)之間配置一個無密碼的 SSH 連接。

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

ssh-keygen

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

如何設(shè)置Ansible庫存文件

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

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

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

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

ssh-copy-id root@198.148.118.68

出現(xiàn)提示時輸入遠(yuǎn)程系統(tǒng)的密碼,然后按 ENTER 鍵將公鑰復(fù)制到服務(wù)器。

如何設(shè)置Ansible庫存文件

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

ssh root@198.148.118.68

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

如何設(shè)置Ansible庫存文件

公鑰保存在~/.ssh/authorized_keys遠(yuǎn)程節(jié)點(diǎn)的文件中。

您可以仔細(xì)檢查它是否存在:

cat ~/.ssh/authorized_keys

如何設(shè)置Ansible庫存文件

對所有節(jié)點(diǎn)重復(fù)相同的過程,并確保您可以在沒有密碼身份驗(yàn)證的情況下通過 SSH 連接到它們。

創(chuàng)建自定義庫存文件

Ansible 使用位于的默認(rèn)清單文件來引用托管節(jié)點(diǎn),除非您通過該選項(xiàng)/etc/ansible/hosts指定自定義清單文件。-i

默認(rèn)的清單文件工作得很好。實(shí)際上,您可以使用遠(yuǎn)程節(jié)點(diǎn)的 IP 地址將其放入其中,如下所示:

198.148.118.68
198.148.118.129

然后,您可以在遠(yuǎn)程節(jié)點(diǎn)上執(zhí)行 ping 模塊,而無需明確指定遠(yuǎn)程主機(jī):

sudo ansible -m ping all

如何設(shè)置Ansible庫存文件

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

現(xiàn)在,讓我們創(chuàng)建一個自定義清單文件。為此,您應(yīng)該首先創(chuàng)建一個項(xiàng)目目錄并導(dǎo)航到其中:

mkdir project_dir && cd project_dir

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

nano inventory

然后使用它們的 IP 地址每行列出您的托管節(jié)點(diǎn):

198.148.118.68
198.148.118.129

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

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

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

sudo ansible -i project_dir/inventory -m ping all

如何設(shè)置Ansible庫存文件

將節(jié)點(diǎn)組織成組和子組

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

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

[webservers]
198.148.118.68
198.148.118.129

下面的清單文件更好地說明了多臺服務(wù)器被分為不同的組,例如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

再次運(yùn)行ansible-inventory命令,您應(yīng)該會看到與此處類似的安排:

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

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

[childgroup1]
node1
node2

[childgroup2]
node3
node4

[parent1:children]
childgroup1
childgroup2

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

[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

再次,您可以按如下方式驗(yàn)證庫存清單:

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

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

sudo ansible -i project_dir/inventory -m ping webservers_miami

如何設(shè)置Ansible庫存文件

使用模式來定位命令的執(zhí)行

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

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

[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

假設(shè)您要執(zhí)行一個僅針對生產(chǎn)環(huán)境中運(yùn)行的 Web 服務(wù)器的臨時命令。在此清單中,只有兩個網(wǎng)絡(luò)服務(wù)器符合此條件:198.148.118.68和198.148.118.129。

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

sudo ansible webservers:\&production -m ping

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

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

sudo ansible webservers:\!production -m ping

此處,!符號表示邏輯運(yùn)算符 NOT,它表示有效主機(jī)不得包含在production組中。再一次,我們需要包含\轉(zhuǎn)義字符,因?yàn)槲覀冋谶\(yùn)行一個必須由 shell 解釋的臨時命令。

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

圖案 目標(biāo)
all 清單文件中的所有目標(biāo)
node1 單個節(jié)點(diǎn)或主機(jī) (?node1)
node1:node2 和node1_node2
group1 group1僅適用于所有主機(jī)
group1:group2 適用于所有g(shù)roup1主機(jī)group2
group1:\&group2 兩者兼有的主機(jī)或group1服務(wù)器group2
group1:\&group2 主機(jī)或服務(wù)器在group1但不在group2

配置主機(jī)別名

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

要定義別名,只需指定一個別名,后跟一個與遠(yuǎn)程主機(jī)的主機(jī)名或 IP 相對應(yīng)的變量名。

alias variable_name

例如:

primary_server   ansible_host=198.148.118.68`
secondary_server ansible_host=198.148.118.129`

然后驗(yàn)證清單列表以檢查節(jié)點(diǎn)是否被別名引用。

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

從輸出中我們可以看到服務(wù)器現(xiàn)在被它們的別名所引用。您還可以通過使用別名引用節(jié)點(diǎn)來運(yùn)行臨時命令:

sudo ansible -i project_dir/inventory -m ping primary_server

如何設(shè)置Ansible庫存文件

配置變量名稱

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

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

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

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

此外,您還可以創(chuàng)建主機(jī)組并在組級別具有變量。在這個例子中,我們有兩個獨(dú)立的變量組——[webservers_a:vars]它們[webservers_b:vars]定義了連接到被管節(jié)點(diǎn)的用戶。

[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

結(jié)論

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

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

文章標(biāo)題:如何設(shè)置Ansible庫存文件

文章版權(quán):夢飛科技所發(fā)布的內(nèi)容,部分為原創(chuàng)文章,轉(zhuǎn)載請注明來源,網(wǎng)絡(luò)轉(zhuǎn)載文章如有侵權(quán)請聯(lián)系我們!

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

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

2023年如何保護(hù)您的加密貨幣安全

2022-12-8 14:59:44

IDC云庫

什么是機(jī)器學(xué)習(xí)?機(jī)器學(xué)習(xí)項(xiàng)目可能的機(jī)器學(xué)習(xí)硬件選擇

2022-12-8 15:20:22

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 巢湖市| 泸西县| 诸暨市| 察隅县| 壶关县| 娄底市| 三台县| 杨浦区| 鄂托克前旗| 阿拉善盟| 东阳市| 阳谷县| 安乡县| 葵青区| 武穴市| 始兴县| 广灵县| 汕头市| 清涧县| 闸北区| 荔浦县| 随州市| 芜湖县| 江永县| 金乡县| 司法| 凤山县| 财经| 额敏县| 德令哈市| 三明市| 平谷区| 镇坪县| 安泽县| 轮台县| 广丰县| 浠水县| 蒙山县| 常山县| 龙海市| 盘锦市|