【问题标题】:K3s Ansible Playbook - Define multiple ansible_usersK3s Ansible Playbook - 定义多个 ansible_users
【发布时间】:2021-07-20 05:53:18
【问题描述】:

我正在尝试使用以下代码通过 Ansible 使用 k3s 设置 Kubernetes 集群:https://github.com/k3s-io/k3s-ansible

我必须在 inventory/my-cluster/group_vars/all.yml 中更改 ansible_user 以匹配我的环境。这里的问题是我有一个 ubuntu pc 作为 master (ansible_user: antonis) 和两个 raspberry pi 作为 worker (ansible_user: pi)。

all.yml

---
k3s_version: v1.17.5+k3s1
ansible_user: antonis
systemd_dir: /etc/systemd/system
master_ip: "{{ hostvars[groups['master'][0]]['ansible_host'] | default(groups['master'][0]) }}"
extra_server_args: ""
extra_agent_args: ""

如果我执行ansible-playbook site.yml -i inventory/my-cluster/hosts.ini,我会按预期收到以下错误:

Failed to connect to the host via ssh: antonis@192.168.xxx.xxx

原因是workers的用户是pi而不是antonis。

然后我在 host.ini 中传递用户:

[master]
192.168.xxx.xxx

[node]
pi@192.168.xxx.xxx
pi@192.168.xxx.xxx


[k3s_cluster:children]
master
node

但是我得到以下信息:

fatal: [pi@192.168.xxx.xxx]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'token'"}
fatal: [pi@192.168.xxx.xxx]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'token'"}

PLAY RECAP ***************************************************************************************************************************************************************************************************
192.168.xxx.xxx               : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
pi@192.168.xxx.xxx           : ok=15   changed=1    unreachable=0    failed=1    skipped=8    rescued=0    ignored=0   
pi@192.168.xxx.xxx           : ok=15   changed=5    unreachable=0    failed=1    skipped=8    rescued=0    ignored=0  

有人知道怎么解决吗?

【问题讨论】:

  • 您是否尝试过这样做:192.168.xxx.xxx ansible_user=pi
  • 您的意思是在 hosts.ini 文件中吗?像 192.168.1.70 ansible_user=antonis?不,它不起作用。

标签: kubernetes ansible ansible-inventory k3s


【解决方案1】:

尝试像这样配置您的host.ini

master ansible_port=22 hostname=master.example.com ansible_host=192.168.xxx.xxx ansible_user=antonis
node1 ansible_port=22 hostname=node1.example.com ansible_host=192.168.xxx.xxx ansible_user=pi
node2 ansible_port=22 hostname=node2.example.com ansible_host=192.168.xxx.xxx ansible_user=pi

[master]
master

[node]
node1
node2

[k3s_cluster:children]
master
node

对您来说重要的键是ansible_useransible_host。其他ansible_porthostname 是可选的,因此仅在您需要时使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多