Chef infra 将节点和客户端文件夹添加到chef服务器模板是否是一种良好的做法

Chef infra 将节点和客户端文件夹添加到chef服务器模板是否是一种良好的做法,chef-infra,chef-solo,Chef Infra,Chef Solo,我还在学习厨师。我已引导并将服务器模板上载到远程存储库。但我想知道,如果将节点目录添加到远程存储库中是否安全,因为它包含确切的服务器密码 下面是一个示例节点 { "environment":"production", "authorization": { "sudo": { // The password for the depliy user is set in data_bags/users/deploy.json // and should be g

我还在学习厨师。我已引导并将服务器模板上载到远程存储库。但我想知道,如果将节点目录添加到远程存储库中是否安全,因为它包含确切的服务器密码

下面是一个示例节点

{
  "environment":"production",
  "authorization": {
    "sudo": {
      // The password for the depliy user is set in data_bags/users/deploy.json
      // and should be generated using:
      // openssl passwd -1 "plaintextpassword"
      "users": ["deploy", "vagrant"]
    }
  },

  "vagrant" : {
    "exclusions" : [],
    "name" : "rails-postgres-redis1",
    "ip" : "192.168.50.4"
  },
  "rbenv":{
    "rubies": [
      "2.1.2"
    ],
    "global" : "2.1.2",
    "gems": {
      "2.1.2" : [
        {"name":"bundler"}
      ]
    }
  },
  "monit": {
    "notify_emails" : ["email@example.com"],
    "enable_emails" : false,
    "web_interface" : {
      // the plaintext monit username and password
      "allow" : ["your_username","your_password"]
    },
    "mailserver" : {
      "host" : "mailserver.example.com",
      "port" : "999",
      "username" : "your_username",
      "password" : "your_password",
      "hostname" : "the_hostname"
    }
  },
  "postgresql" : {
    "password" : {
      // this should be generated with:
      // openssl passwd -1 "plaintextpassword"
      // currently test
      "postgres" : "$1$mMK9HNoN$r42n7Q8fKsZabbknlT1Zt1"
    }
  },
  "run_list":
  [
    "role[server]",
    "role[nginx-server]",
    "role[postgres-server]",
    "role[rails-app]",
    "role[redis-server]",
  ]
}
由于密码可见,这样添加是否安全

如果它应该在gitignore中,那么在以后的阶段,如果我们从远程repo克隆,那么我们需要从头开始引导服务器,因为不存在节点目录,对吗


有没有更好的办法,或者我错过了什么

引导节点不需要节点json文件的副本。安全数据应来自Chef Vault/Hashicorp Vault/任何其他安全存储。非机密数据可以是配方/包装配方/角色/环境等的一部分,可以存储在存储库中。如果您确实拥有特定于单个节点的数据,则可以在引导过程中使用-j传递这些数据。

基于上述答案,我假设版本控制中不需要节点json,并且可以轻松地重新创建节点json,因此可以将其放在gitignore上。但节点json文件用于对现有服务器进行更新,如添加新角色/配方。。正当在这种情况下,如果没有节点json文件,是否需要再次引导?如果是这样的话,在已经启动的节点上这样做可以吗?对不起,我做了一个假设,可能有一个假设太远了,您使用的是ChefZero的ChefServer吗?如果是前者,则不应关心节点json文件,只需定期备份ChefServer即可。对于后者,您应该将引导所需的所有基本要素保存在作为引导选项传递的单独文件中-j.Yes am using chefzero。对不起,我忘了在这个问题上提那件事。谢谢,你可以考虑某种加密的Git,比如Keybase,也许我不确定它有多安全。这可能与使用ChefVault一样好,您必须以某种方式传递/传输/存储私钥。或者干脆避开公共git托管服务?本案中没有银弹。请看一下keybase。非常感谢。