日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
使用Testinfra和Ansible驗(yàn)證服務(wù)器狀態(tài)

Testinfra 是一個(gè)功能強(qiáng)大的庫(kù),可用于編寫(xiě)測(cè)試來(lái)驗(yàn)證基礎(chǔ)設(shè)施的狀態(tài)。另外它與 Ansible 和 Nagios 相結(jié)合,提供了一個(gè)用于架構(gòu)即代碼 (IaC) 的簡(jiǎn)單解決方案。

創(chuàng)新互聯(lián)主營(yíng)化州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開(kāi)發(fā),化州h5小程序定制開(kāi)發(fā)搭建,化州網(wǎng)站營(yíng)銷推廣歡迎化州等地區(qū)企業(yè)咨詢

根據(jù)設(shè)計(jì),Ansible 傳遞機(jī)器的期望狀態(tài),以確保 Ansible 劇本或角色的內(nèi)容部署到目標(biāo)機(jī)器上。但是,如果你需要確保所有基礎(chǔ)架構(gòu)更改都在 Ansible 中,該怎么辦?或者想隨時(shí)驗(yàn)證服務(wù)器的狀態(tài)?

Testinfra 是一個(gè)基礎(chǔ)架構(gòu)測(cè)試框架,它可以輕松編寫(xiě)單元測(cè)試來(lái)驗(yàn)證服務(wù)器的狀態(tài)。它是一個(gè) python 庫(kù),使用強(qiáng)大的 pytest 測(cè)試引擎。

開(kāi)始使用 Testinfra

可以使用 Python 包管理器(pip)和 Python 虛擬環(huán)境輕松安裝 Testinfra。

$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install testinfra

Testinfra 也可以通過(guò) Fedora 和 CentOS 的 EPEL 倉(cāng)庫(kù)中使用。例如,在 CentOS 7 上,你可以使用以下命令安裝它:

$ yum install -y epel-release
$ yum install -y python-testinfra

一個(gè)簡(jiǎn)單的測(cè)試腳本

在 Testinfra 中編寫(xiě)測(cè)試很容易。使用你選擇的代碼編輯器,將以下內(nèi)容添加到名為 test_simple.py 的文件中:

import testinfra

def test_os_release(host):
    assert host.file("/etc/os-release").contains("Fedora")

def test_sshd_inactive(host):
    assert host.service("sshd").is_running is False

默認(rèn)情況下,Testinfra 為測(cè)試用例提供了一個(gè) host 對(duì)象,該對(duì)象能訪問(wèn)不同的輔助模塊。例如,第一個(gè)測(cè)試使用 file 模塊來(lái)驗(yàn)證主機(jī)上文件的內(nèi)容,第二個(gè)測(cè)試用例使用 service 模塊來(lái)檢查 systemd 服務(wù)的狀態(tài)。

要在本機(jī)運(yùn)行這些測(cè)試,請(qǐng)執(zhí)行以下命令:

(venv)$ pytest test_simple.py
================================ test session starts ================================
platform linux -- Python 3.7.3, pytest-4.4.1, py-1.8.0, pluggy-0.9.0
rootdir: /home/cverna/Documents/Python/testinfra
plugins: testinfra-3.0.0
collected 2 items
test_simple.py ..

================================ 2 passed in 0.05 seconds ================================

有關(guān) Testinfra API 的完整列表,你可以參考文檔。

Testinfra 和 Ansible

Testinfra 支持的后端之一是 Ansible,這意味著 Testinfra 可以直接使用 Ansible 的清單文件和清單中定義的一組機(jī)器來(lái)對(duì)它們進(jìn)行測(cè)試。

我們使用以下清單文件作為示例:

[web]
app-frontend01
app-frontend02

[database]
db-backend01

我們希望確保我們的 Apache Web 服務(wù)器在 app-frontend01app-frontend02 上運(yùn)行。讓我們?cè)诿麨?test_web.py 的文件中編寫(xiě)測(cè)試:

def check_httpd_service(host):
    """Check that the httpd service is running on the host"""
    assert host.service("httpd").is_running

要使用 Testinfra 和 Ansible 運(yùn)行此測(cè)試,請(qǐng)使用以下命令:

(venv) $ pip install ansible
(venv) $ py.test --hosts=web --ansible-inventory=inventory --connection=ansible test_web.py

在調(diào)用測(cè)試時(shí),我們使用 Ansible 清單文件的 [web] 組作為目標(biāo)計(jì)算機(jī),并指定我們要使用 Ansible 作為連接后端。

使用 Ansible 模塊

Testinfra 還為 Ansible 提供了一個(gè)很好的可用于測(cè)試的 API。該 Ansible 模塊能夠在測(cè)試中運(yùn)行 Ansible 動(dòng)作,并且能夠輕松檢查動(dòng)作的狀態(tài)。

def check_ansible_play(host):
    """ 
    Verify that a package is installed using Ansible
    package module
    """
    assert not host.ansible("package", "name=httpd state=present")["changed"]

默認(rèn)情況下,Ansible 的檢查模式已啟用,這意味著 Ansible 將報(bào)告在遠(yuǎn)程主機(jī)上執(zhí)行動(dòng)作時(shí)會(huì)發(fā)生的變化。

Testinfra 和 Nagios

現(xiàn)在我們可以輕松地運(yùn)行測(cè)試來(lái)驗(yàn)證機(jī)器的狀態(tài),我們可以使用這些測(cè)試來(lái)觸發(fā)監(jiān)控系統(tǒng)上的警報(bào)。這是捕獲意外的更改的好方法。

Testinfra 提供了與 Nagios 的集成,它是一種流行的監(jiān)控解決方案。默認(rèn)情況下,Nagios 使用 NRPE 插件對(duì)遠(yuǎn)程主機(jī)進(jìn)行檢查,但使用 Testinfra 可以直接從 Nagios 主控節(jié)點(diǎn)上運(yùn)行測(cè)試。

要使 Testinfra 輸出與 Nagios 兼容,我們必須在觸發(fā)測(cè)試時(shí)使用 --nagios 標(biāo)志。我們還使用 -qq 這個(gè) pytest 標(biāo)志來(lái)啟用 pytest 的靜默模式,這樣就不會(huì)顯示所有測(cè)試細(xì)節(jié)。

(venv) $ py.test --hosts=web --ansible-inventory=inventory --connection=ansible --nagios -qq line test.py
TESTINFRA OK - 1 passed, 0 failed, 0 skipped in 2.55 seconds

Testinfra 是一個(gè)功能強(qiáng)大的庫(kù),可用于編寫(xiě)測(cè)試以驗(yàn)證基礎(chǔ)架構(gòu)的狀態(tài)。 另外與 Ansible 和 Nagios 相結(jié)合,提供了一個(gè)用于架構(gòu)即代碼 (IaC) 的簡(jiǎn)單解決方案。 它也是使用 Molecule 開(kāi)發(fā) Ansible 角色過(guò)程中添加測(cè)試的關(guān)鍵組件。



標(biāo)題名稱:使用Testinfra和Ansible驗(yàn)證服務(wù)器狀態(tài)
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/dhihcde.html