ansible 无法正常工作

ansible 无法正常工作

我正在使用任务 ansible

剧本.yml

---
- hosts: servers
  remote_user: user
  become: True
  become_user: user
  become_method: sudo
  gather_facts: no

  tasks:
    - name:
  ┆ ┆ copy:
  ┆ ┆ ┆ src: editProxy.sh
  ┆ ┆ ┆ dest: /tmp/editProxy.sh
  ┆ ┆ ┆ mode: 0755

  ┆ - name: run edit proxy settings for apt 
  ┆ ┆ command: /tmp/editProxy.sh

编辑代理脚本

#!/bin/bash

if grep -q "old_proxy" /etc/apt/apt.conf; then
    sed -i 's/old_proxy/new_proxy/g' /etc/apt/apt.conf;
fi

运行剧本 ansible-playbook palybook.yml --extra-vars='ansible_become_pass=passwd

脚本复制到服务器,并且不返回错误

更改:[10.1.1.1]

但是服务器上的更改不会发生,如果您在服务器上手动运行脚本,则更改会发生。可能是什么问题

答案1

这没有意义:

  remote_user: user
  become: True
  become_user: user
  become_method: sudo

您的剧本告诉 ansible 以用户 的身份连接到远程服务器,但您的剧本user没有sudo指定,而是指定了 同一用户!在其他一些评论中,您似乎希望您的剧本以 root 身份运行。如果是这种情况,那么您需要删除 ,以便 ansible能够。rootsudouserbecome_user: usersudoroot

答案2

已经考虑使用 Ansible 原生的,而不是上传脚本并执行该脚本来运行 sed 来替换配置文件中的字符串更换模块? 例如类似这样的内容:

  - name: Modify proxy settings for apt
    replace:
      path: /etc/apt/apt.conf
      regexp: 'old_proxy'
      replace: 'new_proxy'
      backup: yes

答案3

尝试一下 ansible.builtin.script! 传输本地脚本后在远程节点上运行该脚本。

相关内容