使用 Ansible 管理服务器集群

news/2025/9/18 2:37:51/文章来源:https://www.cnblogs.com/Undefined443/p/19097958

Inventory

Ansible 使用 /etc/ansible/hosts 管理受控服务器列表:

---
ungrouped:hosts:node-1:ansible_host: 192.168.1.1ansible_user: johnnode-2:ansible_host: 192.168.1.2ansible_user: janenode-3:ansible_host: 192.168.1.3ansible_user: frank

关于 inventory 文件的字段说明,参见:Building an inventory | Ansible Core Documentation

ansible-inventory --list  # 列出 inventory

执行远程命令

Ansible 可以以如下方式临时执行一条远程命令:

ansible <group> -m ping                        # 测试连接
ansible <group> -m shell -a "df -h"            # 执行命令
ansible <group> -m copy -a "src=src dest=tgt"  # 上传文件

Playbook

对于复杂命令,可以通过 playbook 定义并执行:

---
- name: Create user
- hosts: ungroupedbecome: truetasks:- name: Update all packagesansible.builtin.apt:upgrade: dist- name: Greetingansible.builtin.shell: "echo 'Hello, world!'"

关于 playbook 的字段说明,参见:Using Ansible playbooks | Ansible Core Documentation

运行 playbook:

ansible-playbook -bK playbook.yml              # 执行 playbook (sudo)
ansible-playbook -C playbook.yml -e "arg=val"  # 干运行
ansible-playbook --syntax-check playbook.yml   # 语法检查
  • -a:args,指定操作参数
  • -b:become,启用权限提升
  • -K:请求权限提升密码
  • -i:指定 inventory 文件

配置

Ansible 默认配置文件为 ~/.ansible.cfg

[defaults]
# 指定默认的远程用户
remote_user = ubuntu# 指定远程 Python 解释器
interpreter_python = auto_silent# 指定私钥文件的路径
#private_key_file = /home/ubuntu/.ssh/id_ed25519ask_pass = False
ask_become_pass = True# 是否在主机不可达时停止执行
host_key_checking = False# 控制并发线程数
forks = 5# 输出的详细程度(0-4)
verbosity = 0# 指定库存文件路径
inventory = /etc/ansible/hosts# 指定远程 Shell
ansible_shell_executable = /usr/bin/bash# 使用 sudo 提升权限
[privilege_escalation]
become = False
become_user = root
become_method = sudo
become_ask_pass = False
ansible-config view                    # 查看配置
ansible-config init --disabled -t all  # 生成默认配置

Troubleshooting

临时文件权限错误

问题描述:执行下面的任务时,提示:“Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user”。

- name: Install miniconda3shell: |bash /home/share/miniconda.sh -bup /home/{{ username }}/.local/opt/miniconda3/home/{{ username }}/.local/opt/miniconda3/bin/conda init bashbecome_user: "{{ username }}"
TASK [Install miniconda3] ********************************************************************************************************************************
[ERROR]: Task failed: Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user (rc: 1, err: chmod: invalid mode: ‘A+user:john:rx:allow’
Try 'chmod --help' for more information.
}). For information on working around this, see https://docs.ansible.com/ansible-core/2.19/playbook_guide/playbooks_privilege_escalation.html#risks-of-becoming-an-unprivileged-user
Origin: /ansible/create_user.yml:72:770     #     state: present
71
72     - name: Install miniconda3^ column 7fatal: [h101]: FAILED! => {"changed": false, "msg": "Task failed: Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user (rc: 1, err: chmod: invalid mode: ‘A+user:john:rx:allow’\nTry 'chmod --help' for more information.\n}). For information on working around this, see https://docs.ansible.com/ansible-core/2.19/playbook_guide/playbooks_privilege_escalation.html#risks-of-becoming-an-unprivileged-user"}

问题原因:ansible 尝试使用 ACL 语法运行 chmod:chmod A+user:john:rx:allow,然而当前系统不支持 ACL。

解决方法:安装 ACL

sudo apt install acl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1现在处于非常破防的阶段,不知道为什么会打成这个样子。 ABC 过得很快。看到 D1 的第一眼就会了,发现转移只需要随便优化一下就能通过 D2,不太想写。E 看上去挺可做,F 看上去是板子题。于是开始写 F,不知道这种代…

US$109 NEC CHIP Smart Remote Key Fob For Benz C E Class (2 Batteries) 433Mhz 10pcs/lot

NEC CHIP Smart Remote Key Fob For Benz C E Class (2 Batteries) 433Mhz 10pcs/lot Package includes:10 pc x NEC CHIP Smart Remote Key Fob For Benz C E Class (2 Batteries) 433Mhz Pictures of NEC CHIP Smart…

Codeforces Round 1051 (Div. 2)

A. All Lengths Subtraction 题意:一个排列,对于每个\(k \in [1, n]\),你都要选择一个长度为\(k\)的子数组使得它们都减一,求有没有方案使得最终所有数都是\(0\)。 考虑\(k\)从大到小,发现做\(n\)的时候\(1\)变成…

US$11 3 Button Flip Folding Remote Key Fob with ID46 Chip 433 MHZ For Hyundai i30 ix35

3 Button Flip Folding Remote Key Fob with ID46 Chip 433 MHZ For Hyundai i30 ix35Package List:1pc x 3 Button Flip Folding Remote Key Fob with ID46 Chip 433 MHZ For Hyundai i30 ix35 Pictures of 3 Button …

US$39.99 3+1 Button Remote Key for Nissan 315Mhz FCC ID KBRASTU15 10pcs/lot

3+1 Button Remote Key for Nissan 315Mhz FCC ID KBRASTU15 10pcs/lotPackage includes:10pc x 3+1 Button Remote Key for Nissan 315Mhz FCC ID KBRASTU15 Pictures of 3+1 Button Remote Key for Nissan 315Mhz FC…

再不学就晚了!RDT LeRobot与RDKS100部署详解

作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 机械臂:LeRobot-SO101 数采机:MacBook-Pro Python3.10 开发机:Ubuntu 22.04, Cuda12.4,8 NVIDIA A100-SXM4-40GB 开发板:RDK OS 4.0.2 Bas…

编译Unity4.3.1f1

参考: 编译 Unity 4.3.1 引擎_unity-source-4.3.1f1-CSDN博客 Unity 4.3.1f1编译调试 - 知乎 Unity source 4.3.1f1 源代码分析-腾讯游戏学堂 附: 早期版本下载(4.x之前的版本)

[.NET逆向] Listary

View Post[.NET逆向] Listary[.NET逆向] Listary v6.3.5.94 前段时间在吾爱论坛闲逛,偶遇一篇帖子,自己便动手实操了一番 原文链接:https://www.52pojie.cn/thread-2025340-1-1.html I.工欲善其事必先利其器 a.List…

US$19 Smart Key Fob For Nissan Micra/Juke/Note Renault Alaska 433MHz

Smart Key Fob For Nissan Micra/Juke/Note Renault Alaska 433MHzPackage includes:1pc x Smart Key Fob For Nissan Micra/Juke/Note Renault Alaska 433MHz Pictures of Smart Key Fob For Nissan Micra/Juke/Note …

py -m pip show workalendar

py -m pip show workalendarpy -m pip show workalendar

【R课堂-电机专栏】为什么提高电机的电压时,转速会随之上升?

本文探讨的问题是 “为什么提高电机的电压时,转速会随之上升?”具体而言,就是当给电机绕组施加的电压升高(增大)时,为什么其转速会随之上升。这一现象看似理所当然,但其背后的原理却涉及诸多物理公式。这个问题…

抽象 CF

一道题在 CF 上有三倍经验,我有个细节假了: \(n \le 10^5\),84 个点的那道在 #64 寄了。 \(n \le 2 \times 10^5\),88 个点的那道在 #88 寄了。 \(n \le 5 \times 10^5\),111 个点的那道直接 A 了。

Day 007 顺序结构与选择结构-Java流程控制

Day 007 顺序结构与选择结构-Java流程控制$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");Java流程控制 顺序结构java的基本结构就是顺序结构,除非特别指明…

US$29 5 Button Smart key for Cadillac QN-RF629X 315MHZ/433MHZ FCC ID: HYQ2AB

5 Button Smart key for Cadillac QN-RF629X 315MHZ/433MHZ FCC ID: HYQ2AB Package includes:1pc x 5 Button Smart key for Cadillac QN-RF629X 315MHZ/433MHZ FCC ID: HYQ2AB Pictures of 5 Button Smart key for C…

单元测试之Mockito使用

测试中为什么需要Mock 在实际的测试中,被测试的对象并不都是可以通过简单的new操作符就可以创建出来的! 实际的业务代码中,一个业务类往往要依赖很多其他的类才能完成一个完整的业务方法,这些依赖包括第三方的rpc,…

Jetson有Jtop,Linux有Htop,RDK也有Dtop!

作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 本项目基于btop开源项目进行二次开发,旨在为RDK平台提供更强大的系统监控工具。 Linux系统下有Htop可以作为系统监控,英伟达的Jetson也有第三方的…

《原子习惯》-读书笔记4

2025.09.17 Day4 1、 养成习惯的过程可以分为四个简单的步骤:提示、渴求、反应和奖励。2、你的头脑在不断分析你的内外部环境,寻找奖励所在的线索。因为线索是我们已然接近奖励的第一个迹象,它自然会导致人们滋生渴…

Maven的配置

Maven的配置配置Maven 下载并配置Maven文件 1.[官网](Welcome to Apache Maven – Maven)下载Maven2.下载完毕后解压到文件夹中。3.配置环境变量系统环境变量名 变量值新建 MAVEN_HOME maven所在目录新建 M2_HOME mave…

JavaWeb基础知识1

JavaWeb基础知识1JavaWeb 1.基本概念 web开发:web,网页的意思 静态webhtml,css 提供的数据始终不会变化动态web提供的信息会改变 技术栈:Servlet/JSP ,ASP ,PHP在Java中,动态web资源开发的技术统称JavaWeb 1.2web应…

Java学习第四天

break continue break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用) continue语句用在循环语句体中,用于终止某次循环过程…