gpt4 book ai didi

ansible - `remote_user` 在剧本和角色中被忽略

转载 作者:行者123 更新时间:2023-12-03 22:30:11 26 4
gpt4 key购买 nike

我在 ansible.cfg 中定义了以下内容

# default user to use for playbooks if user is not specified
# (/usr/bin/ansible will use current user as default)
remote_user = ansible

但是我有一个剧本 bootstrap.yaml我与 root 联系的地方而不是 ansible
---
- hosts: "{{ target }}"
become: no
gather_facts: false
remote_user: root

vars:
os_family: "{{ osfamily }}}"

roles:
- role: papanito.bootstrap

然而似乎 remote_user: root被忽略,因为我总是收到连接错误,因为它使用用户 ansible而不是 root对于 ssh 连接
fatal: [node001]: UNREACHABLE! => {"changed": false,
"msg": "Failed to connect to the host via ssh:
ansible@node001: Permission denied (publickey,password).",
"unreachable": true}

我能找到的唯一解决方法是使用 -e ansible_user=root 调用剧本。 .但这并不方便,因为我想用 site.yaml 调用多个剧本。 ,其中第一个剧本必须与 ansible_user 一起运行 root ,而其他人必须使用 ansible 运行
- import_playbook: playbooks/bootstrap.yml
- import_playbook: playbooks/networking.yml
- import_playbook: playbooks/monitoring.yml

我缺少什么或如何解决它的任何建议?

最佳答案

Q: "remote_user: root is ignored"



A:剧本按预期工作
- hosts: test_01
gather_facts: false
become: no
remote_user: root
tasks:
- command: whoami
register: result
- debug:
var: result.stdout


"result.stdout": "root"

但是,可以在 list 中覆盖该变量。例如与库存
$ cat hosts
all:
hosts:
test_01:
vars:
ansible_connection: ssh
ansible_user: admin

结果是
"result.stdout": "admin"

使用命令仔细检查库存
$ ansible-inventory --list

笔记
  • 可能还需要仔细检查角色 - role: papanito.bootstrap
  • Controlling how Ansible behaves: precedence rules
  • 关于ansible - `remote_user` 在剧本和角色中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59334722/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com