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

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.lryc.cn/news/2379848.html

相关文章:

  • 【Redis】List 列表
  • JUC入门(四)
  • 【HarmonyOS 5】鸿蒙mPaaS详解
  • 多线BGP服务器优化实践与自动化运维方案
  • 无法加载文件 E:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
  • 【C++模板与泛型编程】实例化
  • TB开拓者策略交易信号闪烁根因及解决方法
  • 什么是RDMA?
  • C++面试3——const关键字的核心概念、典型场景和易错陷阱
  • ASIC和FPGA,到底应该选择哪个?
  • 【C++】嵌套类访问外部类成员
  • mac下载、使用mysql
  • java Lombok 对象模版和日志注解
  • Python学习笔记--使用Django操作mysql
  • win11下,启动springboot时,提示端口被占用的处理方式
  • 计算机视觉设计开发工程师学习路线
  • AI大模型从0到1记录学习numpy pandas day25
  • Opencv C++写中文(来自Gemini)
  • 下载和导出文件名称乱码问题
  • STM32实战指南:DHT11温湿度传感器驱动开发与避坑指南
  • 【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】
  • esp32课设记录(四)摩斯密码的实现 并用mqtt上传
  • 「HHT(希尔伯特黄变换)——ECG信号处理-第十三课」2025年5月19日
  • 前端(vue)学习笔记(CLASS 6):路由进阶
  • GPT-4.1特点?如何使用GPT-4.1模型,GPT-4.1编码和图像理解能力实例展示
  • 使用Python和FastAPI构建网站爬虫:Oncolo医疗文章抓取实战
  • 写一段图片平移的脚本
  • 【C++】哈希的概念与实现
  • Yocto和Buildroot功能和区别
  • 物联网数据湖架构