004.Ansible Ad-Hoc命令集

来源:https://www.cnblogs.com/itzgr/archive/2019/01/25/10317964.html
-Advertisement-
Play Games

一 Ad-Hoc使用場景 Ad-Hoc更傾向於解決簡單、臨時性任務。 1.1 Ad-Hoc基礎命令 基本語法: <host-pattern>:指Inventory中定義的主機或主機組,可以為ip、hostname、Inventory中的group組名等。同時支持具有“.”、“*”或“:”等特殊字元的 ...


一 Ad-Hoc使用場景

Ad-Hoc更傾向於解決簡單、臨時性任務。

1.1 Ad-Hoc基礎命令

基本語法:
  1 ansible <host-pattern> [options]
<host-pattern>:指Inventory中定義的主機或主機組,可以為ip、hostname、Inventory中的group組名等。同時支持具有“.”、“*”或“:”等特殊字元的匹配型字元串。 提示:<>表示該選項為必選,[]表述是該選項中的參數任選其一或多個。
  1 [options]:
  2 -v,--verbose:輸出更詳細的執行過程信息,-vvv可得到執行過程所有信息;
  3 -i PATH,--inventory=PATH:指定inventory信息,預設/etc/ansible/hosts;
  4 -f NUM,--forks=NUM:併發線程數,預設5個線程;
  5 --private-key=PRIVATE_KEY_FILE:指定秘鑰文件;
  6 -m NAME,--module-name=NAME:指定執行使用的模塊。
  提示:-m指定模塊名稱, 預設情況下是指command模塊, 可以省略不寫。
  1 -M DIRECTORY,--module-path=DIRECTORY:指定模塊存放路徑,預設/usr/share/ansible;
  2 -a 'ARGUMENTS',--args=‘ARGUMENTS’"模塊參數;
  3 -k,--ask-pass SSH:認證密碼;
  4 -K,ask-sudo=pass sudo:用戶的密碼(--sudo時使用);
  5 -o,--one-line:標準輸出至一行;
  6 -s,--sudo:相當於Linux系統下的sudo命令;
  7 -t DIRECTORY,--tree=DIRECTORY:輸出信息至DIRECTORY目錄下,結果文件以遠程主機命名;
  8 -T SECONDS,--timeout=SECONDS:指定連接遠程主機的最大超時,單位是秒;
  9 -B NUM,--background=NUM:後臺執行命令,超NUM秒後中止正在執行的任務;
 10 -P NUM,--poll=NUM:定期返回後臺任務進度;
 11 -u USERNAME,--user=USERNAME:指定遠程主機以USERNAME運行命令;
 12 -U SUDO_USERNAME,--sudo-user=SUDO_USERNAME:使用sudo,相當於Linux系統下的sudo命令;
 13 -c CONNECTION,--connection=CONNECTION:指定連接方式,可用選項paramiko(SSH)、ssh、local,local方式常用於crontab和kickstarts;
 14 -l SUBSET,--limit=SUBSET:指定運行主機;
 15 -l ~REGEX,--limit=~REGEX:指定運行主機(正則);
 16 --list-hosts:列出符合條件的主機列表,不執行任何命令。
 
  • 場景1:檢查myhost主機組所有主機是否存活.
  1 [root@manage ~]# ansible myhost -f 5 -m ping
07 解析: 172.24.8.32:表示執行命令的主機; SUCCESS:表示命令成功執行; => {……}:表示詳細返回結果; "changed": false,:表示沒有對主機做變更; "ping": "pong":表示執行ping命令返回結果為pong。
  • 場景2:返回myhost組所有主機的hostname,並列印最詳細的執行過程到標準輸出。
  1 [root@manage ~]# ansible myhost1 -s -m command -a 'hostname' -vvv
解析: 執行過程圖如下: 08
  • 場景3:列出myhost組所有主機列表。
  1 [root@manage ~]# ansible myhost --list-hosts
09
  • 場景4:將172.24.8.31伺服器以root執行sleep 20,設置最大連接超時為2s,且設置為後臺運行模式,執行過程每2s輸出一次進度,如5s還未執行完則終止該任務。
  1 [root@manage ~]# time ansible 172.24.8.31 -B 5 -P 2 -T 2 -m command -a 'sleep 20' -u root

1.2 通過Ad-Hoc查看系統設置

  • 場景1:批量查看myhost組所有主機的磁碟容量(command模塊)。
  1 [root@manage ~]# ansible myhost -a "df -hl"
10 解析:rc=0表示ResultCode=0,即命令執行成功。
  • 場景2:批量查看遠程主機記憶體使用情況(shell模塊)。
  1 [root@manage ~]# ansible myhost -m shell -a "free -m"

二 Ansible模塊使用

2.1 Ad-Hoc查看模塊介紹

ansible-doc ansible-doc是Ansible模塊文檔說明,針對每個模塊都有詳細的用法及應用案例介紹,類似Linux的man。 基本語法:
  1 ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
參數: -v,--version:顯示工具版本號; -h,--help:顯示該help說明; -M MODULE_PATH,--module-path=MODULE_PATH:指定Ansible模塊的預設載入目錄; -l,--list:列出所有可用模塊; -s,--snippet:只顯示playbook說明的代碼段; 示例:
  1 [root@manage ~]# ansible-doc -l		#列出支持的模塊
  2 [root@manage ~]# ansible-doc yum	        #查看模塊功能說明
 
  • 場景1:安裝redhat-lsb並查看伺服器系統版本號。
  1 [root@manage ~]# ansible myhost -m yum -a 'name=redhat-lsb state=present'	#安裝軟體
11 解析: "changed":true:主機是否有變更,true表示有,false表示沒有; "msg":安裝過程信息; "rc":0,resultcode:結果返回碼,非0返回碼往往是紅色並且錯誤的返回。
  1 [root@manage ~]# ansible myhost -a 'lsb_release -a'
12
  • 場景2:為伺服器安裝MySQL,並啟動,同時設置為開機啟動.
  1 [root@manage ~]# ansible myhost -m yum -a 'name=mariadb,mariadb-server state=present'
  2 [root@manage ~]# ansible myhost -m service -a 'name=mariadb state=started enabled=yes'
 

三 Ansible主機、用戶與組管理

3.1 主機變更

  • 情景1:指定組內特定主機變更。
  1 [root@manage ~]# ansible myhost -m service -a 'name=ntpd state=started' --limit "172.24.8.31"
--limit:通過limit參數限定主機做變更
  • 場景2:通過指定具體IP限定主機做變更。
  1 [root@manage ~]# ansible 172.24.8.32 -m command -a "systemctl start ntpd"
  • 場景3:指定多台主機做變更。
  1 [root@manage ~]# ansible 172.24.8.31:172.24.8.33 -m command -a "systemctl start ntpd"
解析:使用:指定多台伺服器,:非31-33,而是31和33兩台主機。
  1 [root@manage ~]# ansible 172.24.8.3* -m command -a "systemctl stop ntpd"

3.2 Linux用戶管理模塊user

參數 必填 預設值 選項 說明
append No Yes/no yes:增量添加group no:全量變更group,只設置groups指定的group組
comment     用戶的描述信息
createhome yes Yes/no yes:添加用戶同時創建家目錄; no:添加用戶時不創建家目錄;
force No Yes/no 強制,結合state=absent使用, 相當於userdel --force
generate_ssh_key No Yes/no 是否生成秘鑰,不會覆蓋已有SSH key
group     可選,設定用戶的主組
groups     設置用戶附屬組,用逗號分隔的組; 當groups設定為空,則會移除除主組外其他所有組
home     可選,設定為用戶的home目錄
login_class     可選,設定FreeBSD/OpenBSD/NetBSD系統的用戶 登陸class
name     用戶名
move_home No Yes/no 若為yes,則會臨時遷移家目錄到特定目錄
non_unique No Yes/no 可選,結合-u使用,允許改變用戶ID為非唯一值
password     可選,設定用戶的密碼(加密後的密碼)
remove No Yes/no 結合state=absent使用, 相當於userdel --remove
seuser     可選,設置seuser類型啟用SELinux
shell     可選,設定用戶的shell
skeleton     可選,設置用戶skel目錄, 需和createhome參數結合使用
ssh_key_bits 2048   可選,設定SSH key的加密位數
ssh_key_comments $HOSTHOME   可選,定義SSH key註釋信息
ssh_key_file .sha/id_rsa   可選,定義SSH key文件名
ssh_key_passphrase     設置SSH key密碼,若沒有提供,則預設不加密
ssh_key_type Rsa   可選,指定SSH key類型
state Present Present Absent present:新增用戶 absent:刪除用戶
system No Yes/no 創建為系統賬號,不會改變已經存在的用戶
uid     可選,設定為用戶的uid
update_password Always
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題:前臺checkbox控制項,選中值為1,不選值為0; 解決方案: 插入一行 <input type="hidden" name="RemberPwd" value="0"/> name值和checkbox值一致,當不選中該覆選框時,asp會預設取同name的控制項值。後臺通過response.fo ...
  • 一、在C#7.0以上版本中,方法的返回值可以通過關鍵字ref指定為返回變數的引用(而不是值)給調用方,這稱為引用返回值(Reference Return Value,或ref returns); 1.與引用參數一樣,使用關鍵字ref聲明引用返回值: 2.使用引用返回值避免了值類型在方法返回時的淺拷貝 ...
  • 1. 先手動引用DLL或者通過NuGet查找引用,這裡提供一個AjaxPro.2.dll的下載; 2. 之後的的過程不想寫了,網上都大同小異的,直接參考以前大佬寫的: AjaxPro2完整入門教程 總結:13年就有這個東西了,我到19年才知道,果然還是眼界太狹窄了; ...
  • 重置密碼:先生成重置密碼的Token,然後調用ResetPassword方法重置密碼,密碼要符合規則.. ...
  • using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using Syst ...
  • 前面有說明使用EF動態新建資料庫與表,資料庫使用的是SQL SERVER2008的,在使用MYSQL的時候還是有所不同 一、添加 EntityFramework.dll ,System.Data.Entity.dll ,MySql.Data, MySql.Data.Entity.EF6 註意:Ent ...
  • WPF自定義控制項創建 本文簡單的介紹一下WPF自定義控制項的開發。 首先,我們打開VisualStudio創建一個WPF自定義控制項庫,如下圖: 然後,我們可以看到創建的解決方案如下: 在解決方案中,我們看到了一個Themes文件夾和一個CS文件。 其中CS文件,就是我們需要編寫的自定義控制項,裡面的類繼 ...
  • 一.編寫併發布WebService服務 1.新建空web應用程式 2.右鍵項目解決方案-添加-新建項-選擇web服務 添加完成如下: 3.可以看到實例代碼里有這一行註釋,請取消註釋,因為我們要使用ajax來調用webservice // [System.Web.Script.Services.Scr ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...