通过Ansible

时间:2018-12-18 14:17:06

标签: python ansible

我有一个YAML文件,其中包含ssh私钥。在密钥轮换过程中,我需要用新的密钥替换该密钥。我通过Ansible执行此过程,因此可以使用本机Ansible模块,bash命令或自定义python过滤器。文件格式必须保持。一些值以单引号样式指定:

my_new_key: 'This is a value'

但ssh键指定为文字:

ssh_key_data: |
  AKJHAKJHHJLKJAHSDDKJHSADKJHKJS
  LKJAHSDLKJH*&EYIUHCS*&YCHIJHSK

我尝试使用pyyaml,但这不符合原始文件的格式,并且将所有内容设置为相同的样式,即所有单引号或所有文字。使用此文件的下游系统对格式特别挑剔,因此我需要对其进行维护。 我将当前的ssh密钥作为变量,因此可以使用它来搜索文件,但是文件中的密钥可以缩进任意数量的空格,而变量中的缩进则不会缩进。此外,密钥可能包含斜杠,可以将其解释为转义序列。我尝试使用 sed

sed -i 's%{{ current_key }}%{{ new_key }}%g'

但是我收到有关未终止的's'命令的错误。结构如下所示。

- name: bob_dylans_trousers
  stuff: egg_shells
  content:
    ssh-key-data: |
      -----BEGIN RSA PRIVATE KEY-----
      MIIJKAIBAAKCAgEAtjd9po0fzwXpazk9uM9pNXdxAR3MSDfE0DAWP+37l4DanG6A
      CI3nOoaQRPCrqvOh03Yu1aab8nmavHSMClCfQjy2+BfoYh9EkG+OEtBlZj68TnGl
      HuLhX4IyyTar1+Xx7+4Ki8H9dKp/r9bYjiCZOYFe6bkiwjwwlIa6zGJzeDE+kLyk
      Ey56rSIA0gAF4RSKqGhnez2fpmMn+DegPE5Zs1wSEnKKZ8r6Cid3D5NRpJj5HOwc
      ma581lB5BosNW394WukkuTDk6lI1v7uGT7O78lpTO6FknvoFO/S+f+dXwVYZU8XX
      6mDiMzfRh5eDbrk4KdHIRT5w0n0pgAhhUC2tm+SkYCETrKIakfhAj7RQ0CYCHBVB
      -----END RSA PRIVATE KEY-----      

请记住,有人可以建议一种在保持格式的同时替换文件中密钥的方法吗?

0 个答案:

没有答案