我正在将Invoke / Fabric与boto3一起使用来创建一个AWS实例并将其移交给Ansible脚本。为此,在Ansible接管之前,必须在远程计算机上做一些准备工作,特别是安装Python,创建用户和复制公共SSH密钥。
AWS映像随附于特定用户。我只想使用此用户来创建自己的用户,复制公共密钥并在以后删除密码登录。使用Fabric CLI时,不会创建连接对象,并且无法在任务中对其进行修改。
切换用户(又是在任务之间重新创建连接对象)并与刚创建的用户运行以下任务的好方法是什么?
我可能不会以正确的方式进行处理(我正在从结构1迁移,其中环境值的切换已足够)。我知道一些策略,其中大多数消除了我们一直依赖的灵活性。
我想这个清单也包括一个最佳实践问题。
答案 0 :(得分:0)
AWS映像随附于特定用户。我想使用这个用户 仅用于创建我自己的用户,复制公共密钥并删除密码登录 然后。使用Fabric CLI时,未创建连接对象 并且不能在任务中修改。
我不确定这是正确的。我已经在执行任务的过程中切换了用户。您只需确保需要更新的env的所有后续调用都使用execute
操作。
例如
def create_users():
run('some command')
def some_other_stuff():
run('whoami')
@task
def new_instance():
# provision instance using boto3
env.host = [ ip_address ]
env.user = 'ec2-user'
env.password = 'sesame'
execute(create_users)
env.user = 'some-other-user'
execute(some_other_stuff)