`remote_user` 在剧本和角色中被忽略
`remote_user` is ignored in playbooks and roles
我在 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
有什么我遗漏的或如何解决的建议吗?
试试这个
代替“remote_user: root”使用“remote_user: ansible”和额外的“become: yes”,”become_user: root”,”become_method : sudo 或 su”
Q: "remote_user: root is ignored"
答:剧本按预期工作
- hosts: test_01
gather_facts: false
become: no
remote_user: root
tasks:
- command: whoami
register: result
- debug:
var: result.stdout
给予
"result.stdout": "root"
但是,可以在清单中覆盖该变量。例如库存
$ cat hosts
all:
hosts:
test_01:
vars:
ansible_connection: ssh
ansible_user: admin
结果是
"result.stdout": "admin"
使用命令仔细检查库存
$ ansible-inventory --list
笔记
可能还需要仔细检查角色 - role: papanito.bootstrap
我遇到了类似的问题,其中 ec2 实例需要不同的用户名才能使用 ssh。你可以试试下面的例子
- import_playbook: playbooks/bootstrap.yml
vars:
ansible_ssh_user: root
我在 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
有什么我遗漏的或如何解决的建议吗?
试试这个
代替“remote_user: root”使用“remote_user: ansible”和额外的“become: yes”,”become_user: root”,”become_method : sudo 或 su”
Q: "remote_user: root is ignored"
答:剧本按预期工作
- hosts: test_01
gather_facts: false
become: no
remote_user: root
tasks:
- command: whoami
register: result
- debug:
var: result.stdout
给予
"result.stdout": "root"
但是,可以在清单中覆盖该变量。例如库存
$ cat hosts
all:
hosts:
test_01:
vars:
ansible_connection: ssh
ansible_user: admin
结果是
"result.stdout": "admin"
使用命令仔细检查库存
$ ansible-inventory --list
笔记
可能还需要仔细检查角色
- role: papanito.bootstrap
我遇到了类似的问题,其中 ec2 实例需要不同的用户名才能使用 ssh。你可以试试下面的例子
- import_playbook: playbooks/bootstrap.yml
vars:
ansible_ssh_user: root