ansible用普通用户执行root权限的命令 + script模块
0.禁止root登陆
1.用sudo的用户登陆
2.执行root的权限
3.cat /etc/ansible/hosts
# Ex 2: A collection of hosts belonging to the 'webservers' group
[test]
10.0.0.3 ansible_ssh_user="dev" ansible_ssh_pass="do2admin" ansible_become_pass="ccsds@AA2123"
10.0.0.7 ansible_ssh_user="dev" ansible_ssh_pass="do2admin" ansible_become_pass="ccsds@AA2123"
-------------------------------------------------
[frame]
10.0.0.4
[frame:vars]
ansible_ssh_user="dev"
ansible_ssh_pass="do2admin"
-------------------------------------------------
[root@frontend-1 yum_with_items]# ansible frame -m shell -a 'whoami'
10.0.0.4 | CHANGED | rc=0 >>
dev
-------------------------------------------------
4.用普通用户执行root的任务
ansible playbook远程切换用户执行
[root@frontend-1 deploy]# cat root_cannot_login.yaml
---
- name : root can not login and other user login and sudo as root
hosts: all
gather_facts: False
become: yes
become_user: root
become_method: sudo
tasks:
- name: create test file as normal user
shell: echo 'hahahahahhahah how to show command run results' > /tmp/fuckdevsudotoroot1.txt
- name: create new user
shell: sudo useradd aftergege
- name: test use special charactor
shell: sudo echo 'do2admin'|passwd --stdin aftergege
- name: Show debug info
debug: var=result.stdout verbosity=3
参考:https://blog.csdn.net/change_can/article/details/105559227
# 在使用verbosity: 3的时候输出debug结果
ansible-playbook ./debug.yaml -i /root/ansible-code/inventory/inventory.ini --private-key=/root/.ssh/ansible -vvv
3.远程执行脚本
[root@frontend-1 deploy]# cat to_adduser_script.yaml
---
- name: login to adduser at remote host as normal user
gather_facts: FALSE
hosts: all
become: yes
become_user: root
become_method: sudo
tasks:
# - name: copy script to remote host
# copy: src=/opt/deploy/adduser.sh dest=/tmp/adduser.sh
- name: execute scripts at remote hosts
script: /tmp/adduser.sh
用一个例子来演示会更加清晰
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2019-10-21 prometheus 监控 redis + rabbitmq