Ansible模块——主机名设置和用户/用户组管理
设置主机名
ansible.builtin.hostname
:
-
name
:要设置的主机名 -
use
:更新主机名的方式(默认会自动选择,不指定的话,物理机一般不会有问题,容器可能会有问题,一般是让它默认选择)-
systemd
:使用hostnamectl
(适用于支持 systemd 的系统,如 CentOS 7+、RHEL 7+、Ubuntu 16.04+) -
redhat
:使用传统的方式,如修改/etc/sysconfig/network
(适用于早期 RHEL 系统) -
debian
:修改/etc/hostname
和/etc/hosts
(适用于 Debian、Ubuntu 等) -
freebsd
:FreeBSD 系统的方式 -
suse
:SUSE 系统 -
全部可选项:
alpine
,debian
,freebsd
,generic
,macos
,macosx
,darwin
,openbsd
,openrc
,redhat
,sles
,solaris
,systemd
。
-
- name: Set a hostname specifying strategy
ansible.builtin.hostname:
name: web01
use: systemd
用户和用户组管理
用户组管理
ansible.builtin.group
:用于用户组管理
参数 | 类型 | 默认值 | 说明 |
name | str | null | 指定要创建、修改或删除的组的名称。这个参数是必需的,用来标识组。 |
force | bool | no | 如果为 |
gid | int | null | 设置组的 GID(组 ID),如果不提供,系统会自动分配一个。 |
local | bool | no | 如果为 |
non_unique | bool | no | 如果为 |
state | str | present | 可选值: |
system | bool | no | 如果为 |
- name: Create group
ansible.builtin.group:
name: redhat
gid: 10001
state: present
- name: Delete the group
ansible.builtin.group:
name: redhat
state: absent
用户管理
ansible.builtin.user
:用于用户的管理
选项 | 类型 | 默认值 | 说明 |
name | str | null | 要创建/管理的用户名。必需项。 |
append | bool | false | 添加附加组,而不是替换现有组列表。 |
authorization | str | null | 用于 AIX 系统指定授权信息。 |
comment | str | null | 用户描述(通常为全名)。 |
create_home | bool | true | 是否创建 home 目录。 |
expires | float | null | 账户过期时间,UNIX 时间戳。-1 表示永不过期。 |
force | bool | false | 强制执行用户操作(如移动 home 目录时)。 |
generate_ssh_key | bool | false | 是否自动生成 SSH 密钥对。 |
group | str | null | 指定用户的主组。 |
groups | list | null | 要将用户添加到的附加组列表。 |
hidden | bool | false | 对某些系统隐藏该用户(适用于macOS)。 |
home | str | null | 用户 home 目录路径。 |
local | bool | false | 仅在本地数据库中管理用户。 |
login_class | str | null | BSD 系统上的登录类。 |
move_home | bool | false | 移动 home 目录到新位置。 |
non_unique | bool | false | 允许重复 UID。 |
password | str | null | 用户加密后的密码。 |
password_expire_max | int | null | 密码最大使用天数。 |
password_expire_min | int | null | 密码最小使用天数。 |
password_expire_warn | int | null | 密码到期前的警告天数。 |
password_lock | bool | false | 锁定账户密码。 |
profile | str | null | 用户环境配置文件路径。 |
remove | bool | false | 删除用户时删除其 home 目录。 |
role | str | null | 设定用户登录角色。 |
seuser | str | null | SELinux 用户名。 |
shell | str | null | 用户默认 shell。 |
skeleton | str | null | 创建 home 目录时使用的 skeleton 目录。 |
ssh_key_bits | int | null | SSH 密钥长度。 |
ssh_key_comment | str | ansible-generated on $HOSTNAME | SSH 公钥注释。 |
ssh_key_file | str | .ssh/id_rsa | SSH 公钥存储路径。 |
ssh_key_passphrase | str | null | 用于保护私钥的密码。 |
ssh_key_type | str | rsa | SSH 密钥类型(如 rsa、ecdsa、ed25519)。 |
state | str | present | present 创建/更新用户;absent 删除用户。 |
system | bool | false | 是否为系统用户。 |
uid | int | null | 指定用户 ID。 |
umask | str | null | 用户默认 umask。 |
update_password | str | always | 控制是否更新密码,选项: |
常用选项:
选项 | 类型 | 默认值 | 说明 |
name | str | null | 要创建/管理的用户名。必需项。 |
append | bool | false | 添加附加组,而不是替换现有组列表。 |
comment | str | null | 用户描述(通常为全名)。 |
create_home | bool | true | 是否创建 home 目录。 |
expires | float | null | 账户过期时间,UNIX 时间戳。-1 表示永不过期。 |
generate_ssh_key | bool | false | 是否自动生成 SSH 密钥对。 |
group | str | null | 指定用户的主组。 |
groups | list | null | 要将用户添加到的附加组列表。 |
password | str | null | 用户加密后的密码。 |
password_expire_max | int | null | 密码最大使用天数。 |
password_expire_min | int | null | 密码最小使用天数。 |
password_expire_warn | int | null | 密码到期前的警告天数。 |
password_lock | bool | false | 锁定账户密码。 |
remove | bool | false | 删除用户时删除其 home 目录。 |
shell | str | null | 用户默认 shell。 |
ssh_key_bits | int | null | SSH 密钥长度。 |
ssh_key_comment | str | ansible-generated on $HOSTNAME | SSH 公钥注释。 |
ssh_key_file | str | .ssh/id_rsa | SSH 公钥存储路径。 |
ssh_key_passphrase | str | null | 用于保护私钥的密码。 |
ssh_key_type | str | rsa | SSH 密钥类型(如 rsa、ecdsa、ed25519)。 |
state | str | present | present 创建/更新用户;absent 删除用户。 |
system | bool | false | 是否为系统用户。 |
uid | int | null | 指定用户 ID。 |
umask | str | null | 用户默认 umask。 |
update_password | str | always | 控制是否更新密码,选项: |
- name: Create a user
ansible.builtin.user:
name: redhat
group: redhat
groups:
- wheel
append: true
#shell: /bin/bash
#generate_ssh_key: true
#ssh_key_bits: 2048
#ssh_key_file: .ssh/id_rsa
system: false
uid: 10001
umask: "0002"
comment: "test user"
password: "{{ 'redhat' | password_hash('sha512') }}"
#password: "$6$randomsalt$nyZMZWZT9mAsW3O4fAAX66..."
password_expire_max: 365
password_expire_min: 7
password_expire_warn: 15
#expires: 1746057600
state: present
- name: Delete the user
ansible.builtin.user:
name: redhat
state: absent
remove: true
password: "{{ 'redhat' | password_hash('sha512') }}"
会导致模块不具有幂等性,因为每次生成的加密内容都不同,可以通过openssl passwd -6 -salt randomsalt redhat
设置一个固定的加密密码以满足幂等性。SSH 密钥也可以用
ansible.builtin.authorized_key
来设置.
设置 SSH 密钥
ansible.builtin.authorized_key
用于 SSH 密钥管理。
参数名 | 类型 | 默认值 | 说明 |
comment | str | null | 添加到 key 后的注释(在 |
exclusive | bool | false | 若为 |
follow | bool | false | 是否跟随符号链接到 |
key | str | null | 要添加到用户 authorized_keys 中的公钥内容(通常是 |
key_options | str | null | 为 key 添加 OpenSSH 限制(如 |
manage_dir | bool | true | 是否自动创建 |
path | path | ~/.ssh/authorized_keys | 手动指定 |
state | str | present | 设置为 |
user | str | null | 指定哪个用户的公钥要被修改 |
validate_certs | bool | true | 若 |
- name: set ssh key
ansible.posix.authorized_key:
user: redhat
state: present
key: "ssh-rsa AAAAB3NzaC1yc2EAAAADA...
相关文章:
Ansible模块——主机名设置和用户/用户组管理
设置主机名 ansible.builtin.hostname: name:要设置的主机名 use:更新主机名的方式(默认会自动选择,不指定的话,物理机一般不会有问题,容器可能会有问题,一般是让它默认选择) syst…...

【Redis】List 列表
文章目录 初识列表常用命令lpushlpushxlrangerpushrpushxlpop & rpoplindexlinsertllen阻塞操作 —— blpop & brpop 内部编码应用场景 初识列表 列表类型,用于存储多个字符串。在操作和实现上,类似 C 的双端队列,支持随机访问(O(N)…...

JUC入门(四)
ReadWriteLock 代码示例: package com.yw.rw;import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReentrantReadWriteLock;public class ReadWriteDemo {public static void main(String[] args) {MyCache myCache new MyCache…...

【HarmonyOS 5】鸿蒙mPaaS详解
【HarmonyOS 5】鸿蒙mPaaS详解 一、mPaaS是什么? mPaaS 是 Mobile Platform as a Service 的缩写,即移动开发平台。 蚂蚁移动开发平台mPaaS ,融合了支付宝科技能力,可以为移动应用开发、测试、运营及运维提供云到端的一站式解决…...
多线BGP服务器优化实践与自动化运维方案
背景:企业级网络架构中的线路选择难题 在分布式业务部署场景下,如何通过三网融合BGP服务器实现低延迟、高可用访问?本文以某电商平台流量调度优化为案例,解析动态BGP服务器的实战价值。 技术方案设计 核心架构:采用…...

无法加载文件 E:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
遇到“无法加载文件 E:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本”这类错误,通常是因为你的 PowerShell 执行策略设置为不允许运行脚本。在 Windows 系统中,默认情况下,出于安全考虑,PowerShell 可能会阻止运行未…...

【C++模板与泛型编程】实例化
目录 一、模板实例化的基本概念 1.1 什么是模板实例化? 1.2 实例化的触发条件 1.3 实例化的类型 二、隐式实例化 2.1 隐式实例化的工作原理 2.2 类模板的隐式实例化 2.3 隐式实例化的局限性 三、显式实例化 3.1 显式实例化声明(extern templat…...
TB开拓者策略交易信号闪烁根因及解决方法
TB开拓者策略信号闪烁分析 TB开拓者策略交易信号闪烁根因 TB开拓者策略交易信号闪烁根因分析 信号闪烁是交易策略开发中常见的问题,特别是在TB(TradeBlazer)开拓者等平台上。以下是信号闪烁的主要根因分析: 主要根因 未来函数问题 使用了包含未来信息…...

什么是RDMA?
什么是RDMA? RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,就是为了解决网络传输中服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许高吞吐、低延迟的网络…...
C++面试3——const关键字的核心概念、典型场景和易错陷阱
const关键字的核心概念、典型场景和易错陷阱 一、const本质:类型系统的守护者 1. 与#define的本质差异 维度#defineconst编译阶段预处理替换编译器类型检查作用域无作用域(全局污染)遵循块作用域调试可见性符号消失保留符号信息类型安全无类…...

ASIC和FPGA,到底应该选择哪个?
ASIC和FPGA各有优缺点。 ASIC针对特定需求,具有高性能、低功耗和低成本(在大规模量产时);但设计周期长、成本高、风险大。FPGA则适合快速原型验证和中小批量应用,开发周期短,灵活性高,适合初创企…...
【C++】嵌套类访问外部类成员
文章目录 C嵌套类访问外部类成员详解:权限、机制与最佳实践一、默认访问权限:并非友元二、访问外部类私有成员的方法1. 声明友元关系2. 通过公有接口访问 三、静态成员 vs. 非静态成员四、实际应用案例:Boost.Asio线程池场景需求实现关键代码…...
mac下载、使用mysql
1.如果对版本没有特别要求,那么直接使用brew install mysql安装即可。 2.使用 brew services start mysql 启动mysql。 3.使用 mysql -u root 登录mysql,这个时候还是不需要密码的 4.退出数据库:exit 5.给root设置一个密码,使用 m…...
java Lombok 对象模版和日志注解
目录 1、依赖: 2、在Idea中确认是否安装Lombok 插件 3、 Lombok常用注解 3.1 Getter 和 Setter 3.2 ToString 3.3 AllArgsConstructor 和 NoArgsConstructor 3.4 Data 3.5 FieldDefaults 4、 Slf4j 日志注解 4.2 日志级别 4.3 设置日志级别 1、依赖:…...

Python学习笔记--使用Django操作mysql
注意:本笔记基于python 3.12,不同版本命令会有些许差别!!! Django 模型 Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。 Django 为这些数据库提供了统一的调…...
win11下,启动springboot时,提示端口被占用的处理方式
注:此操作可能存在风险!! 在启动springboot时,提示端口被占用。于是执行 #查看所有的占用的端口 netstat -ano | findStr 8080 结果发现并没有什么进程占据8080端口。再次执行: # 查看系统保留端口 netsh int ipv4…...

计算机视觉设计开发工程师学习路线
以下是一条系统化的计算机视觉(CV)学习路线,从基础到进阶,涵盖理论、工具和实践,适合逐步深入,有需要者记得点赞收藏哦: 相关学习:python深度学习,python代码定制 python…...
AI大模型从0到1记录学习numpy pandas day25
第 3 章 Pandas 3.1 什么是Pandas Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)…...
Opencv C++写中文(来自Gemini)
基于与Google Gemini交互获取的Opencv在图片上写汉字的实现 sudo apt-get install libfreetype6-dev sudo apt-get install fonts-wqy-zenhei CMakeLists.txt cmake_minimum_required(VERSION 3.10) # Or a more recent versionproject(OpenCVChineseText)set(CMAKE_CXX_STAN…...
下载和导出文件名称乱码问题
只对文件名称进行乱码处理,和文件中的内容无关。 import lombok.SneakyThrows; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.cont…...

STM32实战指南:DHT11温湿度传感器驱动开发与避坑指南
知识点1【DHT11的概述】 1、概述 DHT是一款温湿度一体化的数字传感器(无需AD转换)。 2、驱动方式 通过单片机等微处理器简单的电路连接就能实时采集本地湿度和温度。DHT11与单片机之间采用单总线进行通信,仅需要一个IO口。 相对于单片机…...

【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】
1. HCI_Read_Local_Version_Information 命令介绍 1. 功能(Description) HCI_Read_Local_Version_Information 命令用于读取本地 Bluetooth Controller 的版本信息,包括 HCI 和 LMP 层的版本,以及厂商 ID 和子版本号。 这类信息用…...

esp32课设记录(四)摩斯密码的实现 并用mqtt上传
摩斯密码(Morse Code)是一种通过点(.)和划(-)组合来表示字符的编码系统。下面我将在esp32上实现摩斯密码的输入,并能够发送到mqtt的broker。 先捋一下逻辑,首先esp32的按键已经编写了短按与长按功能,这将是输出摩斯密码点和划的基础。然后当2…...

「HHT(希尔伯特黄变换)——ECG信号处理-第十三课」2025年5月19日
一、引言 心电信号(ECG)是反映心脏电活动的重要生理信号,其特征提取对于心脏疾病的诊断和监测具有关键意义。Hilbert - Huang Transform(HHT)作为一种强大的信号处理工具,在心电信号特征提取领域得到了广泛…...

前端(vue)学习笔记(CLASS 6):路由进阶
1、路由的封装抽离 将之前写在main.js文件中的路由配置与规则抽离出来,放置在router/index.js文件中,再将其导入回main.js文件中,即可实现路由的封装抽离 例如 //index.js import { createMemoryHistory, createRouter } from vue-routerim…...

GPT-4.1特点?如何使用GPT-4.1模型,GPT-4.1编码和图像理解能力实例展示
几天前,OpenAI在 API 中推出了三个新模型:GPT-4.1、GPT-4.1 mini 和 GPT-4.1 nano。这些模型的性能全面超越 GPT-4o 和 GPT-4o mini(感觉这个GPT-4.1就是GPT-4o的升级迭代版本),主要在编码和指令跟踪方面均有显著提升。还拥有更大的上下文窗口…...
使用Python和FastAPI构建网站爬虫:Oncolo医疗文章抓取实战
使用Python和FastAPI构建网站爬虫:Oncolo医疗文章抓取实战 前言项目概述技术栈代码分析1. 导入必要的库2. 初始化FastAPI应用3. 定义请求模型4. 核心爬虫功能4.1 URL验证和准备4.2 设置HTTP请求4.3 发送请求和解析HTML4.4 提取文章内容4.5 保存结果和返回数据 5. AP…...
写一段图片平移的脚本
问题描述: 写一段图片平移的脚本。 平移就是将对象换一个位置。如果你要沿方向移动,移动的距离是,你可以以下面的方式构建移动矩阵:。 你可以使用Numpy 数组构建这个矩阵(数据类型是np.float32)…...

【C++】哈希的概念与实现
1.哈希概念 通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系,可以不经过任何比较,一次直接从表中得到要搜索的元素。 当向该结构中: 插入元素: 根据待插入元素的关键码,以此函数计算出该元素的…...

Yocto和Buildroot功能和区别
一.介绍 Yocto 和 Buildroot 都是用于嵌入式 Linux 系统开发的工具集,它们的目的是帮助开发者轻松构建定制的 Linux 系统镜像,以便在嵌入式设备上运行。 二.对比 1.Yocto Yocto 是一个开源的嵌入式 Linux 构建系统,它允许开发者创建自定义…...