在Ansible中从头开始配置服务器

在Ansible中从头开始配置服务器,ansible,ansible-playbook,ansible-2.x,Ansible,Ansible Playbook,Ansible 2.x,我需要提供一个非常新鲜的Ubuntu服务器与Ansible。开始时,它只有root用户和生成的密码。我需要做的第一个操作是创建一个服务用户,为其设置密码,或者上传本地用户的密钥(这样我就可以不用密码登录)并禁用root登录。然后我需要以服务用户的身份运行一个角色。我如何在一个剧本中做到这一点(例如,signleansible playbook provision.yml而不是ansible playbook init.yml&&ansible playbook apply_roles.yml)?

我需要提供一个非常新鲜的Ubuntu服务器与Ansible。开始时,它只有
root
用户和生成的密码。我需要做的第一个操作是创建一个
服务
用户,为其设置密码,或者上传本地用户的密钥(这样我就可以不用密码登录)并禁用
root
登录。然后我需要以
服务
用户的身份运行一个角色。我如何在一个剧本中做到这一点(例如,signle
ansible playbook provision.yml
而不是
ansible playbook init.yml&&ansible playbook apply_roles.yml
)?问题是,在我创建了
服务之后,我需要在某个地方切换用户,然后(以及以后的所有登录),我需要以他的身份登录


将此主机的
ansible\u用户
配置为
服务
,并在初始设置时仅覆盖一次(到
根用户
)是一个好主意吗?有什么最佳实践吗?

在一个剧本中可以有多个剧本。为要以root用户身份运行的任务创建一个剧本,并为应以服务身份运行的角色创建另一个剧本:

- hosts: all
  remote_user: root
  tasks:
  # your tasks here

- hosts: all
  remote_user: service
  roles:
  - your_role

如果内存可用,Ubuntu实例从生成的根用户和本地用户开始:

我认为最干净的方法是首先通过bash脚本安装本地用户的密钥,通过:

ssh-copy-id <server>
ssh拷贝id
(如果运行ansible的命令行中有该命令)

然后在bash脚本的那一行之后继续运行Ansible脚本

(虽然我认为也可以将本地用户的信用存储在一个……我还没有使用过保险库,所以我对它不太熟悉。)

正如您所说,我将在启动文件(as)中或通过清单中的ansible_用户指定服务用户。(但是,您可能会在按照以下步骤进行操作时遇到问题。)

如果我使用启动文件来指定用户,那么该文件将有一个角色(比如说web服务器),该角色将有一个角色(比如说公用)

在公共角色中,我将有一个任务,该任务使用服务用户(设置为)尝试具有已知结果的命令。如果该任务没有返回预期结果,那么我将创建服务用户并将该服务用户的密钥复制到服务器。所涉及的每个任务都需要将been_用户覆盖到本地用户

在执行该角色依赖关系之后,将跟随主角色,并且所有剩余任务都应作为服务用户执行