我正在尝试编写一个Ansible playbook来引导我的服务器.默认情况下,在Linode上我只能以root身份使用密码登录,因此我的playbook以root身份登录,使用SSH密钥创建非root用户,并禁用root和密码SSH.
这是一个问题,因为我现在无法再次运行该剧本,因为root登录已被禁用!我希望该剧本具有幂等性,而不必在引导它们之后添加和删除主机.
解决方法
如果使用
linode module在Linode上创建服务器,则可以注册linode任务的返回值,并包含引导任务,并在条件下检查linode任务的输出.这应该是幂等的.尝试这样的事情:
- linode: api_key: 'longStringFromLinodeApi' name: linode-test1 plan: 1 datacenter: 2 distribution: 99 password: 'superSecureRootPassword' private_ip: yes ssh_pub_key: 'ssh-rsa qwerty' swap: 768 wait: yes wait_timeout: 600 state: present register: linode_node - include: bootstrap.yml when: linode_node.changed
bootstrap.yml将包含禁用ssh root登录等所需的所有任务.