Recommendations for editing same file on different machines
Our Rails app is scaled at multiple machines, from time to time, we need to change settings at production.yml
, right now we have to ssh into each server and do the editing at each machine individually.
What's the right way to handle this case?
synchronization settings deployment yaml
add a comment |
Our Rails app is scaled at multiple machines, from time to time, we need to change settings at production.yml
, right now we have to ssh into each server and do the editing at each machine individually.
What's the right way to handle this case?
synchronization settings deployment yaml
add a comment |
Our Rails app is scaled at multiple machines, from time to time, we need to change settings at production.yml
, right now we have to ssh into each server and do the editing at each machine individually.
What's the right way to handle this case?
synchronization settings deployment yaml
Our Rails app is scaled at multiple machines, from time to time, we need to change settings at production.yml
, right now we have to ssh into each server and do the editing at each machine individually.
What's the right way to handle this case?
synchronization settings deployment yaml
synchronization settings deployment yaml
asked Jan 29 at 14:05
simosimo
1033
1033
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Configuration management systems like Puppet and Chef are made for this exact purpose.
If you don't want to use them, you can use a script to SCP the file to the server:
while read host; do
scp -i yourKey production.yml user@$host:/destination/production.yml
# Add an ssh command here if you need to restart any services
done < hosts.txt;
currently we are not using those tools, wouldn't this approach involve full deployment cycle ? we only need this particular sync
– simo
Jan 29 at 14:12
Not necessarily, there's nothing wrong with using them to deploy files outside of the development cycle. Although they might be overkill for something small like this. I've edited my answer
– Farhan.K
Jan 29 at 14:21
thanks allot, that's what I needed
– simo
Jan 29 at 14:26
1
I would consider using one of these tools if I were you. It makes it much easier to manage multiple machines.
– Farhan.K
Jan 29 at 14:27
If there are any chances that those files will be changed by someone else after you modify them , thus causing a configuration drift , I would suggest going with @Farhan.K's suggestion as Puppet and Chef will check periodically if there has been any change to the file and if so , change it to what you define . If not , Puppet and Chef could have an overhead since they are agent based , and in this case I would strongly recommend using Ansible which is agentless and uses SSH to connect to managed hosts. You could manage one file and push it to managed hosts. good luck
– John Doe
Jan 29 at 16:20
|
show 6 more comments
Better to use rsync instead of scp. Advantages of rsync :
First, it will check whether any changes are there or not in source file when compared with file in destination. Only if there is a change then it will transfer so it will take less time and be faster when compared with scp.
while read host
do
rsync -avzh production.yml userid@$host:/destination_location/production.yml
done < hosts.txt
usingwhile read; do ... done < hosts.txt
is horrible -- same comment as here. Also @terdon.
– pizdelect
Feb 1 at 9:21
@pizdelect no, it isn't. It is the best and safest way to read lines from a file. The absolute safest iswhile IFS= read -r var; do...
, but this is not needed here. IN any case, using awhile read
loop instead of something truly awful such asfor line in $(cat file)
is both standard and the best practice recommended pretty much everywhere. Also see 1, 2, 3, 4, 5.
– terdon♦
Feb 1 at 9:42
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f497459%2frecommendations-for-editing-same-file-on-different-machines%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Configuration management systems like Puppet and Chef are made for this exact purpose.
If you don't want to use them, you can use a script to SCP the file to the server:
while read host; do
scp -i yourKey production.yml user@$host:/destination/production.yml
# Add an ssh command here if you need to restart any services
done < hosts.txt;
currently we are not using those tools, wouldn't this approach involve full deployment cycle ? we only need this particular sync
– simo
Jan 29 at 14:12
Not necessarily, there's nothing wrong with using them to deploy files outside of the development cycle. Although they might be overkill for something small like this. I've edited my answer
– Farhan.K
Jan 29 at 14:21
thanks allot, that's what I needed
– simo
Jan 29 at 14:26
1
I would consider using one of these tools if I were you. It makes it much easier to manage multiple machines.
– Farhan.K
Jan 29 at 14:27
If there are any chances that those files will be changed by someone else after you modify them , thus causing a configuration drift , I would suggest going with @Farhan.K's suggestion as Puppet and Chef will check periodically if there has been any change to the file and if so , change it to what you define . If not , Puppet and Chef could have an overhead since they are agent based , and in this case I would strongly recommend using Ansible which is agentless and uses SSH to connect to managed hosts. You could manage one file and push it to managed hosts. good luck
– John Doe
Jan 29 at 16:20
|
show 6 more comments
Configuration management systems like Puppet and Chef are made for this exact purpose.
If you don't want to use them, you can use a script to SCP the file to the server:
while read host; do
scp -i yourKey production.yml user@$host:/destination/production.yml
# Add an ssh command here if you need to restart any services
done < hosts.txt;
currently we are not using those tools, wouldn't this approach involve full deployment cycle ? we only need this particular sync
– simo
Jan 29 at 14:12
Not necessarily, there's nothing wrong with using them to deploy files outside of the development cycle. Although they might be overkill for something small like this. I've edited my answer
– Farhan.K
Jan 29 at 14:21
thanks allot, that's what I needed
– simo
Jan 29 at 14:26
1
I would consider using one of these tools if I were you. It makes it much easier to manage multiple machines.
– Farhan.K
Jan 29 at 14:27
If there are any chances that those files will be changed by someone else after you modify them , thus causing a configuration drift , I would suggest going with @Farhan.K's suggestion as Puppet and Chef will check periodically if there has been any change to the file and if so , change it to what you define . If not , Puppet and Chef could have an overhead since they are agent based , and in this case I would strongly recommend using Ansible which is agentless and uses SSH to connect to managed hosts. You could manage one file and push it to managed hosts. good luck
– John Doe
Jan 29 at 16:20
|
show 6 more comments
Configuration management systems like Puppet and Chef are made for this exact purpose.
If you don't want to use them, you can use a script to SCP the file to the server:
while read host; do
scp -i yourKey production.yml user@$host:/destination/production.yml
# Add an ssh command here if you need to restart any services
done < hosts.txt;
Configuration management systems like Puppet and Chef are made for this exact purpose.
If you don't want to use them, you can use a script to SCP the file to the server:
while read host; do
scp -i yourKey production.yml user@$host:/destination/production.yml
# Add an ssh command here if you need to restart any services
done < hosts.txt;
edited Jan 29 at 16:27
terdon♦
130k32255433
130k32255433
answered Jan 29 at 14:07
Farhan.KFarhan.K
1243
1243
currently we are not using those tools, wouldn't this approach involve full deployment cycle ? we only need this particular sync
– simo
Jan 29 at 14:12
Not necessarily, there's nothing wrong with using them to deploy files outside of the development cycle. Although they might be overkill for something small like this. I've edited my answer
– Farhan.K
Jan 29 at 14:21
thanks allot, that's what I needed
– simo
Jan 29 at 14:26
1
I would consider using one of these tools if I were you. It makes it much easier to manage multiple machines.
– Farhan.K
Jan 29 at 14:27
If there are any chances that those files will be changed by someone else after you modify them , thus causing a configuration drift , I would suggest going with @Farhan.K's suggestion as Puppet and Chef will check periodically if there has been any change to the file and if so , change it to what you define . If not , Puppet and Chef could have an overhead since they are agent based , and in this case I would strongly recommend using Ansible which is agentless and uses SSH to connect to managed hosts. You could manage one file and push it to managed hosts. good luck
– John Doe
Jan 29 at 16:20
|
show 6 more comments
currently we are not using those tools, wouldn't this approach involve full deployment cycle ? we only need this particular sync
– simo
Jan 29 at 14:12
Not necessarily, there's nothing wrong with using them to deploy files outside of the development cycle. Although they might be overkill for something small like this. I've edited my answer
– Farhan.K
Jan 29 at 14:21
thanks allot, that's what I needed
– simo
Jan 29 at 14:26
1
I would consider using one of these tools if I were you. It makes it much easier to manage multiple machines.
– Farhan.K
Jan 29 at 14:27
If there are any chances that those files will be changed by someone else after you modify them , thus causing a configuration drift , I would suggest going with @Farhan.K's suggestion as Puppet and Chef will check periodically if there has been any change to the file and if so , change it to what you define . If not , Puppet and Chef could have an overhead since they are agent based , and in this case I would strongly recommend using Ansible which is agentless and uses SSH to connect to managed hosts. You could manage one file and push it to managed hosts. good luck
– John Doe
Jan 29 at 16:20
currently we are not using those tools, wouldn't this approach involve full deployment cycle ? we only need this particular sync
– simo
Jan 29 at 14:12
currently we are not using those tools, wouldn't this approach involve full deployment cycle ? we only need this particular sync
– simo
Jan 29 at 14:12
Not necessarily, there's nothing wrong with using them to deploy files outside of the development cycle. Although they might be overkill for something small like this. I've edited my answer
– Farhan.K
Jan 29 at 14:21
Not necessarily, there's nothing wrong with using them to deploy files outside of the development cycle. Although they might be overkill for something small like this. I've edited my answer
– Farhan.K
Jan 29 at 14:21
thanks allot, that's what I needed
– simo
Jan 29 at 14:26
thanks allot, that's what I needed
– simo
Jan 29 at 14:26
1
1
I would consider using one of these tools if I were you. It makes it much easier to manage multiple machines.
– Farhan.K
Jan 29 at 14:27
I would consider using one of these tools if I were you. It makes it much easier to manage multiple machines.
– Farhan.K
Jan 29 at 14:27
If there are any chances that those files will be changed by someone else after you modify them , thus causing a configuration drift , I would suggest going with @Farhan.K's suggestion as Puppet and Chef will check periodically if there has been any change to the file and if so , change it to what you define . If not , Puppet and Chef could have an overhead since they are agent based , and in this case I would strongly recommend using Ansible which is agentless and uses SSH to connect to managed hosts. You could manage one file and push it to managed hosts. good luck
– John Doe
Jan 29 at 16:20
If there are any chances that those files will be changed by someone else after you modify them , thus causing a configuration drift , I would suggest going with @Farhan.K's suggestion as Puppet and Chef will check periodically if there has been any change to the file and if so , change it to what you define . If not , Puppet and Chef could have an overhead since they are agent based , and in this case I would strongly recommend using Ansible which is agentless and uses SSH to connect to managed hosts. You could manage one file and push it to managed hosts. good luck
– John Doe
Jan 29 at 16:20
|
show 6 more comments
Better to use rsync instead of scp. Advantages of rsync :
First, it will check whether any changes are there or not in source file when compared with file in destination. Only if there is a change then it will transfer so it will take less time and be faster when compared with scp.
while read host
do
rsync -avzh production.yml userid@$host:/destination_location/production.yml
done < hosts.txt
usingwhile read; do ... done < hosts.txt
is horrible -- same comment as here. Also @terdon.
– pizdelect
Feb 1 at 9:21
@pizdelect no, it isn't. It is the best and safest way to read lines from a file. The absolute safest iswhile IFS= read -r var; do...
, but this is not needed here. IN any case, using awhile read
loop instead of something truly awful such asfor line in $(cat file)
is both standard and the best practice recommended pretty much everywhere. Also see 1, 2, 3, 4, 5.
– terdon♦
Feb 1 at 9:42
add a comment |
Better to use rsync instead of scp. Advantages of rsync :
First, it will check whether any changes are there or not in source file when compared with file in destination. Only if there is a change then it will transfer so it will take less time and be faster when compared with scp.
while read host
do
rsync -avzh production.yml userid@$host:/destination_location/production.yml
done < hosts.txt
usingwhile read; do ... done < hosts.txt
is horrible -- same comment as here. Also @terdon.
– pizdelect
Feb 1 at 9:21
@pizdelect no, it isn't. It is the best and safest way to read lines from a file. The absolute safest iswhile IFS= read -r var; do...
, but this is not needed here. IN any case, using awhile read
loop instead of something truly awful such asfor line in $(cat file)
is both standard and the best practice recommended pretty much everywhere. Also see 1, 2, 3, 4, 5.
– terdon♦
Feb 1 at 9:42
add a comment |
Better to use rsync instead of scp. Advantages of rsync :
First, it will check whether any changes are there or not in source file when compared with file in destination. Only if there is a change then it will transfer so it will take less time and be faster when compared with scp.
while read host
do
rsync -avzh production.yml userid@$host:/destination_location/production.yml
done < hosts.txt
Better to use rsync instead of scp. Advantages of rsync :
First, it will check whether any changes are there or not in source file when compared with file in destination. Only if there is a change then it will transfer so it will take less time and be faster when compared with scp.
while read host
do
rsync -avzh production.yml userid@$host:/destination_location/production.yml
done < hosts.txt
edited Jan 29 at 16:26
terdon♦
130k32255433
130k32255433
answered Jan 29 at 15:41
Praveen Kumar BSPraveen Kumar BS
1,464138
1,464138
usingwhile read; do ... done < hosts.txt
is horrible -- same comment as here. Also @terdon.
– pizdelect
Feb 1 at 9:21
@pizdelect no, it isn't. It is the best and safest way to read lines from a file. The absolute safest iswhile IFS= read -r var; do...
, but this is not needed here. IN any case, using awhile read
loop instead of something truly awful such asfor line in $(cat file)
is both standard and the best practice recommended pretty much everywhere. Also see 1, 2, 3, 4, 5.
– terdon♦
Feb 1 at 9:42
add a comment |
usingwhile read; do ... done < hosts.txt
is horrible -- same comment as here. Also @terdon.
– pizdelect
Feb 1 at 9:21
@pizdelect no, it isn't. It is the best and safest way to read lines from a file. The absolute safest iswhile IFS= read -r var; do...
, but this is not needed here. IN any case, using awhile read
loop instead of something truly awful such asfor line in $(cat file)
is both standard and the best practice recommended pretty much everywhere. Also see 1, 2, 3, 4, 5.
– terdon♦
Feb 1 at 9:42
using
while read; do ... done < hosts.txt
is horrible -- same comment as here. Also @terdon.– pizdelect
Feb 1 at 9:21
using
while read; do ... done < hosts.txt
is horrible -- same comment as here. Also @terdon.– pizdelect
Feb 1 at 9:21
@pizdelect no, it isn't. It is the best and safest way to read lines from a file. The absolute safest is
while IFS= read -r var; do...
, but this is not needed here. IN any case, using a while read
loop instead of something truly awful such as for line in $(cat file)
is both standard and the best practice recommended pretty much everywhere. Also see 1, 2, 3, 4, 5.– terdon♦
Feb 1 at 9:42
@pizdelect no, it isn't. It is the best and safest way to read lines from a file. The absolute safest is
while IFS= read -r var; do...
, but this is not needed here. IN any case, using a while read
loop instead of something truly awful such as for line in $(cat file)
is both standard and the best practice recommended pretty much everywhere. Also see 1, 2, 3, 4, 5.– terdon♦
Feb 1 at 9:42
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f497459%2frecommendations-for-editing-same-file-on-different-machines%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown