首页 文章

使用Ansible playbook中的用户名/密码(从API获取)登录

提问于
浏览
1

我正试图在Ansible剧本中处理以下情况:

  • 通过 Cloud 提供商的API创建服务器

  • 存储API响应中的根凭据(用户名/密码)

  • 使用根凭据登录并放置SSH密钥

  • 设置新用户,禁用root登录等 .

我可以使用 authorized_keyuser 模块进行第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 回答

  • 0

    使用 add_host 操作将主机添加到新组,并将来自 Cloud 提供程序的响应中的Jinja模板设置为ansible_ssh_host,ansible_ssh_user和ansible_ssh_pass(请参阅docs中的示例) . 然后开始一个针对新组的新游戏,以执行您的键位置以及您希望针对新主机执行的任何其他设置任务 .

  • 0

    我找到了一种在服务器创建后在同一个游戏中完成此任务的方法:

    - name: create server
       ...use module, create server and grap password from output...
    
     - name: add SSH key to server
       shell: "./scp_ssh_key.sh /path/to/key user@host:/path/ {{ passwd }}
    

    shell脚本的位置如下:https://gist.github.com/elnygren/965a6db4f3fd8e242e90

    在此之后,可以使用Ansible的内置模块来设置用户,其他键等 .

相关问题