自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ansible Setup 模塊實(shí)戰(zhàn),如何使用 Setup 模塊收集主機(jī)信息

網(wǎng)絡(luò) 網(wǎng)絡(luò)優(yōu)化
在這篇文章中,我們將一步步帶你了解如何使用setup模塊來(lái)收集主機(jī)信息,并且還會(huì)對(duì)比一下使用ansible命令和ansible-playbook這兩種不同方法的優(yōu)劣。

在Ansible中,setup模塊是一個(gè)非常有用的工具,可以幫助你輕松地收集目標(biāo)主機(jī)的各種系統(tǒng)信息。無(wú)論是想了解操作系統(tǒng)的版本、內(nèi)存容量、CPU性能還是網(wǎng)絡(luò)配置,setup模塊都能為你提供詳盡的硬件和軟件資源數(shù)據(jù)。在這篇文章中,我們將一步步帶你了解如何使用setup模塊來(lái)收集主機(jī)信息,并且還會(huì)對(duì)比一下使用ansible命令和ansible-playbook這兩種不同方法的優(yōu)劣。

一、什么是Setup模塊?

Ansible的setup模塊可以幫你收集遠(yuǎn)程主機(jī)的各種信息,比如操作系統(tǒng)、硬件配置和網(wǎng)絡(luò)設(shè)置等。這樣你就能在自動(dòng)化運(yùn)維過(guò)程中隨時(shí)了解目標(biāo)主機(jī)的狀態(tài)。這個(gè)模塊支持很多不同的系統(tǒng)平臺(tái),并且收集到的數(shù)據(jù)格式統(tǒng)一,方便你后續(xù)處理。

setup 模塊收集的信息包括:

  • 操作系統(tǒng)信息:如版本、發(fā)行版等
  • 網(wǎng)絡(luò)信息:如IP地址、網(wǎng)關(guān)、DNS配置等
  • 內(nèi)存、CPU配置:如內(nèi)存總量、CPU核心數(shù)等
  • 存儲(chǔ)信息:如磁盤設(shè)備、文件系統(tǒng)等
  • 主機(jī)名、架構(gòu)等基本信息。

二、如何使用setup 模塊

如果不知道setup的具體用法,可以通過(guò)執(zhí)行ansible-doc setup查看幫助文檔,如下圖所示:

1. 命令行使用 setup 模塊

最簡(jiǎn)單的方式是直接使用 ansible 命令行工具,調(diào)用setup 模塊收集目標(biāo)主機(jī)的信息。

示例 1:收集所有主機(jī)的系統(tǒng)信息

假設(shè)你希望對(duì) all 組中的所有主機(jī)收集信息,使用以下命令:

ansible all -m setup

這條命令將會(huì)通過(guò)SSH登錄到目標(biāo)主機(jī),并返回一個(gè)包含各類系統(tǒng)信息的JSON 輸出。輸出將包括目標(biāo)主機(jī)的操作系統(tǒng)、內(nèi)存、CPU、網(wǎng)絡(luò)配置等詳細(xì)信息。

示例 2:限制收集特定主機(jī)組的信息

如果你只對(duì)aliyun-server組的主機(jī)感興趣,可以這樣寫:

ansible aliyun-server -m setup

該命令只會(huì)收集 aliyun-server 組中所有主機(jī)的系統(tǒng)信息。結(jié)果如下圖所示:

2. 命令行使用 setup 模塊收集特定信息

你還可以通過(guò) filter 參數(shù)來(lái)只收集某些特定的事實(shí)數(shù)據(jù)。例如,如果你只關(guān)心主機(jī)的操作系統(tǒng)版本或內(nèi)存信息,可以使用如下命令:

示例 3:只收集操作系統(tǒng)信息

ansible aliyun-server  -m setup -a "filter=ansible_distribution*"

該命令會(huì)僅返回主機(jī)的操作系統(tǒng)相關(guān)信息,例如:

web | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "Ubuntu",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/os-release",
        "ansible_distribution_file_variety": "Debian",
        "ansible_distribution_major_version": "22",
        "ansible_distribution_release": "jammy",
        "ansible_distribution_version": "22.04",
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false
}

示例 4:只收集內(nèi)存信息

ansible aliyun-server -m setup -a "filter=ansible_memory_mb"

輸出將僅顯示目標(biāo)主機(jī)的內(nèi)存信息:

web | SUCCESS => {
    "ansible_facts": {
        "ansible_memory_mb": {
            "nocache": {
                "free": 276,
                "used": 1409
            },
            "real": {
                "free": 76,
                "total": 1685,
                "used": 1609
            },
            "swap": {
                "cached": 0,
                "free": 0,
                "total": 0,
                "used": 0
            }
        },
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false
}

三、使用Playbook 調(diào)用setup模塊

除了使用Ansible命令行之外,你還可以借助Ansible Playbook來(lái)收集系統(tǒng)信息。Playbook是Ansible中非常重要的工具,用于配置管理和自動(dòng)化任務(wù)。它能夠幫助你輕松地安排和執(zhí)行多個(gè)任務(wù),并且整個(gè)過(guò)程會(huì)非常清晰有序。希望這個(gè)方法對(duì)你有幫助!

1. Playbook示例:收集系統(tǒng)信息

以下是一個(gè)基本的Playbook示例,演示如何在Playbook中調(diào)用setup模塊收集信息:

---
-name:Gathersysteminformation
hosts:test
tasks:
    -name:Collectsystemfacts
      setup:

    -name:DisplayOSversion
      debug:
        msg:"The OS version is {{ ansible_distribution_version }}"

該P(yáng)laybook會(huì)在目標(biāo)主機(jī)上執(zhí)行setup模塊,收集系統(tǒng)信息,然后使用 debug模塊顯示操作系統(tǒng)的版本。你可以通過(guò)以下命令運(yùn)行該P(yáng)laybook:

ansible-playbook gather_system_facts.yml

成功執(zhí)行后返回如下圖所示:

2. Playbook 示例:過(guò)濾特定信息

你也可以通過(guò)filter參數(shù)來(lái)優(yōu)化Playbook,只收集特定的系統(tǒng)信息。例如,以下 Playbook僅收集目標(biāo)主機(jī)的內(nèi)存信息:

---
-name:Gathersystemmemoryfacts
hosts:test
tasks:
    -name:Collectmemoryfacts
      setup:
        filter:ansible_memory_mb

    -name:Displaytotalmemory
      debug:
        msg:"Total memory is {{ ansible_memory_mb.real.total }} MB"

運(yùn)行該P(yáng)laybook后,它只會(huì)返回并顯示內(nèi)存信息。

3. 綜合案例

為了根據(jù)遠(yuǎn)程服務(wù)器的具體架構(gòu)上傳相應(yīng)的軟件包,我們可以利用Ansible的setup模塊來(lái)獲取服務(wù)器的架構(gòu)信息。然后,通過(guò)使用條件判斷(例如when子句),我們可以靈活地根據(jù)這些信息執(zhí)行不同的操作。這樣不僅提高了效率,還讓整個(gè)過(guò)程變得更加智能和自動(dòng)化。

以下Playbook實(shí)現(xiàn)了上述功能:

---
-name:Uploadsoftwarepackagebasedonarchitecture
hosts:all
gather_facts:yes
tasks:
    -name:Collectsystemarchitecture
      debug:
        msg:"The architecture of the server is {{ ansible_architecture }}"

    -name:Uploadx86_64softwarepackage
      copy:
        src:./packages/software_x86_64.rpm
        dest:/tmp/software.rpm
      when:ansible_architecture=="x86_64"

    -name:Uploadaarch64softwarepackage
      copy:
        src:./packages/software_aarch64.rpm
        dest:/tmp/software.rpm
      when:ansible_architecture=="aarch64"

    -name:Uploadi386softwarepackage
      copy:
        src:./packages/software_i386.rpm
        dest:/tmp/software.rpm
      when:ansible_architecture=="i386"

如果軟件包的文件名和架構(gòu)信息一致,可以使用變量動(dòng)態(tài)構(gòu)造路徑,上面的yaml文件可以簡(jiǎn)化如下:

---
-name:Uploadsoftwarepackagebasedonarchitecture
hosts:all
gather_facts:yes
tasks:
    -name:Collectsystemarchitecture
      debug:
        msg:"The architecture of the server is {{ ansible_architecture }}"
    -name:Uploadsoftwarepackagedynamically
      copy:
        src:"./packages/software_{{ ansible_architecture }}.rpm"
        dest:/tmp/software.rpm
      when:ansible_architecturein["x86_64","aarch64","i386"]

執(zhí)行以下命令運(yùn)行該P(yáng)laybook:

ansible-playbook upload_package.yml

成功執(zhí)行如下圖所示:

四、ansible和playbook那個(gè)更好用?

在Ansible中,對(duì)setup模塊的調(diào)用可以通過(guò)直接使用Ansible命令行工具或通過(guò)Playbook來(lái)實(shí)現(xiàn)。這兩種方法各有特點(diǎn),在實(shí)際應(yīng)用中根據(jù)具體需求選擇合適的方式至關(guān)重要。

  • 直接使用Ansible命令行工具:這種方式適用于需要快速獲取目標(biāo)主機(jī)信息的情況。通過(guò)執(zhí)行類似 ansible <host> -m setup 的命令,可以直接查看指定主機(jī)上的系統(tǒng)信息、安裝軟件包等詳細(xì)數(shù)據(jù)。這種方法簡(jiǎn)單快捷,適合于調(diào)試或是偶爾需要查看特定主機(jī)信息的場(chǎng)景。
  • 通過(guò)Playbook調(diào)用:當(dāng)涉及到更復(fù)雜的配置管理任務(wù)時(shí),推薦使用Playbook來(lái)組織和自動(dòng)化整個(gè)過(guò)程。在這種情況下,可以在Playbook中定義一個(gè)或多個(gè)任務(wù)來(lái)調(diào)用setup模塊,從而收集所需的信息。這種方法不僅能夠更好地集成到自動(dòng)化流程中,而且還支持更高級(jí)的功能如條件判斷、循環(huán)處理等,使得信息收集過(guò)程更加靈活可控。

五、總結(jié)

setup模塊是Ansible里的一個(gè)重要工具,用來(lái)收集目標(biāo)主機(jī)的各種信息,比如操作系統(tǒng)、硬件配置和網(wǎng)絡(luò)設(shè)置等,讓你能快速了解主機(jī)的情況。 無(wú)論是命令行還是Playbook,它們都能夠通過(guò)filter 參數(shù)精確收集所需的信息,避免不必要的數(shù)據(jù)冗余。

責(zé)任編輯:趙寧寧 來(lái)源: 攻城獅成長(zhǎng)日記
相關(guān)推薦

2025-01-16 08:13:43

commandshell模塊Ansible

2024-11-01 10:30:05

2022-11-22 13:00:38

2025-01-22 10:04:52

自動(dòng)化運(yùn)維Ansiblefetch

2011-08-16 10:10:58

setup中文man

2009-03-04 10:38:36

XenDesktop 桌面虛擬化Xendesktop

2022-02-18 09:39:51

Vue3.0Vue2.0Script Set

2009-12-04 09:32:00

Web Setup P

2021-11-22 11:05:20

Vue 3setup前端

2009-03-04 10:10:49

XenDesktop 桌面虛擬化Xendesktop

2020-10-29 10:17:24

AnsibleKubernetes容器編排自動(dòng)化

2022-11-30 18:38:50

2025-03-21 09:58:59

Python數(shù)據(jù)類型安全

2009-09-04 11:00:29

2009-12-21 17:05:48

2015-11-03 14:56:11

內(nèi)置模塊信息Linux

2010-03-22 15:38:46

Python常用模塊

2016-10-17 13:33:26

原子主機(jī)AnsibleCockpit

2019-01-30 14:04:57

Fedora存儲(chǔ)庫(kù)

2011-03-31 14:06:01

Cactisetup
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)