作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,如何使用Ansible向10台服务器中添加一个用户?

1. 准备工作
1.1 安装 Ansible

确保你的 Ansible 控制节点(运行 Ansible 命令的机器)已经安装了 Ansible。以下是安装方法:

# 对于基于 Debian 的系统(如 Ubuntu)
sudo apt update && sudo apt install ansible
# 对于基于 RedHat 的系统(如 CentOS)
sudo yum install ansible
1.2 配置 SSH 访问权限

Ansible 通过 SSH 连接到目标服务器执行任务。确保 Ansible 控制节点可以通过 SSH 访问目标服务器。建议使用 SSH 密钥认证,避免手动输入密码。

  1. 在 Ansible 控制节点上生成 SSH 密钥对(如果尚未生成):

    ssh-keygen -t rsa -b 2048

    按回车键接受默认设置,生成密钥对。

  2. 将公钥复制到目标服务器:

    ssh-copy-id user@192.168.1.X

    替换 user 为目标服务器上的用户名,192.168.1.X 为目标服务器的 IP 地址。

1.3 创建 Inventory 文件

Inventory 文件用于定义目标主机。创建一个名为 hosts.ini 的文件,并列出所有 10 台服务器的 IP 地址或主机名。

# hosts.ini
[servers]
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10
2. 编写 Playbook

创建一个 YAML 文件(例如 add_user.yml),用于向目标服务器添加用户。

2.1 YAML 文件内容

以下是一个完整的 YAML 文件示例,用于向 10 台服务器添加用户:

---
- name: 10 台服务器中添加用户
hosts: servers # 指定 Inventory 中的主机组
become: yes # 使用 sudo 提升权限
vars:
username: "newuser" # 要添加的用户名
user_password: "your_password" # 用户密码(建议加密)
tasks:
- name: 添加用户 "{{ username }}"
user:
name: "{{ username }}"
password: "{{ user_password | password_hash('sha512') }}"
state: present
shell: /bin/bash
create_home: yes
notify: 输出用户创建成功信息
- name: 输出用户创建成功信息
debug:
msg: "用户 '{{ username }}' 已成功添加到 {{ inventory_hostname }}"
handlers:
- name: 输出用户创建成功信息
debug:
msg: "用户 '{{ username }}' 已成功添加到 {{ inventory_hostname }}"

关键点说明:

  1. become: yes:使用 sudo 提升权限,确保有权限添加用户。
  2. password_hash:将明文密码转换为加密形式,提高安全性。
  3. notify:触发 handlers,在用户创建成功后输出确认信息。
3. 执行 Playbook

hosts.iniadd_user.yml 文件保存到同一目录下,然后运行以下命令来执行 Playbook:

ansible-playbook -i hosts.ini add_user.yml
4. 安全性建议
4.1 避免明文密码

在实际生产环境中,建议不要在 YAML 文件中直接写明文密码。可以使用以下方法:

  1. 动态输入密码
    使用 vars_prompt 动态输入密码,避免将密码写入文件:

    vars_prompt:
    - name: user_password
    prompt: "请输入用户密码"
    private: yes
  2. 使用 Ansible Vault 加密敏感信息
    将敏感变量(如密码)存储在加密文件中,而不是直接写在 Playbook 中。

    ansible-vault create secrets.yml

    secrets.yml 中写入:

    user_password: your_password

    然后在 Playbook 中引用:

    vars_files:
    - secrets.yml
5. 验证用户是否添加成功

执行 Playbook 后,可以通过以下命令在目标服务器上验证用户是否添加成功:

ssh user@192.168.1.X "id newuser"

如果用户添加成功,你会看到类似以下输出:

uid=1002(newuser) gid=1002(newuser) groups=1002(newuser)
6. 我的总结

综上所述,通过以上步骤,你可以使用 Ansible 轻松地向 10 台服务器中添加一个用户。Ansible 的 Playbook 机制使得任务自动化变得简单高效,同时避免了手动操作的繁琐和错误。

posted @   黄嘉波  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2024-03-07 在Docker中,如何查看镜像支持的环境变量?
2024-03-07 在Docker中,如何清理后台停止的容器?
2024-03-07 在Docker中,如何退出一个镜像的bash,而不终止它?
2024-03-07 在Docker中,Dockerfile有哪些常见指令?
2024-03-07 在Docker中,Docker安全么?
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波
点击右上角即可分享
微信分享提示