场景:
根据 hosts
文件的 [clients] 部分执行以下操作:
- 检查用户“foo”的SSH登录是否失败,如果失败
- 使用authorized_key模块为用户“foo”添加SSH key
- 假设远程计算机上已存在用户“foo”,并且已在本地(ansible)主机上创建了 SSH 公钥
我知道this solution使用 Ansible 命令行,但我希望能够将其放入剧本中。让脚本与用户输入密码(包括 sudo)进行交互是可以接受的。
现在我想出了如何使用第 3 方角色 GROG.authorized-key 来做我想做的事情,但它仍然需要我使用 -K 开关运行 playbook。 Ansible 中是否有某些东西(除了命令行开关之外)只会在需要时提示输入密码?
- hosts: clients
vars:
authorized_key_list:
- name: pdo
authorized_keys:
- key: "{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}"
state: present
roles:
- { role: GROG.authorized-key }
最佳答案
我认为根据您的评论,这应该有效:
- hosts: clients
become: true
tasks:
- name: Add authorized_key to pdo user on the remote client machine(s)
authorized_key: user=foo key="{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}"
使用 -K 调用它以获取密码问题。这将在远程计算机上执行 sudo 命令。这就是您所需要的,不是吗?
关于python - 在剧本中使用authorized_key模块为新用户设置SSH key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36722679/