003.Ansible基礎使用

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

一 Ansible命令用法 Ansible命令行執行方式有:Ad-Hoc、Ansible-playbook兩種,Web方式其官方提供付費產品Tower。Ad-Hoc主要用於臨時命令的執行,Ansible-playbook相當於Ad-Hoc的集合,通過一定的規則編排在一起執行。 1.1 免密鑰 提示: ...


一 Ansible命令用法

Ansible命令行執行方式有:Ad-Hoc、Ansible-playbook兩種,Web方式其官方提供付費產品Tower。Ad-Hoc主要用於臨時命令的執行,Ansible-playbook相當於Ad-Hoc的集合,通過一定的規則編排在一起執行。

1.1 免密鑰

  1 [root@manage ~]# ssh-keygen -t rsa -P ''

06_thumb1

  1 [root@localhost ~]# mkdir .ssh
  2 [root@manage ~]# scp -p /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
  3 [root@manage ~]# scp -p /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
  4 [root@manage ~]# scp -p /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

提示:也可使用以下命令複製到相應的主機:

  1 [root@manage ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

1.2 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.3 playbook基礎命令

基本語法:

  1 ansible-playbook <PLAYBOOKNAME>
  1 --ask-vault-pass:加密playbook文件時提示輸入密碼;
  2 -D,--diff:顯示文件更新的不同的地方;
  3 -e EXTRA_VARS,--extra-vars=EXTRA_VARS:在playbook中引入外部變數;
  4 --flush-cache:將fact清除到的遠程主機緩存;
  5 --force-handlers:強制運行handlers任務,即使在任務失敗的情況下;
  6 -i INVENTORY:指定要讀取的Inventory文件;
  7 --list-tags:列出所有可用的tags;
  8 --list-tasks:列出所有即將被執行的任務;
  9 --skip-tags=SKIP_TAGS:跳過指定的tags任務;
 10 --start-at-task=START_AT_TASK:從第幾條任務開始執行;
 11 --step:逐步執行playbook定義的任務,並經人工確認後繼續執行下一個任務;
 12 --syntax-check:檢查playbook中的語法書寫;
 13 -t TAGS,--tags=TAGS:指定執行tags的任務。

二 Ansible系列命令介紹

2.1 ansible

ansible是Ansible基礎命令之一,起主要在如下場景使用:

  • 非固化需求;
  • 臨時性操作;

二次開發介面調用。

2.2 ansible-galaxy

ansible-galaxy類似GitHub或PIP功能,通過ansible-galaxy命令可查找和安裝優秀的Roles。

基本語法:

  1 ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help]
  2 [options]
  3 info:列出指定Role詳細信息;
  4 install:下載並安裝galaxy指定的Roles到本地;
  5 list:列出本地已下載的Roles;
  6 remove:刪除本地已下載的Roles。

2.3 ansible-pull

Ansible預設使用push模式,使用ansible-pull命令可使用Ansible另一種工作模式,pull模式。通常適應於以下場景:

大量機器需要配置,即使使用高併發線程依舊要花費很長時間;

在沒有網路的機器上運行Ansible。

基本語法:

  1 ansible-pull -U <repository> [options] [<playbook.yml>]

提示:通過ansible-pull結合Git和crontab可實現通過crontab定期拉取指定的Git版本到本地,並以指定模式自動運行預先制訂的指令。

2.4 ansible-doc

ansible-doc是Ansible模塊文檔說明,針對每個模塊都有詳細的用法及應用案例介紹,類似Linux的man。

基本語法:

  1 ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]

示例:

  1 [root@manage ~]# ansible-doc -l		#列出支持的模塊
  2 [root@manage ~]# ansible-doc ping	        #查看模塊功能說明

2.5 ansible-playbook

ansible-playbook是日常使用頻率最高的命令,通過讀取預先編寫好的playbook文件實現批量管理。Playbook具有編寫簡單、可定製性高、靈活方便,以及可固化日常所有操作的特點。

基本語法:

  1 ansible-playbook [options] playbook.yml [playbook2 ...]

2.6 ansible-vault

ansible-vault主要用於配置文件加密,如編寫的Playbook配置文件中包含敏感信息,可使用ansible-vault加密/解密此配置文件。

基本語法:

  1 ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]

加密示例:

  1 ansible-vault encrypt test.yml

解密示例:

  1 ansible-vault decrypt test.yml

2.7 ansible-console

ansible-console是Ansible提供的互動式工具,用戶可以在ansible-console虛擬出的終端上類似Shell使用Ansible內置命令。

三 Inventory配置及詳解

Inventory是Ansible管理主機信息的配置文件,預設存放於:/etc/ansible/hosts,命令使用Inventory分組格式如下:ansible -i /etc/ansible/hosts myhost -m ping

3.1 定義主機和組

  1 [root@manage ~]# vi /etc/ansible/hosts
  2 172.24.8.31		#可直接定義IP地址
  3 client02		#可定義主機名
  4 client03:2345	#可指定非標準22埠
  5 [myhost]		#定義一個名為myhost的分組
  6 172.24.8.31
  7 172.24.8.3[2:4]	#代表172.24.8.32/172.24.8.33/172.24.8.34也屬於此分組

提示:支持同一個主機屬於多個分組。

3.2 定義主機變數

  1 172.24.8.31 ntp_server=ntp1.aliyun.com

3.3 定義組變數

  1 [myhost:vars]
  2 ntp_server=ntp1.aliyun.com	#定義myhost組中所有主機的ntp_server值

3.4 定義組嵌套及組變數

  1 [myhost1]
  2 172.24.8.31
  3 [myhost2]
  4 172.24.8.32
  5 172.24.8.33:2345
  6 [myhost:children]
  7 myhost1
  8 myhost2
  9 [myhost:vars]
 10 ntp_server=ntp1.aliyun.com

3.5 多重變數定義

變數除了可以定義在Inventory中,也可以獨立於Inventory文件之外,通常以.yml、.yaml、.json為尾碼或者無尾碼。器讀取順序如下:

  1. Inventory配置文件(預設/etc/ansible/hosts)
  2. Playbook中的vars定義的區域
  3. Roles中的vars目錄下的文件
  4. Roles同級目錄group_vars和hosts_vars目錄下的文件

四 Ansible與正則

4.1 全量匹配

  1 [root@manage ~]# ansible "*" -m ping
  2 [root@manage ~]# ansible all -m ping
  3 [root@manage ~]# ansible 172.24.8.* -m ping

4.2 邏輯或(or)匹配

  1 [root@manage ~]# ansible myhost1:myhost2 -m ping

4.3 邏輯非(!)匹配

  1 [root@manage ~]# ansible myhost:\!myhost2 -m ping

提示:所有在myhost組裡但不在myhost2組的主機。

去掉!特殊意義,可採用\。

4.4 邏輯與(&)匹配

  1 [root@manage ~]# ansible myhost:\&myhost2 -m ping		#myhost組和myhost2組同時存在的主機

4.5 多條件組合

  1 [root@manage ~]# ansible myhost1:myhost2:\&myhost3:\!myhost4 -m ping
  2 #myhost1組和myhost2組所有主機在myhost3中存在的,且不屬於myhost4的主機。

4.6 模糊匹配

  1 [root@manage ~]# ansible 172* -m ping		#所有以172開頭的主機

4.7 域切割

  1 [root@manage ~]# ansible myhost2[0] -m ping
  2 [root@manage ~]# ansible myhost2[0:1] -m ping

提示:Ansible底層基於Python,Ansible也支持獲取數組相應值。如:

  1 [myhost2]
  2 172.24.8.32
  3 172.24.8.33:2345
  4 myhost2[0]:第一個值,172.24.8.32;
  5 myhost2[-1]:最後一個值,172.24.8.33;
  6 myhost2[0:1]:第一個值和第二個值;
  7 myhost2[1:]:第一個值導最後一個值。

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

-Advertisement-
Play Games
更多相關文章
  • 摘要: 在使用Agent Job時, 運行SSIS包的Run as賬號,必須有SSIS中connection manager的連接許可權。 如果沒有連接許可權,可以用創建proxy賬號,並確保proxy賬號有連接許可權的方式來執行。 案例: 1. Package包中,用到了ODBC的方式連接到數據源,但是 ...
  • 在Centos7下成功安裝了python3.7, 但是在使用pip3的時候出現了以下錯誤 中間試過了網上大家給出的好多種辦法,一開始我只是在編譯的時候 ./configure --with-ssl make make install 沒有效果1 然後發現自己沒有安裝openssl-devel(一定要 ...
  • pwd:顯示當前路徑 cd :切換目錄 用法:cd cd ../ 切換到上級目錄 cd / 切換到根目錄 cd ~ (或只有cd )切換到當前用戶主目錄(home底下以用戶名命名的文件夾) /root目錄 mkdir 創建目錄 mkdir 目錄名 -p 遞歸創建目錄 rmdir 刪除空目錄 用法:r ...
  • 基於Xilinx zynq-7000系列FPGA,移植Linux操作系統的詳細教程,包含u-boot,內核,文件系統等具體編譯過程,以及設備樹,fsbl的使用方法 ...
  • 本文收錄在容器技術學習系列文章總目錄 1、認識kubernetes資源 1.1 常用資源/對象 workload工作負載型資源:pod,ReplicaSet,Deployment,StatefulSet,daemonset,job... 伺服器發現及均衡:Service,Lngress... 配置與 ...
  • Windows下編輯腳本上傳到Linux後遇到^M,導致腳本無法執行,原因是因為Linux與Windows對 “回車鍵” 編碼不同 解決方法如下: 在使用UE->文件->轉換->DOS轉換UNIX 轉換完成後下麵狀態欄中會顯示DOS已經變成了UNIX,再上傳到Linux上面就不會有^M問題了。 ...
  • 觸摸屏使用過程: 1、按下,產生中斷 2、在中斷處理程式中,啟動ADC轉換 3、ADC結束,產生ADC中斷 4、在ADC中斷處理函數裡面,上報(input_event),啟動定時器, 5、定時器時間到,再次回到2,可以處理長按、滑動。 6、鬆開。 為了省電,內核在啟動時,把不是必要的模塊不使能,在使 ...
  • 一.Linux以及Windows系統的優缺點對比 二.Linux以及Windows系統的區別 2.1 Linux的速度快,安全性比Windows好。 2.2 很多軟體只能在Windows中運行,與Linux相容的軟體還在開發中。 2.3 Linux的操作複雜,相比而言Windows操作簡單的多。 2 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...