使用Ansible playbook

时间:2015-07-13 08:23:54

标签: ssh ansible ansible-playbook

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

  1. 通过云提供商的API创建服务器
  2. 从API的响应中存储根凭据(用户名/密码)
  3. 使用root凭据登录并放置SSH密钥
  4. 设置新用户,禁用root登录等
  5. 我可以使用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 :(得分:0)

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

答案 1 :(得分: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的内置模块来设置用户,其他密钥等。