当前位置: 首页 > ops >正文

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 系统

    • 全部可选项:alpinedebianfreebsdgenericmacosmacosxdarwinopenbsdopenrcredhatslessolarissystemd

- name: Set a hostname specifying strategy  ansible.builtin.hostname:    name: web01    use: systemd

用户和用户组管理

用户组管理

ansible.builtin.group:用于用户组管理

参数

类型

默认值

说明

namestrnull

指定要创建、修改或删除的组的名称。这个参数是必需的,用来标识组。

forceboolno

如果为 yes,即使用户已经存在,也会强制重新创建该组。

gidintnull

设置组的 GID(组 ID),如果不提供,系统会自动分配一个。

localboolno

如果为 yes,组只会在本地系统创建,不会在 LDAP 或其他远程目录中创建。

non_uniqueboolno

如果为 yes,允许创建重复的组名。

statestrpresent

可选值:present 或 absentpresent 表示创建组,absent 表示删除组。

systemboolno

如果为 yes,则创建一个系统组,GID 小于 1000。

- 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:用于用户的管理

选项

类型

默认值

说明

namestrnull

要创建/管理的用户名。必需项。

appendboolfalse

添加附加组,而不是替换现有组列表。

authorizationstrnull

用于 AIX 系统指定授权信息。

commentstrnull

用户描述(通常为全名)。

create_homebooltrue

是否创建 home 目录。

expiresfloatnull

账户过期时间,UNIX 时间戳。-1 表示永不过期。

forceboolfalse

强制执行用户操作(如移动 home 目录时)。

generate_ssh_keyboolfalse

是否自动生成 SSH 密钥对。

groupstrnull

指定用户的主组。

groupslistnull

要将用户添加到的附加组列表。

hiddenboolfalse

对某些系统隐藏该用户(适用于macOS)。

homestrnull

用户 home 目录路径。

localboolfalse

仅在本地数据库中管理用户。

login_classstrnull

BSD 系统上的登录类。

move_homeboolfalse

移动 home 目录到新位置。

non_uniqueboolfalse

允许重复 UID。

passwordstrnull

用户加密后的密码。

password_expire_maxintnull

密码最大使用天数。

password_expire_minintnull

密码最小使用天数。

password_expire_warnintnull

密码到期前的警告天数。

password_lockboolfalse

锁定账户密码。

profilestrnull

用户环境配置文件路径。

removeboolfalse

删除用户时删除其 home 目录。

rolestrnull

设定用户登录角色。

seuserstrnull

SELinux 用户名。

shellstrnull

用户默认 shell。

skeletonstrnull

创建 home 目录时使用的 skeleton 目录。

ssh_key_bitsintnull

SSH 密钥长度。

ssh_key_commentstransible-generated on $HOSTNAME

SSH 公钥注释。

ssh_key_filestr.ssh/id_rsa

SSH 公钥存储路径。

ssh_key_passphrasestrnull

用于保护私钥的密码。

ssh_key_typestrrsa

SSH 密钥类型(如 rsa、ecdsa、ed25519)。

statestrpresent

present 创建/更新用户;absent 删除用户。

systemboolfalse

是否为系统用户。

uidintnull

指定用户 ID。

umaskstrnull

用户默认 umask。

update_passwordstralways

控制是否更新密码,选项:alwayson_create

常用选项:

选项

类型

默认值

说明

namestrnull

要创建/管理的用户名。必需项。

appendboolfalse

添加附加组,而不是替换现有组列表。

commentstrnull

用户描述(通常为全名)。

create_homebooltrue

是否创建 home 目录。

expiresfloatnull

账户过期时间,UNIX 时间戳。-1 表示永不过期。

generate_ssh_keyboolfalse

是否自动生成 SSH 密钥对。

groupstrnull

指定用户的主组。

groupslistnull

要将用户添加到的附加组列表。

passwordstrnull

用户加密后的密码。

password_expire_maxintnull

密码最大使用天数。

password_expire_minintnull

密码最小使用天数。

password_expire_warnintnull

密码到期前的警告天数。

password_lockboolfalse

锁定账户密码。

removeboolfalse

删除用户时删除其 home 目录。

shellstrnull

用户默认 shell。

ssh_key_bitsintnull

SSH 密钥长度。

ssh_key_commentstransible-generated on $HOSTNAME

SSH 公钥注释。

ssh_key_filestr.ssh/id_rsa

SSH 公钥存储路径。

ssh_key_passphrasestrnull

用于保护私钥的密码。

ssh_key_typestrrsa

SSH 密钥类型(如 rsa、ecdsa、ed25519)。

statestrpresent

present 创建/更新用户;absent 删除用户。

systemboolfalse

是否为系统用户。

uidintnull

指定用户 ID。

umaskstrnull

用户默认 umask。

update_passwordstralways

控制是否更新密码,选项:alwayson_create

- 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 密钥管理。

参数名

类型

默认值

说明

commentstrnull

添加到 key 后的注释(在 authorized_keys 中显示)

exclusiveboolfalse

若为 true,移除用户已有的非该任务指定的所有 key,仅保留本任务的 key

followboolfalse

是否跟随符号链接到 authorized_keys(避免链接被覆盖)

keystrnull

要添加到用户 authorized_keys 中的公钥内容(通常是 ssh-rsa AAAA...

key_optionsstrnull

为 key 添加 OpenSSH 限制(如 no-pty,no-agent-forwarding

manage_dirbooltrue

是否自动创建 ~/.ssh 目录,并设置权限

pathpath~/.ssh/authorized_keys

手动指定 authorized_keys 路径,覆盖默认值

statestrpresent

设置为 present 添加 key,设置为 absent 删除 key

userstrnull

指定哪个用户的公钥要被修改

validate_certsbooltrue

若 key 是 URL,是否验证 SSL 证书有效性

- name: set ssh key  ansible.posix.authorized_key:    user: redhat    state: present    key: "ssh-rsa AAAAB3NzaC1yc2EAAAADA...
http://www.xdnf.cn/news/7195.html

相关文章:

  • 02-前端Web开发(JS+Vue+Ajax)
  • 用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践
  • 【工具使用】STM32CubeMX-片内Flash读写操作
  • DTAS 3D多约束装配助力悬架公差分析尺寸链计算:麦弗逊/双叉臂/多连杆/H臂一网打尽
  • 软件设计师“开发过程模型:瀑布、增量、原型、螺旋、喷泉、基于构件的开发模型、形式化方法模型、统一过程RUP、敏捷、极限”真题考点分析——求三连
  • 从虚拟仿真到行业实训再到具身智能--华清远见嵌入式物联网人工智能全链路教学方案
  • 纯前端实现图文识别 OCR
  • paddle ocr本地化部署进行文字识别
  • 从编程助手到AI工程师:Trae插件Builder模式实战Excel合并工具开发
  • 解决 MySQL 错误 1356 (HY000)
  • WPF技巧-BindingProxy
  • 基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用|文献速递-深度学习医疗AI最新文献
  • iOS:重新定义移动交互,引领智能生活新潮流
  • 《算法导论(第4版)》阅读笔记:p86-p90
  • LabVIEW数据库使用说明
  • std::ranges::iota
  • ArcGIS Pro 3.4 二次开发 - 内容
  • DDoS与CC攻击:谁才是服务器的终极威胁?
  • 免费开放试乘体验!苏州金龙自动驾驶巴士即将上线阳澄数谷
  • 1.1 结构体与类对象在List中使用区别
  • C++23 std::mdspan:多维数组处理新利器
  • 如何用Python批量解压ZIP文件?快速解决方案
  • NC105NC106美光固态颗粒NC108NC109
  • Python学习笔记--使用Django操作mysql
  • C++开源库argh使用教程
  • 20250519使用TF卡将NanoPi NEO core开发板刷机为Ubuntu core22.04.3系统完成之后执行poweroff自动关机
  • CSS之网页元素的显示与隐藏(旧土豆网遮罩案例)
  • Unity开发:预制体、接口与枚举
  • 光子神经网络加速器编程范式研究:光子矩阵乘法的误差传播模型构建
  • 从单体到分布式:深入解析Data Mesh架构及其应用场景与价值