semaphore | 使用web界面的ansible来批量运维 linux、windows主机

Ansible 的现代化 UI ,可以轻松管理和运行 Ansible playbook,功能强大,操作简单,支持中文。

文章目录

    • 一、系统功能说明
    • 二、系统安装
      • 2.1 直接安装
      • 2.2 docker 安装
    • 三、系统使用
      • 3.1 建立存储库
      • 3.2 编写代码
      • 3.3 建立主机配置
      • 3.3 建立用户凭据
      • 3.4 建立任务
      • 3.5 执行任务
    • 四、Windows 客户端配置
      • 4.1 安装模组
      • 4.2 配置windows的脚本
      • 4.3 配置windows主机清单
      • 4.4 测试脚本执行

一、系统功能说明

Ansible 的现代化 UI ,可以轻松管理和运行 Ansible playbook,功能强大,操作简单,支持中文。

  • 在web界面管理ansible 脚本和任务
  • 支持定时任务
  • 支持主机配置和环境变量配置
  • 支持git库配置

官方文档:https://docs.semui.co/

二、系统安装

2.1 直接安装

To install Semaphore via snap, run following command in terminal:sudo snap install semaphore
Semaphore will be available by URL https://localhost:3000.But to log in, you should create an admin user. Use the following commands:sudo snap stop semaphoresudo semaphore user add --admin \
--login john \
--name=John \
--email=john1996@gmail.com \
--password=12345sudo snap start semaphore
You can check the status of the Semaphore service using the following command:sudo snap services semaphore
It should print the following table:Service               Startup  Current  Notes
semaphore.semaphored  enabled  active   -
After installation, you can set up Semaphore via Snap Configuration. Use the following command to see your Semaphore configuration:sudo snap get semaphore

2.2 docker 安装

注意修改账户密码,使用下面的docker-compose的文件

#前置作业
准备docker-compose.yml文件
services:semaphore:ports:- 3000:3000image: semaphoreui/semaphore:latestenvironment:SEMAPHORE_DB_DIALECT: boltSEMAPHORE_ADMIN_PASSWORD: changemeSEMAPHORE_ADMIN_NAME: adminSEMAPHORE_ADMIN_EMAIL: admin@localhostSEMAPHORE_ADMIN: adminTZ: Asia/Shanghaivolumes:- ./semaphore/etc:/etc/semaphore- ./semaphore/data:/var/lib/semaphore

三、系统使用

3.1 建立存储库

有本地存储库和git库两种,我这里使用git库

在这里插入图片描述

3.2 编写代码

代码类似下面这种结构

在这里插入图片描述

- collections- requirements.yml  				#所有项目的依赖
- run.yml 							#ansible脚本文件			
-roles- run								#ansible脚本文件夹- tasks							#任务文件夹- main.yml						#具体任务

每个文件的配置说明

# /requirements.yml---
collections:
- pureport.fabric
# /run.yml#hosts的值要和主机配置里面的列表对应- hosts: k8sroles:- run
# roles/run/tasks/main.yml
- name: 1.下载脚本get_url:url: "http://192.168.1.1/chfs/shared/software/99.scripts/disable_selinux.sh"dest: "/tmp/disable_selinux.sh"mode: '0755'
- name: 2.执行脚本command: /tmp/disable_selinux.shregister: script_result
- name: 3.打印日志debug:var: script_result.stdout_lines

3.3 建立主机配置

在下图位置建立主机清单,用户凭据需先建立

在这里插入图片描述

3.3 建立用户凭据

在这里插入图片描述

3.4 建立任务

在这里插入图片描述

3.5 执行任务

在这里插入图片描述

四、Windows 客户端配置

4.1 安装模组

windows客户端在ansible中支持ssh和winrm方式连接,ssh需要再windows中提前开启 ssh-server,而winrm不需要,故本文使用winrm方式连接

先安装依赖,进入到容器中

/opt/semaphore/venv/bin/pip3 install  pywinrm
/opt/semaphore/venv/bin/pip3 list -v

如果是生产环境,pywinrm环境重启就没了,可以本地安装或者 重新创建包含包的容器

比如下面的dockerfile

FROM semaphoreui/semaphore:latestUSER root
RUN apk add --no-cache python3 py3-pip
RUN pip install pywinrm jmespath netaddr passlib requests matrix_clientUSER semaphore

或者在容器启动时安装依赖,如下文中的/etc/semaphore/requirements.txt

services:# Semaphoresemaphore-mariadb:restart: unless-stoppedimage: mariadb:latesthostname: mariadbvolumes:- /srv/semaphore/data:/var/lib/mysqlexpose:- 3306environment:MYSQL_RANDOM_ROOT_PASSWORD: 'yes'MYSQL_DATABASE: 'semaphore'MYSQL_USER: 'semaphore'MYSQL_PASSWORD: '<redacted>'semaphore:image: semaphoreui/semaphore:developrestart: unless-stoppedenvironment:SEMAPHORE_DB_USER: 'semaphore'SEMAPHORE_DB_PASS: 'changeme'SEMAPHORE_DB_HOST: 'semaphore-mariadb'SEMAPHORE_DB_PORT: 3306SEMAPHORE_DB_DIALECT: 'mysql'SEMAPHORE_DB: 'semaphore'depends_on:- semaphore-mariadbvolumes:- ./config.json:/etc/semaphore/config.json:ro- ./requirements.txt:/etc/semaphore/requirements.txt:roexpose:- 3000

4.2 配置windows的脚本

windows 中脚本可以使用win_command和wun_shell,分别对应cmd和powershell

- run_win.yml 							#ansible脚本文件			
-roles- run_win								#ansible脚本文件夹- tasks							#任务文件夹- main.yml						#具体任务

下面的脚本分别演示了cmd和powershell 下查看ip地址和创建文件夹

# roles/run_win/tasks/main.yml- name: 2.执行脚本-cmdwin_command: ipconfigregister: script_result- name: 3.打印日志debug:var: script_result.stdout_lines- name: 使用 PowerShell 创建目录win_shell: New-Item -Path C:\testfile -ItemType Directoryregister: script_result_ps- name: 打印日志debug:var: script_result_ps.stdout_lines- name: 使用 CMD 创建目录win_shell: mkdir C:\testfilecmdregister: script_result_cmd- name: 打印日志debug:var: script_result_cmd.stdout_lines- name: 4.1 检查 script_resultw 变量ansible.builtin.debug:var: script_resultw- name: 4.1 执行脚本-powershell (使用 win_shell)win_shell: powershell Get-NetIPAddressregister: script_resultw- name: 5.打印日志ansible.builtin.debug:var: script_resultw.stdout_lines

4.3 配置windows主机清单

在主机清单中需要按下列格式写,在web界面可以不配置密码,其中连接方式有以下几种。推荐使用NTLM

ansible_winrm_transport 变量用于指定 Ansible 在连接到 Windows 主机时使用的 WinRM 传输方式

  1. Basic: 基本认证,适用于本地用户账户。它将用户名和密码以 base64 编码形式发送,如果不使用安全隧道(如 HTTPS),可能会被破解。此类型不支持域用户账户。
  2. Certificate: 使用证书进行认证,适用于本地用户和域用户账户。这种方式不需要发送用户名和密码,因此比 Basic 安全,但在配置上更复杂。
  3. Kerberos: 推荐在域环境中使用,支持认证委派和基于 HTTP 的消息加密,是较安全的认证方式。需要在 Ansible 控制机上安装 Kerberos 库并进行额外配置2。
  4. NTLM: NTLM 认证方式,不提供 Kerberos 的加密和委派功能,但在某些环境中可能更简单。
  5. CredSSP: 支持认证域账户和本地账户,允许凭证代理,可以解决 WinRM 的双重认证问题。安全性低于 Kerberos,但在某些场景下更为方便1。
[win]
host ansible_host=192.168.10.1[win:vars]
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_port=5985
ansible_winrm_server_cert_validation=ignore
ansible_user=用户
ansible_password=密码

在这里插入图片描述

4.4 测试脚本执行

测试运行正常
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南卡、韶音、Cleer、漫步者开放式耳机好用吗?最强开放式耳机对比揭秘!

在挑选开放式耳机时&#xff0c;个人经验和实际需求应当优先考虑&#xff0c;而非盲目追随潮流或品牌效应。投资耳机前务必慎重&#xff0c;毕竟高价值商品若无法退换&#xff0c;难免造成遗憾。为了帮助大家做出更加明智的决策&#xff0c;我亲自出资购买并测试了市面上多款主…

重生奇迹mu魔剑士

1、魔剑士低端装备-SF10(升级)亚特传说等S-S(PK)亚特奔雷魔神等。评价:优越的极品双属卓越,极其高的性价比,造福穷人玩家的装。 2、中端装备(只适合力魔剑士)-SF10S-S天魔斗神评价&#xff1a;与低级亚特等一样不过由于成本,装备PVP属性等原因,价钱稍贵点。 3、中端套装(只适合…

【阿里前端面试题】聊聊前端性能优化的方案,解决过什么样的性能问题?

大家好&#xff0c;我是“寻找DX3906”。每天进步一点。日积月累&#xff0c;有朝一日定会厚积薄发&#xff01; 前言&#xff1a; 前面已经和大家分享了4篇面试题&#xff1a; 《【阿里前端面试题】浏览器的加载渲染过程》 《【阿里前端面试题】客户端和服务器交互&#xff…

IO流----字节流

字节流 字节流&#xff1a;操作&#xff1a;文件字节输入输出流 &#xff1a;写入数据&#xff1a;读取数据&#xff1a;文件拷贝&#xff1a; 带缓冲区的字节输入输出流&#xff1a;拷贝文件&#xff1a;写入数据&#xff1a;读取数据: 深入 带缓冲区的字节输出流 &#xff1a…

【论文阅读】Point2RBox (CVPR’2024)

paper:https://arxiv.org/abs/2311.14758 code:https://github.com/yuyi1005/point2rbox-mmrotate

阿里云sls 采集日志安装记录

参考阿里云给的安装文档 阿里云安装Logtail组件 注意这里&#xff0c;选择地域&#xff0c;是中国地域选中国&#xff0c;海外选海外即可 按照文档继续下去 修改配置文件./alibaba-cloud-log-all/values.yaml 所有的操作完成后&#xff0c;去控制台配置 以上操作的前提是…

[WWW2024]轻量数据依赖的异常检测重训练方法LARA

开篇 近日&#xff0c;由阿里云计算平台大数据基础工程技术团队主导&#xff0c;与浙江大学合作的论文《LARA: ALight and Anti-overfitting Retraining Approach for Unsupervised Time Series Anomaly Detection 》被WWW2024收录&#xff0c;该方法解决了云服务正常模式随时…

探索AIGC降重工具:确保论文原创性的新策略

如何有效降低AIGC论文的重复率&#xff0c;也就是我们说的aigc如何降重&#xff1f;AIGC疑似度过高确实是个比较愁人的问题。如果你用AI帮忙写了论文&#xff0c;就一定要在交稿之前做一下AIGC降重的检查。一般来说&#xff0c;如果论文的AIGC超过30%&#xff0c;很可能会被判定…

申请医疗设备注册变更时,需要补充考虑网络安全的情况有哪些?

在申请医疗器械设备注册变更时&#xff0c;需要补充网络安全的情况主要包括以下几点&#xff1a; 网络安全功能更新&#xff1a;如果医疗器械的自研软件发生网络安全功能更新&#xff0c;或者合并网络安全补丁更新的情形&#xff0c;需要单独提交一份自研软件网络安全功能更新…

#02 安装指南:如何配置Stable Diffusion环境

文章目录 前言前置条件第1步&#xff1a;安装Python和PIP第2步&#xff1a;创建虚拟环境第3步&#xff1a;安装PyTorch和CUDA第4步&#xff1a;安装Stable Diffusion相关库第5步&#xff1a;测试环境结论 前言 在之前的文章中&#xff0c;我们介绍了Stable Diffusion基础入门和…

【ARFoundation自学04】AR Tracked Image 图像追踪识别

1.添加组件 2.创建图像识别库 3.创建识别后追踪的物体&#xff08;UI、模型等&#xff09;

Java驱动的工程项目管理系统:实现高效协作与精准管理

在工程行业的现代管理实践中&#xff0c;有效地协同工作和信息共享对于提高工作效率和降低成本至关重要。本文将深入探讨一款基于Java技术的工程项目管理系统&#xff0c;该系统采用前后端分离的架构&#xff0c;功能全面&#xff0c;旨在满足不同角色的需求&#xff0c;从项目…

PlugLink与RPA的完美结合:打造智能自动化工作流(附源码)

PlugLink与RPA的完美结合&#xff1a;打造智能自动化工作流 自动化技术已经成为提高效率和减少错误的关键手段。两种主要的自动化技术——PlugLink和RPA&#xff08;机器人流程自动化&#xff09;——各有特色。本文将详细探讨PlugLink与RPA的不同之处&#xff0c;并介绍它们如…

软件测试需求管理指南规范(Word原件,项目管理全资料)

3 测试需求 3.1 测试范围 3.2 测试目标 4 测试需求的现状 5 测试需求的内容 5.1 主体内容 5.2 管理内容 6 测试需求的制定 6.1 需求信息来源 6.2 需求分析 6.2.1 功能性需求 6.2.2 系统功能需求 6.2.3 界面需求 6.2.4 安装需求 6.2.5 业务需求 6.2.6 非功能性需求 6.2.7 性能需…

ai怎么导出jpg?让我告诉你答案【详】

在设计和创意工作中&#xff0c;Adobe Illustrator&#xff08;AI&#xff09;是一款不可或缺的工具。然而&#xff0c;当我们将设计作品导出为JPG格式时&#xff0c;可能会遇到一些问题。ai怎么导出jpg&#xff1f;如何确保导出的JPG图片保持高质量&#xff1f;接下来&#xf…

【Js】深入浅出的js for循环 for loop以及闭坑指南

在JavaScript中使用forEach循环来删除数组中的特定元素可能会导致一些问题&#xff0c;因为forEach不允许你在迭代过程中修改数组的长度。 这会导致意外的行为&#xff0c;例如跳过元素或错误地索引。因此&#xff0c;建议使用其他方法来安全地删除数组中的元素。 存在的问题 1…

php质量工具系列之phpmd

PHPMD PHP Mess Detector 它是PHP Depend的一个衍生项目&#xff0c;用于测量的原始指标。 PHPMD所做的是&#xff0c;扫描项目中可能出现的问题如&#xff1a; 可能的bug次优码过于复杂的表达式未使用的参数、方法、属性 PHPMD是一个成熟的项目&#xff0c;它提供了一组不同的…

常用的接口测试工具

大家好&#xff0c;当谈到软件开发中的质量保证时&#xff0c;接口测试无疑是至关重要的一环。在当今快节奏的开发环境中&#xff0c;确保应用程序的各个组件之间的交互正常运作是至关重要的。而接口测试工具则成为了开发人员和测试人员的得力助手&#xff0c;帮助他们有效地测…

LLM推理加速原理(一)

1.大语言模型的基本结构 transfomer block: 输入--->正则化-->qkv三个矩阵层(映射到三个不同空间中)---->q,k,v之后self attention进行三0合一---->线性映射,正则化。 2.大语言模型的推理 目前主流的语言大模型都采用decoder-only的结构,其推理过程由两部分…

辞职后,如何理性面对公司的挽留?我的职场选择之路

辞职后&#xff0c;面对公司的挽留&#xff0c;你会决定留下还是离开呢&#xff1f;这是一个让人犹豫不决的问题。 让我们来分析一下个人在职场中的价值和期望。每个人都有自己的职业规划和发展目标&#xff0c;这是非常正常的。在工作中&#xff0c;我们希望自己能够得到充分的…