紅帽RHCE考題總結練習(8.0 ansible)

来源:https://www.cnblogs.com/lydongbk/archive/2023/08/16/17633670.html
-Advertisement-
Play Games

本文是紅帽RHCE考題的總結,個別題目寫了多種步驟。 一、安裝和配置ansible 題目: 按照下方所述,在控制節點 bastion.lab.example.com 上安裝和配置 Ansible: 安裝所需的軟體包 創建名為/home/devops/ansible/inventory 的靜態清單文件 ...


本文是紅帽RHCE考題的總結,個別題目寫了多種步驟。

一、安裝和配置ansible

題目:

按照下方所述,在控制節點 bastion.lab.example.com 上安裝和配置 Ansible:

  • 安裝所需的軟體包
  • 創建名為/home/devops/ansible/inventory 的靜態清單文件,以滿足以下要求:
  • servera 是 dev 主機組的成員
  • serverb 是 test 主機組的成員
  • serverc 和 serverd 是 prod 主機組的成員
  • workstation 是 balancers 主機組的成員
  • prod 組是 webservers 主機組的成員
  • 創建名為/home/devops/ansible/ansible.cfg 的配置文件,以滿足以下要求:
  • 主機清單文件為/home/devops/ansible/inventory
  • playbook 中使用的角色的位置包括/home/devops/ansible/roles

步驟:

1、普通用戶登錄控制節點

2、使用sudo安裝ansible

[devops@bastion ~]$ sudo yum install -y ansible

3、創建名為/home/devops/ansible/inventory 的靜態清單文件。

[devops@bastion ~]$ mkdir -p ansible/roles && cd ansible/
[devops@bastion ansible]$ vim inventory
[dev]
servera
[test]
serverb
[prod]
serverc
serverd
[balancers]
workstation
[webservers:children]
prod

4、創建名為/home/devops/ansible/ansible.cfg 的配置文件(從預設配置文件/etc/ansible/ansible.cfg複製過來一份直接修改)

[devops@bastion ansible]$ vim ansible.cfg
[defaults]
inventory = /home/devops/ansible/inventory
roles_path = /home/devops/ansible/roles
remote_user = devops
host_key_checking = no
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

5、驗證ansible的配置文件路徑和查看主機清單,正確則此題做完。

[devops@bastion ansible]$ ansible --version
[devops@bastion ansible]$ ansible-inventory --graph

二、創建和運行ansible臨時命令

題目:

作為系統管理員,您需要在受管節點上安裝軟體。

請按照下方所述,創建一個名為/home/devops/ansible/adhoc.sh 的 shell 腳本,該腳本將使用Ansible 臨時命令在各個受管節點上安裝 yum 存儲庫。

存儲庫 1:

存儲庫的名稱為:EX294_BASE

描述為:EX294 base software

基礎 URL 為:http://content.example.com/rhel8.0/x86_64/dvd/BaseOS

GPG 簽名檢查為:啟用狀態

GPG 密鑰 URL 為:http://content.example.com/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release

存儲庫狀態為:啟用狀態

存儲庫 2:

存儲庫的名稱為:EX294_STREAM

描述為:EX294 stream software

基礎 URL 為:http://content.example.com/rhel8.0/x86_64/dvd/AppStream

GPG 簽名檢查為啟用狀態

GPG 密鑰 URL 為:http://content.example.com/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release

存儲庫狀態為:啟用狀態

步驟:

1、創建一個名為/home/devops/ansible/adhoc.sh 的 shell 腳本。(此題需要用到yum_repository模塊,使用ansible臨時命令的-m參數指定模塊,使用-a參數指定模塊參數,使用ansible-doc查看模塊的使用方法,把命令模板直接複製到文件中,無需死記命令)

(1)yum_repository模塊命令記不住。可以使用ansible-doc -l命令列出所以模塊,過濾yum即可。

(2)然後使用ansible手冊詳細查看ansible-doc yum_repository

直接翻到後面查看實例:

(3)編寫配置文件

2、給腳本執行許可權,運行腳本測試

[devops@bastion ansible]$ chmod +x adhoc.sh
[devops@bastion ansible]$ ./adhoc.sh

三、安裝軟體包

題目:

創建一個名為/home/devops/ansible/packages.yml 的 playbook:

  • 將 php 和 mariadb 軟體包安裝到 dev、test 和 prod 主機組中的主機上。(servera——serverd)

  • 將 RPM Development Tools 軟體包組安裝到 dev 主機組中的主機上。(servera)

  • 將 dev 主機組中主機上的所有軟體包更新為最新版本。(servera)

步驟:

1、此題需要用到yum模塊,只需要用到它的兩個參數name:包名,state:latest安裝最新包。此題先將hosts中的所有主機寫上,然後在tasks中寫入when語句,按條件執行。

註意最後一個任務的yum參數有state:latest,前面兩個任務也可以加上這個參數。when語句用到的兩個變數,inventory_hostname指的是所有的主機,groups[‘dev’]指的是所有的主機和組中的dev組的主機。所以此題的when語句就表示所有主機中在dev組的主機執行任務。

四、使用RHEL系統角色

題目:

安裝 RHEL 系統角色軟體包,並創建名稱為/home/devops/ansible/timesync.yml,符合以下條件的 playbook:

  • 在所有受管節點上運行

  • 使用 timesync 角色

  • 配置該角色,以使用當前有效的 NTP 提供商

  • 配置該角色,以使用時間伺服器172.25.250.254

  • 配置該角色,以啟用 iburst 參數

步驟:

1、安裝rhel系統角色軟體包。

[devops@bastion ansible]$ sudo yum install -y rhel-system-roles

2、將下載的角色中的timesync角色複製到ansible/roles目錄中;並改名為timesync

3、查看所有已安裝的角色

4、查看timesync角色的使用方法。

5、創建名稱為/home/devops/ansible/timesync.yml的playbook

五、使用ansible galaxy安裝角色

題目:

使用Ansible Galaxy和要求文件/home/devops/ansible/roles/requirements.yml。

從以下 URL下載角色並安裝到/home/devops/ansible/roles:

  • http://materials.example.com/laoma/haproxy.tar

  此角色的名稱應當為 balancer

  • http://materials.example.com/laoma/phpinfo.tar

  此角色的名稱應當為 phpinfo

步驟:

1、創建requirements.yml文件

2、運行安裝角色

[devops@bastion ansible]$ ansible-galaxy install -r requirements.yml

六、創建和使用角色

題目:

(1)根據下列要求,在/home/devops/ansible/roles 中創建名為 apache 的角色:

  • httpd 軟體包已安裝,設為在系統啟動時啟用並啟動(yum模塊,service模塊)

  • 防火牆已啟用並正在運行,並使用允許訪問 Web 伺服器的規則(firewalld模塊)

  • 模板文件 用於創建文件/var/www/html/index.html具有以下輸出內容:(template模塊)

  Welcome to HOSTNAME on IPADDRESS 。

  HOSTNAME 是受管節點的完全限定功能變數名稱,IPADDRESS 則是受管節點的 IP 地址。

(2)按照下方所屬,創建一個使用此角色的 playbook /home/devops/ansible/newrole.yml

  • 該 playbook 在 webservers 主機組中的主機上運行

步驟:

1、創建apache角色

[devops@bastion ansible]$ ansible-galaxy init apache --init-path=roles

也可以先進入roles目錄再創建,就不用指定--init-path參數了。

2、進入apache角色的tasks目錄,根據題目的第一部分需求編輯main.yml文件。

3、在templates目錄中按照需求編輯html.j2文件。

HOSTNAME和IPADDRESS 所指定的功能變數名稱和ip變數可以根據 Ansible 主機名 -m setup | grep ***查看

4、根據題目的要求編輯/home/devops/ansible/newrole.yml

七、從ansible  galaxy使用角色

題目:

根據下列要求,創建一個名為/home/devops/ansible/roles.yml 的 playbook:

(1)playbook 中包含一個 play,該 play 在 balancers 主機組中的主機上運行並將使用 balancer 角色。

  • 此角色配置一項服務,以在 webservers 主機組中的主機之間平衡 Web 伺服器請求的負載。

  • 瀏覽到 balancers 主機組中的主機(例如http://workstation.lab.example.com)將生成以下輸出:

   Welcom to serverc.lab.example.com on 172.25.250.8

  • 重新載入瀏覽器將從另一 Web 伺服器生成輸出:Welcom to serverd.lab.example.com on 172.25.250.9

(2)playbook 中包含另外一個 play,該 play 在 webservers 主機組中的主機上運行並將使用 phpinfo 角色。

  • 通過 URL/hello.php 瀏覽到 webservers 主機組中的主機將生成以下輸出:Hello PHP World from FQDN。其中,FQDN 是主機的完全限定名稱。

  • 例如,瀏覽到 http://serverc.lab.example.com/hello.php,會生成輸出:Hello PHP World from serverc.lab.example.com另外還有 PHP 配置的各種詳細信息,如安裝的 PHP 版本等。

  • 同樣,瀏覽到 http://serverd.lab.example.com/hello.php,會生成輸出:Hello PHP World from serverd.lab.example.com另外還有 PHP 配置的各種詳細信息,如安裝的 PHP 版本等。

步驟:

1、在第五題的時候下載了兩個角色,分別是tar和phpinfo.tar。此題直接調用這兩個角色即可。裡面的負載均衡配置都預設配置好了。

2、創建並配置/home/devops/ansible/roles.yml文件。

八、創建和使用邏輯捲

題目:

創建一個名為/home/devops/ansible/lv.yml 的 playbook,它將在所有受管節點上運行以執行下列任務。

創建符合以下要求的邏輯捲:

  • 在 research 捲組中創建邏輯捲

  • 邏輯捲名稱為 data

  • 邏輯捲大小為 6000MiB

  • 使用 ext4 文件系統格式化邏輯捲

  • 如果無法創建請求的邏輯捲大小,應顯示錯誤信息:Could not create logical volume of that size

   並且應改為使用大小 800MiB。

  • 如果捲組 research 不存在,應顯示錯誤信息:Volume group done not exist
  • 不要以任何方式掛載邏輯捲

步驟:

1、本題需要使用ansible block的錯誤處理。

  • block: 定義要運行的主要任務

  • rescue: 定義要在block子句中定義的任務失敗時運行的任務

  • always: 定義始終都獨立運行的任務,不論block和rescue子句中定義的任務是成功還是失敗

2、根據題目要求編輯/home/devops/ansible/lv.yml文件。

或:方法二:(推薦)

九、生成主機文件

題目:

  • 完成該模板,以便用它生成以下文件,針對每個清單主機包含一行內容,其格式與/etc/hosts 相同。

  • 創建名為/home/devops/ansible/hosts.yml 的 playbook,它將使用此模板在 dev 主機組中的主機上生成文件/etc/myhosts。

  • 該 playbook 運行後,dev 主機組中主機上的文件/etc/myhosts 應針對每個受管主機包含一行內容:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.250.9 workstation.lab.example.com workstation
172.25.250.10 servera.lab.example.com servera
172.25.250.11 serverb.lab.example.com serverb
172.25.250.12 serverc.lab.example.com serverc
172.25.250.13 serverd.lab.example.com serverd

註:清單主機名稱的顯示順序不重要。

步驟:

1、首先下載並修改模板文件

2、根據題目要求編輯/home/devops/ansible/hosts.yml文件

十、修改文件內容

題目:

按照下方所述,創建一個名為/home/devops/ansible/issue.yml 的 playbook:

  • 該 playbook 將在所有清單主機上運行。

  • 該 playbook 會將/etc/issue 的內容替換為下方所示的一行文本:

  • 在 dev 主機組中的主機上,這行文本顯示為:Development
  • 在 test 主機組中的主機上,這行文本顯示為:Test
  • 在 prod 主機組中的主機上,這行文本顯示為:Production

步驟:

1、根據題目要求創建/home/devops/ansible/issue.yml文件。

十一、創建web內容目錄

題目:

按照下方所述,創建一個名為/home/devops/ansible/webcontent.yml 的playbook:

  • 該 playbook 在 dev 主機組中的受管節點上運行。

  • 創建符合下列要求的目錄/webdev:

    所有者為 webdev 組 ;

    具有常規許可權:

    owner=read+write+execute,

    group=read+write+execute,

    other=read+execute

      具有特殊許可權:設置組 ID

  • 用符號鏈接將/var/www/html/webdev 鏈接到/webdev

  • 創建文件/webdev/index.html,其中包含如下所示的單行文件:Development

  • 在 dev 主機組中主機上瀏覽此目錄(例如 http://servera.lab.example.com/webdev/)將生成以下輸出:Development

步驟:

1、根據此題中最後一句話得知,需要在dev組的主機上部署apache伺服器。目前已經有了apche角色,直接部署即可。

2、根據要求創建編輯/home/devops/ansible/webcontent.yml文件。

十二、生成硬體報告

題目:

  • 創建一個名為/home/devops/ansible/hwreport.yml 的 playbook,它將在所有受管節點上生成含有以下信息的輸出文件/root/hwreport.txt:

  • 清單主機名稱
  • 以 MB 表示的總記憶體大小
  • BIOS 版本
  • 磁碟設備 vda 的大小
  • 磁碟設備 vdb 的大小
  • 輸出文件中的每一行都是 key=value 對
  • 您的 playbook 應當

  • 從 http://materials.example.com/laoma/hwreport.empty 下載文件,並將它保存為/root/hwreport.txt
  • 使用正確的值更改/root/hwreport.txt
  • 如果硬體項不存在,相關的值應設為 NONE

步驟:

1、首先根據提供的鏈接下載txt文件。

2、Playbook需要用到一些內置變數。

清單主機名稱:inventory_hostname
記憶體MB顯示:ansible_memtotal_mb
BIOS:ansible_bios_version
DISK_SIZE_VDA:ansible_devices.vda.size
DISK_SIZE_VDB:ansible_devices.vdb.size

通過ansible localhost -m setup命令可以查看到這些變數。

3、根據題目要求編寫/home/devops/ansible/hwreport.yml文件

方法二(推薦):

十三、創建密碼庫

題目:

按照下方所述,創建一個 Ansible 庫來存儲用戶密碼:

  • 庫名稱為/home/devops/ansible/locker.yml

  • 庫中含有兩個變數,名稱如下:

    pw_developer,值為 Imadev

    pw_manager,值為 Imamgr

  • 用於加密和解密該庫的密碼為:laoma

  • 密碼存儲在文件/home/devops/ansible/secret.txt 中

步驟:

1、編輯/home/devops/ansible/locker.yml文件

2、編輯加密和解密的庫

3、使用加密庫加密locker.yml文件

4、使用加密庫查看加密後的locker.yml文件

十四、創建用戶賬戶

題目:

  • 從 http://materials.example.com/laoma/user_list.yml 下載要創建的用戶的列表,並將它保存到/home/devops/ansible 目錄。

  • 在本次考試中使用在其他位置創建的密碼庫/home/devops/ansible/locker.yml。

創建名為/home/devops/ansible/users.yml 的 playbook,從而按以下所述創建用戶帳戶:

職位描述為 developer 的用戶應當:

  • 在 dev 和 test 主機組中的受管節點上創建
  • 從 pw_developer 變數分配密碼
  • 是補充組 devops 的成員

職位描述為 manager 的用戶應當:

  • 在 prod 主機組中的受管節點上創建
  • 從 pw_manager 變數分配密碼
  • 是補充組 opsmgr 的成員
  • 密碼採用 SHA512 哈希格式。

  • 您的 playbook 應能夠在本次考試中使用在其他位置創建的庫密碼文件/home/devops/ansible/secret.txt 正常運行。

步驟:

1、首先根據鏈接下載user_list.yml文件。並保存到/home/devops/ansible 目錄。

# wget http://materials.example.com/laoma/user_list.yml

2、根據題目要求編輯yml文件

方法一:

方法二:定義兩個paly(推薦):

十五、更新ansible庫的密鑰

題目:

按照下方所述,更新現有 Ansible 庫的密鑰:

  • 從http://materials.example.com/laoma/salaries.yml 下載 Ansible 庫到/root/devops/ansible目錄

  • 當前的庫密碼為 laoma

  • 新的庫密碼為 redhat

  • 庫使用新密碼保持加密狀態

步驟:

1、首先根據鏈接下載yml到ansible目錄。

# wget http://materials.example.com/laoma/salaries.yml

2、更改庫密碼


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 一、什麼是異常過濾器? 異常過濾器(**Exception Filters**)是 ASP.NET Core 中用於處理全局異常的機制。它們允許你在發生異常時捕獲、處理和記錄異常,並提供自定義的異常處理邏輯。異常過濾器在整個應用程式範圍內生效,可以用於處理各種異常情況。用於實現常見的錯誤處理策 ...
  • ### VS安裝Avalonia模版 執行以下命令,安裝Avalonia模版(.NET6及之前版本使用--install): ```bash dotnet new install Avalonia.Templates ``` 執行後,會安裝如下模版: ``` 模板名 短名稱 語言 標記 Avalon ...
  • # Nginx反向代理服務流式輸出設置 # 1.問題場景 提問:為什麼我部署的服務沒有流式響應 最近在重構原有的GPT項目時,遇到gpt回答速度很慢的現象。在使用流式輸出的介面時,介面響應速度居然還是達到了30s以上。 # 2.現象分析 分析現象我發現,雖然前端還是流式列印的結果,但是,好像是介面處 ...
  • 為何模塊化 模塊化是一種分治思想,不僅可以分離複雜的業務邏輯,還可以進行不同任務的分工。模塊與模塊之間相互獨立,從而構建一種松耦合的應用程式,便於開發和維護。 開發技術 .Net 6 + WPF + Prism (v8.0.0.1909) + HandyControl (v3.4.0) 知識準備 什 ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • 全程我在網路上收集這些資料,太零碎了,每一個一看就會,一動手就廢,而且很多都不能實現我白嫖的夢想 我一個人折騰了快一周,現在可以正常訪問手機電腦多端訪問 給個贊再走吧 此處為沒有公網IP(回去折騰你家寬頻去,不知道可以去搜索如何獲得)和功能變數名稱的辦法 簡單的說就是想完全白嫖的那種(甚至雲伺服器(那個有公 ...
  • # 二進位包安裝mysql ## 準備 1.先查看系統中是否已存在mysql,存在將其卸載 ``` rpm -qa mysql rpm -qa mariadb yum remove xxx -y ``` 2.環境清理 清空PATH有關的mysql 註釋掉之前的$PATH 沒有就跳過這步 ``` #e ...
  • 為什麼需要設備驅動模型 內核版本發展 2.4版本之前內核沒有統一的設備驅動模型,但是可以用(例如先前的led字元設備驅動實驗,使用前需要手動調用mknod命令創建設備文件,從而進一步控制硬體)。 2.4~2.6版本內核使用devfs,掛載在/dev目錄。需要在內核驅動中創建設備文件(調用devfs_ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...