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

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...

相关文章:

  • 牛客网NC209794:使徒袭来
  • 一周快讯 | 银发文娱旅游一周新鲜事
  • 【愚公系列】《Manus极简入门》048-自然探险之旅:“户外活动规划师”
  • 深入理解 SPI 通信中的时钟极性与相位(CPOL 与 CPHA)
  • ARP 原理总结
  • 全新的开源监控工具CheckCle
  • C++学习:六个月从基础到就业——C++20:范围(Ranges)进阶
  • Supermemory:让大模型拥有“长效记忆“
  • 开源AI大模型等“神秘组合”,如何颠覆零售业数字化转型?
  • 统计客户端使用情况,使用es存储数据,实现去重以及计数
  • java中的Servlet4.x详解
  • GitHub排名第一的开源ERP项目:Odoo生产计划与执行的功能概述
  • Git初始化本地已有项目,并推送到远端Git仓库完整操作指南
  • Linux《自主Shell命令行解释器》
  • 昆仑通态MCGSpro,自定义配方功能
  • 用 CodeBuddy 搭建「MiniGoal 小目标打卡器」:一次流畅的 UniApp 开发体验
  • Grafana当前状态:SingleStat面板
  • Windows系统编译Qt使用的kafka(librdkafka)
  • 精益数据分析(68/126):数据透视表实战与解决方案验证——从问卷分析到产品落地的关键跨越
  • python学习day1
  • 解读|俄方称愿与乌方共同起草和平备忘录,特朗普多轮通话外交有效吗?
  • 去年上海60岁及以上户籍老年人口占总人口的37.6%
  • 国际博物馆日|在辽宁省博物馆遇见敦煌
  • 天算星座二期首批卫星成功发射,将助力6G空天信息基础设施建设
  • 纪念|脖子上挂着红领巾的陈逸飞
  • 官方通报汕头违建豪宅“英之园”将强拆:对有关人员严肃追责问责