将节点和客户端文件夹添加到 Chef 服务器模板是好习惯吗
is it good practice to add nodes and client folder to chef server template
我还在学习厨师。我已经 bootstrapped 并将我的服务器模板上传到远程存储库。但是我想知道将 nodes
目录添加到 remote
存储库是否安全,因为它包含确切的服务器 passwords
这是一个示例节点
{
"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" : "$mMK9HNoN$r42n7Q8fKsZabbknlT1Zt1"
}
},
"run_list":
[
"role[server]",
"role[nginx-server]",
"role[postgres-server]",
"role[rails-app]",
"role[redis-server]",
]
}
因为密码是可见的,这样添加安全吗?
如果它应该在 gitignore 中,那么在稍后阶段,如果我们从远程仓库克隆,那么我们需要 bootstrap 从头开始服务器,因为不存在节点目录,对吗?
有没有更好的方法或者我在这里遗漏了什么?
您不需要将节点 json 文件复制到 bootstrap 节点。安全数据应来自 Chef Vault/Hashicorp Vault/any 其他安全存储。非机密数据可以是 recipe/wrapper recipe/role/environment/etc 的一部分,可以存储在存储库中。如果你真的有特定于单个节点的数据,你可以在 bootstrap 过程中使用 -j
传递它们。
我还在学习厨师。我已经 bootstrapped 并将我的服务器模板上传到远程存储库。但是我想知道将 nodes
目录添加到 remote
存储库是否安全,因为它包含确切的服务器 passwords
这是一个示例节点
{
"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" : "$mMK9HNoN$r42n7Q8fKsZabbknlT1Zt1"
}
},
"run_list":
[
"role[server]",
"role[nginx-server]",
"role[postgres-server]",
"role[rails-app]",
"role[redis-server]",
]
}
因为密码是可见的,这样添加安全吗?
如果它应该在 gitignore 中,那么在稍后阶段,如果我们从远程仓库克隆,那么我们需要 bootstrap 从头开始服务器,因为不存在节点目录,对吗?
有没有更好的方法或者我在这里遗漏了什么?
您不需要将节点 json 文件复制到 bootstrap 节点。安全数据应来自 Chef Vault/Hashicorp Vault/any 其他安全存储。非机密数据可以是 recipe/wrapper recipe/role/environment/etc 的一部分,可以存储在存储库中。如果你真的有特定于单个节点的数据,你可以在 bootstrap 过程中使用 -j
传递它们。