在运维工作中,如何使用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 密钥认证,避免手动输入密码。
-
在 Ansible 控制节点上生成 SSH 密钥对(如果尚未生成):
ssh-keygen -t rsa -b 2048 按回车键接受默认设置,生成密钥对。
-
将公钥复制到目标服务器:
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 }}"
关键点说明:
become: yes
:使用 sudo 提升权限,确保有权限添加用户。password_hash
:将明文密码转换为加密形式,提高安全性。notify
:触发handlers
,在用户创建成功后输出确认信息。
3. 执行 Playbook
将 hosts.ini
和 add_user.yml
文件保存到同一目录下,然后运行以下命令来执行 Playbook:
ansible-playbook -i hosts.ini add_user.yml
4. 安全性建议
4.1 避免明文密码
在实际生产环境中,建议不要在 YAML 文件中直接写明文密码。可以使用以下方法:
-
动态输入密码
使用vars_prompt
动态输入密码,避免将密码写入文件:vars_prompt: - name: user_password prompt: "请输入用户密码" private: yes -
使用 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 机制使得任务自动化变得简单高效,同时避免了手动操作的繁琐和错误。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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安全么?