[Do374]Ansible一鍵搭建sftp實現用戶批量增刪

[Do374]Ansible一鍵搭建sftp實現用戶批量增刪

  • 1. 前言
  • 2. 思路
  • 3. sftp搭建及用戶批量新增
    • 3.1 配置文件內容
    • 3.2 執行測試
    • 3.3 登錄測試
    • 3.4 確認sftp服務器配置文件
  • 4. 測試刪除用戶

1. 前言

最近準備搞一下RHCA LV V,外加2.9之后的ansible有較大變化于是練習下Do374的課程內容.
工作中有幾臺sftp的服務器,由于sftp的目錄權限比較特殊,有時候手工配置會出現一些報錯需要排查.
于是手寫了個ansibleplay來完成一鍵搭建及后續的用戶添加工作.

2. 思路

整個sftp配置主要分為以下步驟:

  1. 安裝配置ssh服務,并開通防火墻(這部分工作在實現ansible之前其實已經完成了)
  2. 根據用戶清創建用戶
  3. 確認sftp的主目錄權限正常
  4. 根據清單創建用戶的sftp主目錄和上傳目錄
  5. 根據清單配置sshd主配置文件:/etc/ssh/sshd_config
  6. 重置sshd服務

3. sftp搭建及用戶批量新增

3.1 配置文件內容

服務器清單文件:

變量含義
name用戶名
password密碼
home_directorysftp主目錄
users:
- name: ut_k8s_putpassword: "ut_k8s_put_123"home_directory: "/ftp/pabc/ut_k8s_put"
- name: it_k8s_getpassword: "it_k8s_get_123"home_directory: "/ftp/pabc/it_k8s_get"
- name: ftp_k8spassword: "ftp_k8s_123"home_directory: "/ftp/public/ftp_k8s"

ansible playbook文件:
主要實現以下功能:

  1. 根據用戶清單創建用戶
  2. 創建/ftp目錄
  3. 根據用戶清單創建用戶sftp主目錄
  4. 根據用戶清單創建用戶sftp upload目錄
  5. 配置sshd主配置文件sshd_config文件
  6. 重置sshd服務,這個地方盡量使用reload,工作中發現如果用restart的話在某些會話沒有被釋放的情況下會造成sshd服務重啟卡主.
---
- name: Use block module to config sftp servicehosts: servercgather_facts: falsevars_files:- user_list.yamltasks:- name: user_addansible.builtin.user:name: "{{ item.name }}"comment: "{{ item.name }} to sftp"shell: /sbin/nologinpassword: "{{ item.password | password_hash('sha512') }}"create_home: yes with_items: "{{ users }}"- name: create sftp root directoryansible.builtin.file:path: /ftpstate: directoryowner: rootgroup: rootmode: '0755'- name: create sftp directoryansible.builtin.file:path: "{{ item.home_directory }}"state: directoryowner: rootgroup: "{{ item.name }}"mode: '1750'with_items: "{{ users }}"- name: Create upload directoryansible.builtin.file:path: "{{ item.home_directory }}/upload"state: directoryowner: "{{ item.name }}"group: "{{ item.name }}"mode: '1750'with_items: "{{ users }}"- name: replace sftp configansible.builtin.lineinfile:path: /etc/ssh/sshd_configregexp: '^Subsystem sftp'line: Subsystem sftp internal-sftp- name: Add configs into the sshd_config fileansible.builtin.blockinfile:path: /etc/ssh/sshd_configblock: |Match User {{ item.name }}chrootDirectory {{ item.home_directory }}X11Forwarding noAllowTcpForwarding noForceCommand internal-sftpmarker: "# {{ item.name }} config {mark}"with_items: "{{ users }}"- name: restart sshd serviceansible.builtin.systemd:state: reloadedname: sshd

3.2 執行測試

ansible-navigator run sftp.yaml -m stdout

在這里插入圖片描述

3.3 登錄測試

嘗試sftp遠程登錄服務器并上傳文件.

sftp ut_k8s_put@serverc
cd upload/
put token.txt
bye

在這里插入圖片描述

3.4 確認sftp服務器配置文件

確認sftp服務器上的配置文件和目錄使用情況.

用了block模塊的情況下后續刪除修改也會方便很多,每個用戶前后都有mark作為標記.
在這里插入圖片描述
查看目錄結構
顯然我們剛才的文件也傳到了正確的位置

[root@serverc ~]# tree /ftp
/ftp
├── pabc
│   ├── it_k8s_get
│   │   └── upload
│   └── ut_k8s_put
│     └── upload
│         └── token.txt
└── public└── ftp_k8s└── upload8 directories, 1 file

4. 測試刪除用戶

user_del.yaml

users:
- name: ut_k8s_putpassword: "ut_k8s_put_123"home_directory: "/ftp/pabc/ut_k8s_put"
- name: it_k8s_getpassword: "it_k8s_get_123"home_directory: "/ftp/pabc/it_k8s_get"

playbook

---
- name: remove sftp usershosts: servercgather_facts: falsevars_files:- user_del.yamltasks:- name: remove user configs from sshd_configansible.builtin.blockinfile:path: /etc/ssh/sshd_configbackup: yesstate: absentmarker: "# {{ item.name }} config {mark}"with_items: "{{ users }}"- name: remove user from systemansible.builtin.user:name: "{{ item.name }}"state: absentremove: yeswith_items: "{{ users }}"- name: restart sshd serviceansible.builtin.systemd:state: reloadedname: sshd

執行刪除

ansible-navigator run sftp_remove.yaml -m stdout

在這里插入圖片描述
執行之后可以看到,清單文件中的2個用戶已經刪除,之前另外一個創建的用戶還是正常
在這里插入圖片描述
嘗試用剩下的那個用戶再次連接
確認剩下的那個用戶并不受影響
在這里插入圖片描述
至此使用ansible批量配置sftp增加或刪除用戶完成.

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

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

相關文章

SK海力士(SK Hynix)是全球領先的半導體制造商之一,其在無錫的工廠主要生產DRAM和NAND閃存等存儲器產品。

SK海力士(SK Hynix)是全球領先的半導體制造商之一,其在無錫的工廠主要生產DRAM和NAND閃存等存儲器產品。以下是SK海力士的一些主要產品型號和類別: DRAM 產品 DDR4 DRAM 特點: 高速、低功耗,廣泛應用于PC、服務器和移…

WordPress如何配置AJAX以支持點擊加載更多?

WordPress 配置 AJAX 支持點擊加載更多內容通常涉及到前端 JavaScript 和服務器端的配合。以下是基本步驟: 安裝插件:你可以選擇一個現成的插件如 “Advanced Custom Fields” 或者 “WP Infinite Scroll”,它們已經內置了 AJAX 功能&#xf…

【IDEA 2024】學習筆記--文件選項卡

在我們項目的開發過程中,由于項目涉及的類過多,以至于我們會打開很多的窗口。使用IDEA默認的配置,個人覺得十分不便。 目錄 一、設置多個文件選項卡按照文件字母順序排列 二、設置多個文件選項卡分行顯示 一、設置多個文件選項卡按照文件字…

【C】數組和指針的關系

在 C 語言 和 C 中,數組和指針 有非常密切的關系。它們在某些情況下表現類似,但也有重要的區別。理解數組和指針的關系對于掌握低級內存操作和優化程序性能至關重要。 1. 數組和指針的基本關系 數組是一個 連續存儲的元素集合,在內存中占據一…

Maven 配置本地倉庫

步驟 1&#xff1a;修改 Maven 的 settings.xml 文件 找到你的 Maven 配置文件 settings.xml。 Windows: C:\Users\<你的用戶名>\.m2\settings.xmlLinux/macOS: ~/.m2/settings.xml 打開 settings.xml 文件&#xff0c;找到 <localRepository> 標簽。如果沒有該標…

Docker save load 鏡像 tag 為 <none>

一、場景分析 我從 docker hub 上拉了這么一個鏡像。 docker pull tomcat:8.5-jre8-alpine 我用 docker save 命令想把它導出成 tar 文件以便拷貝到內網機器上使用。 docker save -o tomcat-8.5-jre8-alpine.tar.gz 鏡像ID 當我把這個鏡像傳到別的機器&#xff0c;并用 dock…

O2O同城系統架構與功能分析

2015工作至今&#xff0c;10年資深全棧工程師&#xff0c;CTO&#xff0c;擅長帶團隊、攻克各種技術難題、研發各類軟件產品&#xff0c;我的代碼態度&#xff1a;代碼虐我千百遍&#xff0c;我待代碼如初戀&#xff0c;我的工作態度&#xff1a;極致&#xff0c;責任&#xff…

《盤古大模型——鴻蒙NEXT的智慧引擎》

在當今科技飛速發展的時代&#xff0c;華為HarmonyOS NEXT的發布無疑是操作系統領域的一顆重磅炸彈&#xff0c;其將人工智能與操作系統深度融合&#xff0c;開啟了智能新時代。而盤古大模型在其中發揮著至關重要的核心作用。 賦予小藝智能助手超強能力 在鴻蒙NEXT中&#xf…

走出實驗室的人形機器人,將復刻ChatGPT之路?

1月7日&#xff0c;在2025年CES電子展現場&#xff0c;黃仁勛不僅展示了他全新的皮衣和采用Blackwell架構的RTX 50系列顯卡&#xff0c;更進一步展現了他對于機器人技術領域&#xff0c;特別是人形機器人和通用機器人技術的篤信。黃仁勛認為機器人即將迎來ChatGPT般的突破&…

EF Core執行原生SQL語句

目錄 EFCore執行非查詢原生SQL語句 為什么要寫原生SQL語句 執行非查詢SQL語句 有SQL注入漏洞 ExecuteSqlInterpolatedAsync 其他方法 執行實體相關查詢原生SQL語句 FromSqlInterpolated 局限性 執行任意原生SQL查詢語句 什么時候用ADO.NET 執行任意SQL Dapper 總…

Java中網絡編程的學習

目錄 網絡編程概述 網絡模型 網絡通信三要素: IP 端口號 通信協議 IP地址&#xff08;Internet Protocol Address&#xff09; 端口號 網絡通信協議 TCP 三次握手 四次揮手 UDP TCP編程 客戶端Socket的工作過程包含以下四個基本的步驟&#xff1a; 服務器程序…

HarmonyOS NEXT開發進階(七):頁面跳轉

文章目錄 一、前言二、頁面跳轉三、頁面返回四、頁面返回前增加確認對話框4.1 系統的默認詢問框4.2 自定義詢問框 五、拓展閱讀 一、前言 APP開發過程中&#xff0c;多頁面跳轉場景十分常見&#xff0c;例如&#xff0c;登錄 -> 首頁 -> 個人中心。在鴻蒙開發中&#xf…

【Python】第一彈---解鎖編程新世界:深入理解計算機基礎與Python入門指南

?個人主頁&#xff1a; 熬夜學編程的小林 &#x1f497;系列專欄&#xff1a; 【C語言詳解】 【數據結構詳解】【C詳解】【Linux系統編程】【MySQL】【Python】 目錄 1、計算機基礎概念 1.1、什么是計算機 1.2、什么是編程 1.3、編程語言有哪些 2、Python 背景知識 2.…

LeetCode:131. 分割回文串

跟著carl學算法&#xff0c;本系列博客僅做個人記錄&#xff0c;建議大家都去看carl本人的博客&#xff0c;寫的真的很好的&#xff01; 代碼隨想錄 LeetCode:131. 分割回文串 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是回文串。返回 s 所…

優化神馬關鍵詞排名原理(優化神馬搜索引擎關鍵詞排名規則)

優化神馬&#xff08;即百度&#xff09;關鍵詞排名的原理主要基于搜索引擎的算法和用戶體驗的考量。以下是一些關鍵的優化原理&#xff1a; 一、搜索引擎算法 網頁重要性評估&#xff1a; 搜索引擎通過復雜的算法評估網頁的重要性和權威性&#xff0c;如基于PageRank的評估方…

學習threejs,使用FlyControls相機控制器

&#x1f468;??? 主頁&#xff1a; gis分享者 &#x1f468;??? 感謝各位大佬 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;??? 收錄于專欄&#xff1a;threejs gis工程師 文章目錄 一、&#x1f340;前言1.1 ??THREE.FlyControls 相機控制…

Vue 3前端與Python(Django)后端接口簡單示例

項目 后端&#xff08;Django&#xff09;前端&#xff08;Vue 3&#xff09; 后端&#xff08;Django&#xff09; 創建Django項目和應用&#xff1a; 確保你已經安裝了Django。如果沒有安裝&#xff0c;可以使用以下命令安裝&#xff1a; pip install django創建一個新的Dja…

MCP Server開發的入門教程(python和pip)

使用python技術棧開發的簡單mcp server 需要安裝 MCP server的需要使用python-sdk,python需要 3.10,安裝如下 pip install mcpPS: MCP官方使用的是uv包管理工具,我平時使用pip比較多,所以文中以pip為主。因為mcp的一些依賴包版本并不是最新的,所以最好弄一個干凈的環境…

Spark vs Flink分布式數據處理框架的全面對比與應用場景解析

1. 引言 1.1 什么是分布式數據處理框架 隨著數據量的快速增長&#xff0c;傳統的單機處理方式已經無法滿足現代數據處理需求。分布式數據處理框架應運而生&#xff0c;它通過將數據分片分布到多臺服務器上并行處理&#xff0c;提高了任務的處理速度和效率。 分布式數據處理框…