configuration - ansible 基础设施即代码:从配置文件中创建、更新、删除用户
问题描述
TLDR
我希望我们基础设施上的用户准确地反映我提供给 ansible 的配置文件(json)。
一个快速而简单的方法是:
- 删除所有用户
- 重新创建所有用户
但这意味着在每次部署时,用户都会消失片刻,这是必须避免的!更好的方法可能是:
- 列出基础设施上的所有用户
- 创建丢失的用户
- 更新所有用户(确保他们使用 json 文件中的最新配置)
- 删除所有其他用户
虽然我可能可以手动实现,但这似乎相当麻烦。有没有更简单的方法可以用 ansible 实现这个?
很长的故事
我们ansible
用来配置我们的基础设施。例如,在创建用户时,主要任务如下所示:
- name: import users
uri:
url: "{{ '%(url)s/users/user/%(user)s'|format(
url=url,
user=user
) }}"
method: PUT
user: "{{ configuration_user }}"
password: "{{ configuration_password }}"
force_basic_auth: yes
body_format: json
body: "{{ lookup('template', item) }}"
status_code: 200, 201
vars:
user: "{{ item | basename | regex_replace('.json','') }}"
with_fileglob:
- security/users/*.json
所以我们只是使用该PUT
方法来创建/更新用户。这种方法的难点:
- 基础设施必须提供创建/更新方法(
PUT
或POST
带有覆盖选项或类似的东西) - 当一个用户被删除时,我们删除了相应的 json 文件,再次运行 ansible 脚本不会删除该用户。
解决方案
推荐阅读
- android - 使用 Firebase 值更新 RecyclerView 不起作用
- javascript - 如何在反应js中显示一个url的两个组件
- class - 记录为空?
- reactjs - 选择 KeyboardDateTimePicker 时无法读取未定义的属性“值”
- amazon-web-services - 当 aws codepipeline 运行时向 slack 发送警报
- ethereum - MyContractInstance.methods.MyMethod 不是函数(合同实例无法获取合同方法)web3
- sum - 特定时间段内的总天数 Power Bi
- html - 如何使图像高度适合父 div 的高度
- amazon-web-services - AWS CDK 将更改部署到 swagger 保留旧值
- python - (Python) 使用字典的单词替换程序,只应用第一个单词