【Linux】RHCE中ansible的配置

1.安裝并配置ansible

第一步先安裝ansible所需軟件

#安裝ansible所需軟件 [devops@workstation ~]$ sudo dnf install ansible ansible-navigator rhel-system-roles -y

第二步登錄鏡像倉庫,在鏡像倉庫下載鏡像容器來運行ansible

由于ansible-navigator 知ansible是在容器運行的,在配置之前先登錄上鏡像倉庫

[devops@workstation ansible]$ podman login utility.lab.example.com #鏡像倉庫

[devops@workstation ansible]$ vim ansible-navigator.yml? ? ? ? #設置ansible需要的鏡像

---

ansible-navigator: ansible: config: path: ./ansible.cfg color: osc4: false execution-environment: image: utility.lab.example.com/ee-supported-rhel8:latest #這是一個鏡像里的容器

#查看ansible是否可以運行正常 [devops@workstation ansible]$ ansible-navigator images #檢查并從鏡像庫下載所需的鏡像

第三步配置ansible配置文件

優先讀取當前目錄>家目錄>系統

/home/devops/ansible/ > .ansible > /etc/ansible/ansible.cfg

###

[devops@workstation ansible]$ ansible-config init --disabled | less #查看ansible配置模板

[devops]workstation ansible]$ vim ansible.cfg

[defaults] #ansible基本信息

remote_user=devops #發起ssh的用戶

inventory=/home/devops/ansible/inventory #指定工作清單

host_key_checking=False #不詢問是否保存私鑰,直接選擇yes

#ask_pass=False #進行一次密碼輸入后后續就不用加-k參數

由于實驗環境有問題,實驗用戶沒有私鑰

scp root@172.25.250.250:/root/.ssh/id_rsa ~/.ssh/id_rsa #把主機用戶私鑰拷貝給虛擬機

collections_path=/home/devops/ansible/mycollections #roles_path=roles:/home/devops/ansible/roles

[privilege_escalation] #ansible提權信息?

become=True? ? ? ??

become_ask_pass=False

become_method=sudo

become_user=root

編輯好配置ansible配置文件后還要生成清單才能運行

#生成工作清單

[devops@workstation ansible]$ vim inventory

[dev]

servera

[test]

serverb

[balancers]

serverb

[prod]? ? ? ? #p意思為prod組有兩個成員serverc與serverd

serverc

serverd

[webservers:children]? ? ? ? ?#指定子組

prod

[devops@workstation ansible]$ ansible all --list-hosts #列出所有主機

#查看清單信息

[devops@workstation ansible]$ ansible-navigator inventory -m stdout --graph

。。。 省略 。。。

@all: |--@balancers:

| |--serverb

|--@dev:

| |--servera

|--@test:

| |--serverb

|--@ungrouped:

|--@webservers:

[devops@workstation ansible]$ ansible all -m shell -a "whoami" #自動化所有節點主機在shell運行命令,-k詢問主機密碼

2.創建yum倉庫

在此之前建議編輯vim工作模式,便于去編寫yml文件

ansible中有兩種輸出形式

ansible中ad-hoc形式

$ansible all -m shell -a "whoami"

ansible中playbook形式,也就是yml結尾的文件,等同于ansible中的腳本

$ansible-navigator run xxx.yml -m stdout #運行playbook并把顯示到輸出上

yml文件使用列表與字典表示,前面有-的表示是列表列表里包含字典,然后是子列表

一個playbook要包含描述,執行清單,動作

例子

---

- name:test play

host : all

tasks:

- name: rm file #動作名稱

? ansible.builtin.shell: #模塊

? rm -rf /mnt/file #模塊參數


ansible-doc -l | grep shell

ansible-doc shell | less #查詢用法

實驗

#使用ansible-doc來搜索模板
$ ansible-doc -l | grep repo
$ ansible-doc ansible.builtin.yum_repository  | less

測試

運行完成后可以使用ad-hoc形式來測試

[devops@workstation ansible]$ ansible all -m shell -a "dnf clean all"

[devops@workstation ansible]$ ansible all -m shell -a "dnf makecache"

[devops@workstation ansible]$ ansible all -m shell -a "dnf repolist"

3.安裝collections

前提要在ansible配置文件指定collection路徑

先從資源連接獲取資源

wget http://materials.example.com/tools/community-general-4.3.0.tar.gz

然后使用galaxy命令安裝colllection

[devops@workstation ansible]$ ansible-galaxy collection install ansible-posix1.4.0.tar.gz --force

最后查看collections

[devops@workstation ansible]$ ansible-galaxy collection list

4.安裝軟件包

實驗

測試

5.使用系統自帶角色

什么是角色?

劇本是把所有東西放在一個文件里,角色是把各自的元素拆分開放在各自的目錄里

$ansible-galaxy init apache #創建角色

$ansible-galaxy list #列出角色

以下是創建角色后的子目錄,可將劇本所以東西都放在角色的子目錄中,最后在劇本playbook直接使用roles引用即可

上圖為如何使用創建的角色,下面將介紹如何使用系統角色

如何使用系統角色?實驗要求使用selinux角色

$ rpm -qa | grep role #由于selinux是系統自帶的角色,所以查看系統自帶的角色模板 rhel-system-roles-1.23.0-2.21.el9.noarch

$ rpm -qd rhel-system-roles-1.23.0-2.21.el9.noarch | grep selinux-playbook #查看角色模板的說明信息查找例子模板

$ less /usr/share/doc/rhel-system-roles/selinux/exampleselinux-playbook.yml #查看模板來使用角色

~]$ ansible-galaxy list | grep selinux #在家目錄下列出系統的角色,按照要求放入playbook中的roles引入

  • rhel-system-roles.selinux, (unknown version) #前面加redhat.并要把杠換成下 劃線

  • linux-system-roles.selinux, (unknown version)

最后按照模板來編寫playbook

運行后測試

$ ansible-navigator run -m stdout selinux.yml

]$ ansible servera -m shell -a 'cat /etc/sysconfig/selinux'

6.使用 Ansible Galaxy 安裝角色

第一步先在ansible的roles目錄創建yml文件來編寫要下載的角色資源地址并且要在ansible配置文件中指定roles的路徑目錄

第二步在指定yaml文件并下載到roles目錄中

$ ansible-galaxy role install -r roles/requirements.yaml -p ./roles/

-r 參數,用戶能夠通過一個 YAML 格式的文件(通常命名為 requirements.yaml),一次性批量安裝多個角色。

-p 參數,指定角色的安裝目錄,要把角色安裝在設置的配置文件指定的目錄才能使用ansible-galaxy命令識別,注意ansible-galaxy要在ansible配置文件的目錄使用才能識別的到,在家目錄使用就是識別系統的ansible配置文件識別的就是系統的角色

運行安裝后測試

7.創建和使用創建的角色

什么是事實變量?

ansible all -m setup | less #查看所有的事實變量,事實變量是主機中所有資源信息使用鍵值對的形式來表示的變量,引用事實變量子目錄要用.隔開

ansible-playbook test.yml #運行playbook

什么是j2模板?

創建xxx.j2結尾的文件,能識別變量,里面使用{{}}引用鍵事實變量,然后再paybook中使用template參數,src表示j2文件的路徑,dest表示生成的事實變量,輸出的是事實變量的值

ansible-galaxy init apache #在roles目錄下創建角色

ansible-galaxy --list-all #在ansible配置文件目錄下列出創建的角色

[devops@workstation ansible]$ cd roles/apache/ [devops@workstation apache]$ ls defaults files handlers meta README.md tasks templates tests vars [devops@workstation apache]$ vim templates/index.html.j2 #編寫j2文件

[devops@workstation ansible]$ cd roles/apache/tasks/ [devops@workstation tasks]$ vim main.yml #編寫tasks執行的任務

實驗要求:使用apache發布網頁

tasks的任務:

要安裝httpd,安裝火墻

httpd服務要開機啟動并立即運行,火墻要放行httpd

還要使用模板創建index.html文件

最后創建playbook文件并運行,使用curl來測試

8.從Ansible Galaxy 使用角色

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90177.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90177.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu server系統 安裝寶塔

更新系統軟件包sudo apt update && sudo apt upgrade -y提示,如果想博主這樣是存綠色liunx系統,要先安裝python3腳本才可以python3 --version有pyhton版本號就是安裝了,沒有的話就要安裝安裝 Pythonsudo apt update sudo apt install…

用C++實現五子棋游戲

#include <iostream> #include <vector> #include <string> #include <iomanip> // 用于控制輸出格式 #include <limits> // 用于numeric_limitsusing namespace std;// 游戲常量定義 const int BOARD_SIZE 15; // 定義棋盤大小為15x15// 棋…

【LeetCode 熱題 100】73. 矩陣置零——(解法一)空間復雜度 O(M + N)

Problem: 73. 矩陣置零 題目&#xff1a;給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 文章目錄整體思路完整代碼時空復雜度時間復雜度&#xff1a;O(M * N)空間復雜度&#xff1a;O(M N)整體思路…

【深度學習新浪潮】國內零樣本抗體設計的科研進展如何?

什么是AI零樣本抗體設計? AI零樣本抗體設計(Zero-shot AI Antibody Design)是指不依賴任何已知抗體序列或結構數據,僅根據靶點抗原信息,通過人工智能直接生成具有高親和力、高特異性的全新抗體序列的技術。其核心在于突破傳統抗體研發的“數據依賴瓶頸”,實現真正的“從…

【論文閱讀】A Diffusion model for POI recommendation

論文出處&#xff1a;ACM Transactions on Information Systems (TOIS) SCI一區 CCF-A期刊 論文地址&#xff1a;[2304.07041] A Diffusion model for POI recommendation 論文代碼&#xff1a;Yifang-Qin/Diff-POI: The official PyTorch implementation of Diff-POI. 目…

Rust實現FasterR-CNN目標檢測全流程

使用 Rust 和 FasterR-CNN 進行目標檢測 FasterR-CNN 是目標檢測領域廣泛使用的深度學習模型。Rust 生態中可以通過 tch-rs(Torch 綁定)調用預訓練的 PyTorch 模型實現。以下為完整實現步驟: 環境準備 安裝 Rust 和必要的依賴: cargo add tch cargo add anyhow # 錯誤…

Github 2025-07-03Go開源項目日報Top10

根據Github Trendings的統計,今日(2025-07-03統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Go項目10JavaScript項目2Go編程語言:構建簡單、可靠和高效的軟件 創建周期:3474 天開發語言:Go協議類型:BSD 3-Clause “New” or “Revise…

XML Schema 安裝使用教程

一、XML Schema 簡介 XML Schema&#xff08;XSD&#xff0c;全稱 XML Schema Definition&#xff09;是用于定義 XML 文檔結構、數據類型和數據約束的標準方式。它比 DTD 更加強大&#xff0c;支持數據類型、默認值、命名空間等&#xff0c;是企業級 XML 應用推薦的驗證方式。…

【字節跳動】數據挖掘面試題0008:計算西瓜視頻內容好評率

文章大綱題目描述題目描述 西瓜視頻近期開展了”2020百大人氣創作者”優質內容扶持項目&#xff0c;鼓勵用戶產出優質的視頻內容。 現需要統計2020年11月01日至2020年11月30日期間創作的視頻中&#xff0c; “科技”大類下“數碼測評"子類的視頻好評率&#xff08;好評率好…

Linux 進程控制:全面深入剖析進程創建、終止、替換與等待

文章目錄引言一、進程創建&#xff1a;fork()系統調用的奧秘1.1 fork()的基本原理1.2 代碼示例與解讀1.3 寫時復制&#xff08;COW&#xff09;優化二、進程終止&#xff1a;exit()與_exit()的抉擇2.1 exit()和_exit()的區別2.2 代碼示例與分析三、進程替換&#xff1a;exec()函…

PJSIP 中的 TCP 傳輸配置指南

PJSIP 支持通過 TCP 傳輸 SIP 消息&#xff0c;相比 UDP 提供了更可靠的傳輸機制。以下是關于在 PJSIP 中使用 TCP 的詳細指南。1. 創建 TCP 傳輸基本 TCP 傳輸配置cpjsua_transport_config tcp_cfg; pjsua_transport_config_default(&tcp_cfg); tcp_cfg.port 5060; // SI…

小菜狗的云計算之旅,今天學習MySQL數據庫基礎知識及操作

目錄 一、概述 數據庫概念 數據庫的類型 關系型數據庫模型 關系數據庫相關概念 二、安裝 1、mariadb安裝 2、mysql安裝 3、啟動并開機自啟 4、本地連接&#xff08;本地登錄&#xff09; 三、mysql數據庫配置與命令 yum安裝后生成的目錄 mysql服務器的啟動腳本 數…

為什么是直接在**原型(prototype)上**添加函數

這是一個非常經典、核心的 JavaScript 面向對象編程問題&#xff1a;> 為什么是直接在**原型&#xff08;prototype&#xff09;上**添加函數&#xff0c;而不是在類/構造函數內部直接添加&#xff1f;你提到的代碼中&#xff1a;javascript function TopSearchComponent() …

深入理解 classnames:React 動態類名管理的最佳實踐

在現代前端開發中&#xff0c;我們經常需要根據組件的狀態、屬性或用戶交互來動態切換 CSS 類名。雖然 JavaScript 提供了多種方式來處理字符串拼接&#xff0c;但隨著應用復雜性的增加&#xff0c;傳統的類名管理方式很快就會變得混亂不堪。這時&#xff0c;classnames 庫就像…

C++系列(七):深度探索C++內存 --- 分區、堆棧、new/delete與高效編程實踐

引言 程序運行的本質是對數據的處理&#xff0c;而內存則是程序執行的核心舞臺。理解內存的物理與邏輯分區&#xff0c;是掌握程序底層行為、編寫高效可靠代碼的關鍵基石。內存并非混沌一片&#xff0c;而是被嚴格劃分為代碼區、全局區、棧區和堆區。每個區域擁有獨特的生命周…

微信小程序71~80

1.總結小程序生命周期 小程序冷啟動&#xff0c;鉤子函數執行的順序保留當前頁面&#xff0c;進入下一個頁面&#xff0c;鉤子函數執行的順序銷毀當前頁面&#xff0c;進入下一個頁面&#xff0c;鉤子函數執行的順序小程序熱啟動&#xff0c;鉤子函數執行的順序 2.使用Componen…

[Pytest][Part 3]檢測python package狀態

目錄 實現需求1&#xff1a; 檢查python package狀態——pkg_resource hook實現自動檢測包狀態 conftest.py hook鉤子函數 Part1: https://blog.csdn.net/x1987200567/article/details/144915315?spm1001.2014.3001.5501 從這里開始逐個實現Part1中的需求 實現需求1&a…

自定義時間范圍選擇組件使用教程(基于 Vue 3 + Element Plus)

&#x1f553; 自定義時間范圍選擇組件使用教程&#xff08;基于 Vue 3 Element Plus&#xff09;? 一個靈活實用的時間范圍選擇器&#xff0c;支持開始時間、結束時間、快捷時間選項、本地雙向綁定、插槽擴展等功能。–&#x1f4d8; 一、功能介紹 該組件基于 Element Plus …

YOLOv8 模型轉換 ONNX 后 C# 調用異常:一個參數引發的跨平臺適配難題

一、問題背景&#xff1a;從 Python 訓練到 C# 部署的跨平臺需求 作為一名 C# 開發者&#xff0c;我在完成 YOLOv8 模型訓練&#xff08;使用 Ultralytics 官方框架&#xff0c;訓練數據為自定義目標檢測數據集&#xff0c;輸入尺寸 640x640&#xff0c;訓練輪次 100 輪&#…

Apache Cloudberry 亮相 2025 IvorySQL 生態大會暨 PostgreSQL 高峰論壇

6 月 27 日至 28 日&#xff0c;IvorySQL 2025 生態大會暨 PostgreSQL 高峰論壇在泉城濟南順利召開。本屆大會由 IvorySQL 開源數據庫社區主辦、瀚高基礎軟件股份有限公司承辦&#xff0c;吸引了來自國內外的數據庫技術專家、開發者與開源愛好者齊聚一堂&#xff0c;聚焦數據庫…