【发布时间】:2021-06-02 02:31:10
【问题描述】:
Ansible 主机:
- CentOS 6(2.6.32-754.35.1.el6.x86_64)
- Python 2.6 版
- Ansible 2.6 版
测试虚拟机:
- CentOS 7(CentOS Linux 版本 7.9.2009(核心)3.10.0-1160.11.1.el7.x86_64)
- Python 2.7.5
我如何将用户添加到测试服务器:
groupadd -g 590 www
groupadd -g 591 playbookuser
adduser -u 690 -g 591 playbookuser
usermod -a -G www playbookuser
mkdir -p /home/playbookuser/.ssh/
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAA==">> /home/playbookuser/.ssh/authorized_keys
chmod 600 /home/playbookuser/.ssh/authorized_keys
chown -R playbookuser.playbookuser /home/playbookuser/
In /etc/sudoers addet "playbookuser ALL=(ALL) NOPASSWD:ALL"
然后我创建并运行剧本:
---
- hosts: all
become: yes
become_method: sudo
gather_facts: no
tasks:
- name: backup sshd config
copy:
src: /etc/ssh/sshd_config
dest: /etc/ssh/sshd_config.bak
backup: yes
Ansible 通过 ssh 连接到测试机器并执行来自用户 playbookuser 的命令 那么剧本将不起作用,请问是什么问题? PS。如果您在控制台中使用 sudo 前缀从用户运行相同的命令,那么一切正常。
但我收到此错误:
MSG:
an error occurred while trying to read the file '/etc/ssh/sshd_config': [Errno 13] Permission denied: '/etc/ssh/sshd_config'
to retry, use: --limit @/var/lib/****/workspace/test_adm_deploy/174/backup_sshd%20_config.retry
【问题讨论】:
-
您正在尝试将本地控制器 sshd 配置文件复制到清单中定义的每个远程目标。启动 playbook 的本地用户无权访问该文件。我怀疑你真正想要的是将远程文件复制到目标机器上的不同位置。在这种情况下,在复制模块中使用
remote_src: yes。但在这种情况下,backup: yes确实是 IMO 的矫枉过正。
标签: ansible centos centos7 ansible-2.x