Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2af3235

Browse files
committed
RemoteNode
1 parent73916d4 commit2af3235

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

‎testeaux/RemoteNode.pm

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
packageRemoteNode;
2+
3+
use strict;
4+
use warnings;
5+
use Net::OpenSSH;
6+
7+
subnew
8+
{
9+
my ($class,$name,$sshopts) =@_;
10+
11+
my$self = {
12+
_port=>$sshopts->{Port},
13+
_host=>$sshopts->{HostName},
14+
_user=>$sshopts->{User},
15+
_keypath=>$sshopts->{IdentityFile} =~/"([^"]*)"/,
16+
_pgdata=>"/home/$sshopts->{User}/pg_cluster/data_5432",
17+
_pgbin=>"/home/$sshopts->{User}/pg_cluster/install/bin",
18+
};
19+
20+
bless$self,$class;
21+
22+
# kill postgres here to ensure
23+
# predictable initial state.
24+
$self->execute("pkill -9 postgres || true");
25+
26+
return$self;
27+
}
28+
29+
subexecute
30+
{
31+
my ($self,$cmd) =@_;
32+
33+
# XXX: reuse connection
34+
my$ssh = Net::OpenSSH->new(
35+
host=>$self->{_host},
36+
port=>$self->{_port},
37+
user=>$self->{_user},
38+
key_path=>$self->{_keypath},
39+
master_opts=> [-o=>"StrictHostKeyChecking=no"]
40+
);
41+
42+
print"# running\"$cmd\":\n";
43+
44+
my$output =$ssh->capture($cmd);
45+
46+
$ssh->errorand
47+
warn"operation didn't complete successfully:".$ssh->error;
48+
49+
# XXX: tab and colorize output
50+
print$output;
51+
print"---\n";
52+
53+
return$?;
54+
}
55+
56+
subinit
57+
{
58+
my ($self,%params) =@_;
59+
my$pgbin =$self->{_pgbin};
60+
my$pgdata =$self->{_pgdata};
61+
62+
$self->execute("rm -rf$pgdata");
63+
$self->execute("env LANG=C LC_ALL=C$pgbin/initdb -D$pgdata -A trust -N");
64+
65+
$self->execute("echo 'fsync = off' >>$pgdata/postgresql.conf");
66+
$self->execute("echo 'host all all 0.0.0.0/0 trust' >>$pgdata/pg_hba.conf");
67+
}
68+
69+
substart
70+
{
71+
my ($self) =@_;
72+
my$pgbin =$self->{_pgbin};
73+
my$pgdata =$self->{_pgdata};
74+
75+
$self->execute("$pgbin/pg_ctl -w -D$pgdata -l$pgdata/log start");
76+
}
77+
78+
substop
79+
{
80+
my ($self,$mode) =@_;
81+
my$pgbin =$self->{_pgbin};
82+
my$pgdata =$self->{_pgdata};
83+
84+
$self->execute("$pgbin/pg_ctl -w -D$pgdata -m$mode stop");
85+
}
86+
87+
subrestart
88+
{
89+
my ($self) =@_;
90+
my$pgbin =$self->{_pgbin};
91+
my$pgdata =$self->{_pgdata};
92+
93+
$self->execute("$pgbin/pg_ctl -w -D$pgdata restart");
94+
}
95+
96+
subappend_conf
97+
{
98+
99+
}
100+
101+
subpsql
102+
{
103+
104+
}
105+
106+
# XXX: test
107+
my$node = new RemoteNode('node0', {
108+
'Port'=>'2200',
109+
'IdentityFile'=>'"/Users/stas/code/postgres_cluster/contrib/mmts/testeaux/.vagrant/machines/node1/virtualbox/private_key"',
110+
'IdentitiesOnly'=>'yes',
111+
'LogLevel'=>'FATAL',
112+
'PasswordAuthentication'=>'no',
113+
'StrictHostKeyChecking'=>'no',
114+
'HostName'=>'127.0.0.1',
115+
'User'=>'vagrant',
116+
'UserKnownHostsFile'=>'/dev/null'
117+
});
118+
119+
$node->execute("ls -ls");
120+
$node->init;
121+
$node->start;
122+
123+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp