Ansible的安裝及簡單使用

来源:https://www.cnblogs.com/blogof-fusu/archive/2023/08/18/17639958.html
-Advertisement-
Play Games

## Ansible的安裝及簡單使用 ## #### 一.Ubuntu安裝Ansible ```shell sudo apt update sudo apt install ansible #使用以下命令檢查安裝是否成功: ansible --version ``` ![image-20230817 ...


## Ansible的安裝及簡單使用 ##

一.Ubuntu安裝Ansible

sudo apt update
sudo apt install ansible
#使用以下命令檢查安裝是否成功:
ansible --version

image-20230817175908011

二.配置Ansible

#進入配置文件目錄
cd /etc/ansible/
ls

image-20230817180056715

文件含義

ansible.cfg #ansible配置文件,預設基本不用動,全註釋
hosts #主機清單文件,存放被控端主機信息, 預設指定的hosts文件

修改ansible配置

vim ansible.cfg

image-20230817180736092

把第七十一行的配置,取消註釋。這一行的作用是當 Ansible 連接到新創建的虛擬機時,不會要求手動驗證主機密鑰,而是自動跳過驗證,從而簡化自動化部署過程。

添加主機列表清單

vim hosts

image-20230817181012141

含義

第一段 #被控端主機ip
ansible_ssh_user=root #ssh中setup模塊的系統變數,指定為遠程主機的用戶為root
ansible_ssh_pass=123 #同上,為遠程主機的root的密碼

[web]:主機組的名稱

1. 使用ping模塊檢測所有主機是否存活
#執行
ansible -i hosts web -m ping

語句含義

-i hosts web #指定我們ansible工具針對的是 hosts主機文件中的 web為我們剛纔配置文件中的主機組
-m ping #-m 指定使用的模塊為ping,用於檢測主機,返回pong

還要註意的是,此命令執行命令的路徑是/etc/ansible,所以hosts可以不指定文件目錄。如果在其他文件目錄下執行命令則需要加上

該配置文件的根路徑。ansible -i /etc/ansiblehosts web -m ping

image-20230817181651214

2.ansible命令執行的過程說明
  • ansible會先載入配置/etc/ansible/ansible.cfg文件
  • 然後載入模塊文件(如上面的ping模塊)
  • ansible會將我們執行的命令或模塊,生成一個臨時的python的腳本文件,將這個腳本文件發送到被控端的家目錄/.ansible/tmp/目錄下,並授權執行
  • 執行完成後返回執行結果,並清除臨時文件
3. 常用模塊
1. command 模塊

這個模塊就是平時使用命令的習慣,比如ls、cd、pwd、cp、mv操作等等都可以實現,但是要註意的是\command模塊是不支持正則及特殊符號的

並且該模塊是預設附加的,也就是說。即使你不加-m command 也可以使用

#查看web組所有主機下,/root目錄內容
ansible -i hosts web -m command -a "ls /root"

#-a 是代表要執行的命令,相當於在所有主機上執行的

image-20230817182536488

image-20230817182705654

如圖,效果是一樣的。

2. shell 模塊

shell模塊和command模塊類似,但是支持正則及特殊符號。

ansible -i /etc/ansible/hosts web -m shell -a "echo test > /home/1.txt"
ansible -i /etc/ansible/hosts web -m shell -a "cat /home/1.txt"

image-20230818093833606

3. copy模塊

拷貝文件,從ansible主機上把文件發送到被控端主機上

ansible -i /etc/ansible/hosts web -m copy -a "src=/home/test_copy.txt dest=/home"
ansible -i /etc/ansible/hosts web -m shell -a "ls /home"

image-20230818095349602

image-20230818095926637

三.使用案例以及問題發現

給web組的主機安裝docker

#配置安裝環境
ansible -i /etc/ansible/hosts web -m shell -a "apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common"
#添加密鑰
ansible -i /etc/ansible/hosts web -m shell -a "curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -"
#添加阿裡雲國內鏡像倉庫地址
ansible -i /etc/ansible/hosts web -m shell -a "add-apt-repository \"deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release -cs) stable\""
#更新軟體源,列出可安裝版本
ansible -i /etc/ansible/hosts web -m shell -a "apt-get update"
ansible -i /etc/ansible/hosts web -m shell -a "apt-cache madison docker-ce"
#安裝指定版本docker
ansible -i /etc/ansible/hosts web -m command  -a "apt-get install -y docker-ce=5:20.10.13~3-0~ubuntu-focal docker-ce-cli=5:20.10.13~3-0~ubuntu-focal"
#重啟並檢查安裝是否成功
ansible -i /etc/ansible/hosts web -m shell  -a "systemctl restart docker && docker --version"

問題:ansible在執行shell命令的時候,如果該命令在執行的時候出現提示鍵入y回車繼續之類的情況時,會使該命令陷入死鎖。

例:假如我這一步ansible -i /etc/ansible/hosts web -m command -a "apt-get install -y docker-ce=5:20.10.133-0ubuntu-focal docker-ce-cli=5:20.10.133-0ubuntu-focal"這裡採用apt-get install -y,其目的是跳過軟體安裝時的所以確認步驟,預設為y。如果安裝時採用,apt-get install去安裝docker,則會因為無法鍵入y而是web主機組的apt-get install命令陷入死鎖,從而導致無法更新和下載其他包


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

-Advertisement-
Play Games
更多相關文章
  • # 【狂神說Java】Java零基礎學習筆記-面向對象 ## 面向對象01:什麼是面向對象 ### 面向過程&面向對象 - 面向過程思想 - 步驟清晰簡單,第一步做什麼,第二步做什麼.... - 面對過程適合處理一些較為簡單的問題 - 面向對象思想 - 物以類聚,**分類**的思維模式,思考問題首先 ...
  • **即時編譯器優化技術一覽:** ![](https://img2023.cnblogs.com/blog/3256961/202308/3256961-20230816153001309-163136082.png) ![](https://img2023.cnblogs.com/blog/325 ...
  • # Unity 如何獲取Texture 的記憶體大小 在Unity中,要獲取Texture的記憶體文件大小,可以使用UnityEditor.TextureUtil類中的一些函數。這些函數提供了獲取存儲記憶體大小和運行時記憶體大小的方法。由於UnityEditor.TextureUtil是一個內部類,我們需要 ...
  • ## 引言 今天在做一個設置文件夾路徑的功能,就是一個文本框,加個按鈕,點擊按鈕,彈出 `FolderBrowserDialog` 再選擇文件夾路徑,簡單做法,可以直接 `StackPanel` 橫向放置一個 `TextBox` 和一個 `Image Button`,然後點擊按鈕在 後臺代碼中給 ` ...
  • # Unity 編輯器資源導入處理函數 OnPreprocessTexture 用法 [![https://github.com/AlianBlank/download.unity.com](https://img2023.cnblogs.com/other/406187/202308/406187 ...
  • 他媽的!!!就因為這破事導致我浪費了兩天的時間!!! 都是基礎不扎實的鍋,導致我沒能第一時間想到問題的關鍵 好了,平復一下心情,快速的寫一篇博客來記錄這個叼問題 ## 解決方法 先把結論放在這裡:用`extern "C" {}`把中斷函數包起來 ```C++ // 就像這樣 extern "C" { ...
  • ansible 是用來自動化管理遠程操作系統的工具. ansible的三要素: `控制節點` , `被控節點`, `資產清單` ### 安裝 ansible 可以通過pip直接安裝 ```bash python3 -m pip install ansible --user ``` ### 快速入門 ...
  • 這裡的使用場景是在ubuntu x64上編譯arm程式,需要一個開發環境,而最省心的方式就是自己做一個arm環境的chroot鏡像,然後自由用apt-get安裝依賴,然後編譯程式。所以這裡就以製作arm鏡像為例。 在我們開始之前,我們需要瞭解一下ARM的幾種架構: armel(abi):這個是老架構 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...