我正试图在Ansible剧本中处理以下情况:
-
通过 Cloud 提供商的API创建服务器
-
存储API响应中的根凭据(用户名/密码)
-
使用根凭据登录并放置SSH密钥
-
设置新用户,禁用root登录等 .
我可以使用 authorized_key
和 user
模块进行第4步 . 我有一个模块(自建)用于步骤1和2.我如何处理第3步?是否存在使用用户名/密码以编程方式登录的现有解决方案?我不想通过命令行给他们 .
基本上我也可以为此构建一个模块 . 理想情况下,我想要类似于:
- task: setup SSH
place_ssh_with_passwd:
state: present
key: /path/to/local/key
path: /root/.ssh/authorized_keys
user: "{{ server.username }}"
password: "{{ server.password }}"
2 回答
使用
add_host
操作将主机添加到新组,并将来自 Cloud 提供程序的响应中的Jinja模板设置为ansible_ssh_host,ansible_ssh_user和ansible_ssh_pass(请参阅docs中的示例) . 然后开始一个针对新组的新游戏,以执行您的键位置以及您希望针对新主机执行的任何其他设置任务 .我找到了一种在服务器创建后在同一个游戏中完成此任务的方法:
shell脚本的位置如下:https://gist.github.com/elnygren/965a6db4f3fd8e242e90
在此之后,可以使用Ansible的内置模块来设置用户,其他键等 .