Skip to content

Commit 910970b

Browse files
committed
fixed env
1 parent 1931a9f commit 910970b

File tree

8 files changed

+314
-10
lines changed

8 files changed

+314
-10
lines changed

demo/redis-cluster.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from netkiller.docker import *
2+
3+
image = 'redis:latest'
4+
requirepass='11223344'
5+
6+
compose = Composes('redis-master-slave')
7+
compose.version('3.9')
8+
9+
# master = Services('master')
10+
# master.image(image)
11+
# master.container_name('master')
12+
# master.restart('always')
13+
# master.environment(['TZ=Asia/Shanghai'])
14+
# master.ports('6379:6379')
15+
# master.volumes(['/tmp/master:/data'])
16+
# master.sysctls(['net.core.somaxconn=1024'])
17+
# master.command([
18+
# '--requirepass '+requirepass,
19+
# '--appendonly yes'])
20+
# # master.debug()
21+
# # print(master.dump())
22+
# compose.services(master)
23+
24+
25+
for i in range(5) :
26+
slave = Services('slave-'+str(i))
27+
slave.image(image).container_name('slave-'+str(i)).restart('always')
28+
slave.ports(['638{port}:6379'.format(port=i)]).environment(['TZ=Asia/Shanghai'])
29+
slave.volumes(['/tmp/slave{n}:/data'.format(n=i)])
30+
slave.sysctls(['net.core.somaxconn=1024']).command([
31+
'--port 6379',
32+
'--cluster-enabled yes',
33+
# cluster-config-file nodes-6371.conf
34+
'cluster-node-timeout 5000'
35+
'--appendonly yes'
36+
'protected-mode no',
37+
'--masterauth '+requirepass,
38+
'--requirepass ' + requirepass,
39+
'cluster-announce-ip 10.12.12.10',
40+
# 这里是宿主机IP
41+
'cluster-announce-port 6371',
42+
'cluster-announce-bus-port 16371'
43+
])
44+
45+
# print(cluster.dump())
46+
compose.services(slave)
47+
48+
# print (compose.debug())
49+
print(compose.dump())
50+
# compose.save()
51+
compose.up()
52+
53+
# compose.save('/tmp/docker-compost.yaml')

demo/redis.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import os,sys
2+
3+
module = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
4+
print(module)
5+
sys.path.insert(0,module)
6+
7+
from netkiller.docker import *
8+
9+
image = 'redis:latest'
10+
requirepass='11223344'
11+
environment=['TZ=Asia/Shanghai']
12+
13+
compose = Composes('redis-master-slave')
14+
compose.version('3.9')
15+
16+
master = Services('master')
17+
master.image(image)
18+
master.container_name('master')
19+
master.restart('always')
20+
master.environment(environment)
21+
master.ports('6379:6379')
22+
master.volumes(['/tmp/master:/data'])
23+
master.sysctls(['net.core.somaxconn=1024'])
24+
master.command([
25+
'--requirepass '+requirepass,
26+
'--appendonly yes'])
27+
# master.debug()
28+
# print(master.dump())
29+
compose.services(master)
30+
31+
32+
for i in range(5) :
33+
slave = Services('slave-'+str(i))
34+
slave.image(image).container_name('slave-'+str(i)).restart('always')
35+
slave.ports(['638{port}:6379'.format(port=i)]).environment(environment)
36+
slave.volumes(['/tmp/slave{n}:/data'.format(n=i)])
37+
slave.sysctls(['net.core.somaxconn=1024']).command([
38+
'--slaveof master 6379',
39+
'--masterauth '+requirepass,
40+
'--requirepass ' + requirepass,
41+
'--appendonly yes'
42+
])
43+
44+
# print(cluster.dump())
45+
compose.services(slave)
46+
47+
# print (compose.debug())
48+
print(compose.dump())
49+
# compose.save()
50+
# compose.up()

demo/sentinel.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from netkiller.docker import *
2+
3+
image = 'redis:latest'
4+
requirepass='11223344'
5+
6+
compose = Composes('redis-master-slave')
7+
compose.version('3.9')
8+
9+
master = Services('master')
10+
master.image(image)
11+
master.container_name('master')
12+
master.restart('always')
13+
master.environment(['TZ=Asia/Shanghai'])
14+
master.ports('6379:6379')
15+
master.volumes(['/tmp/master:/data'])
16+
master.sysctls(['net.core.somaxconn=1024'])
17+
master.command([
18+
'--requirepass '+requirepass,
19+
'--appendonly yes'])
20+
# master.debug()
21+
# print(master.dump())
22+
compose.services(master)
23+
24+
25+
with open("sentinel.conf","w") as file:
26+
file.write(
27+
'''
28+
#port 6379
29+
dir /tmp
30+
sentinel monitor mymaster 172.19.0.3 6379 2
31+
sentinel down-after-milliseconds mymaster 30000
32+
sentinel parallel-syncs mymaster 1
33+
sentinel auth-pass mymaster redispwd
34+
sentinel failover-timeout mymaster 180000
35+
sentinel deny-scripts-reconfig yes
36+
'''
37+
)
38+
39+
for i in range(5) :
40+
name = 'sentinel-'+str(i)
41+
slave = Services(name)
42+
slave.image(image).container_name(name).restart('always')
43+
slave.ports(['638{port}:6379'.format(port=i)]).environment(['TZ=Asia/Shanghai'])
44+
slave.volumes(['/tmp/slave{n}:/data'.format(n=i)])
45+
slave.sysctls(['net.core.somaxconn=1024']).command([
46+
'--slaveof master 6379',
47+
'--masterauth '+requirepass,
48+
'--requirepass ' + requirepass,
49+
'--appendonly yes'
50+
])
51+
52+
# print(cluster.dump())
53+
compose.services(slave)
54+
55+
# print (compose.debug())
56+
print(compose.dump())
57+
# compose.save()
58+
compose.up()
59+
60+
# compose.save('/tmp/docker-compost.yaml')

demo/service.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from netkiller.docker import *
2+
3+
service = Services('nginx')
4+
service.image('nginx:latest')
5+
service.container_name('nginx')
6+
service.restart('always')
7+
service.hostname('www.netkiller.cn')
8+
service.extra_hosts(['db.netkiller.cn:127.0.0.1','cache.netkiller.cn:127.0.0.1','api.netkiller.cn:127.0.0.1'])
9+
service.environment(['TZ=Asia/Shanghai'])
10+
service.ports(['80:80','443:443'])
11+
service.volumes(['/tmp:/tmp'])
12+
# service.debug()
13+
print(service.dump())
14+
15+
16+
17+
for i in range(10) :
18+
cluster = Services('nginx-'+str(i))
19+
cluster.image('nginx:latest').container_name('nginx-'+str(i)).restart('always').hostname('www'+str(i)+'.netkiller.cn')
20+
cluster.ports(['8{port}:80'.format(port=i)])
21+
# print(cluster.dump())
22+
23+
24+
compose = Composes('development')
25+
compose.version('3.9')
26+
compose.services(service)
27+
# print (compose.debug())
28+
print(compose.dump())
29+
compose.save()
30+
# compose.save('/tmp/docker-compost.yaml')

netkiller/docker.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,16 @@ def hostname(self,value='localhost.localdomain'):
6161
def extra_hosts(self,array=[]):
6262
self.service[self.name]['extra_hosts'] = array
6363
return(self)
64-
def environment(self, array):
64+
def environment(self, obj):
65+
print(obj,type(obj))
6566
if not 'environment' in self.service[self.name].keys() :
6667
self.service[self.name]['environment']=[]
67-
if type(array) == str:
68+
if type(obj) == str:
6869
self.service[self.name]['environment'].append(obj)
70+
elif type(obj) == list:
71+
self.service[self.name]['environment'].extend(obj)
6972
else:
70-
self.service[self.name]['environment'] = array
73+
self.service[self.name]['environment'] = obj
7174
return(self)
7275
def env_file(self, array=[]):
7376
self.service[self.name]['env_file'] = array
@@ -77,6 +80,8 @@ def ports(self, obj):
7780
self.service[self.name]['ports']=[]
7881
if type(obj) == str:
7982
self.service[self.name]['ports'].append(obj)
83+
elif type(obj) == list:
84+
self.service[self.name]['ports'].extend(obj)
8085
else:
8186
self.service[self.name]['ports'] = obj
8287
return(self)
@@ -85,6 +90,8 @@ def expose(self, obj):
8590
self.service[self.name]['expose']=[]
8691
if type(obj) == str:
8792
self.service[self.name]['expose'].append(obj)
93+
elif type(obj) == list:
94+
self.service[self.name]['expose'].extend(obj)
8895
else:
8996
self.service[self.name]['expose'] = obj
9097
return(self)
@@ -113,6 +120,8 @@ def depends_on(self, obj):
113120
self.service[self.name]['depends_on'].append(obj.name)
114121
elif type(obj) == str:
115122
self.service[self.name]['depends_on'].append(obj)
123+
elif type(obj) == list:
124+
self.service[self.name]['depends_on'].extend(obj)
116125
else:
117126
self.service[self.name]['depends_on'] = obj
118127
return(self)
@@ -121,6 +130,8 @@ def links(self, obj):
121130
self.service[self.name]['links'].append(obj.name)
122131
elif type(obj) == str:
123132
self.service[self.name]['links'].append(obj)
133+
elif type(obj) == list:
134+
self.service[self.name]['links'].extend(obj)
124135
else:
125136
self.service[self.name]['links'] = obj
126137
return(self)

redis-master-slave.yaml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
services:
2+
master:
3+
command:
4+
- --requirepass 11223344
5+
- --appendonly yes
6+
container_name: master
7+
environment:
8+
- TZ=Asia/Shanghai
9+
image: redis:latest
10+
ports:
11+
- 6379:6379
12+
restart: always
13+
sysctls:
14+
- net.core.somaxconn=1024
15+
volumes:
16+
- /tmp/master:/data
17+
slave-0:
18+
command:
19+
- --slaveof master 6379
20+
- --masterauth 11223344
21+
- --requirepass 11223344
22+
- --appendonly yes
23+
container_name: slave-0
24+
environment:
25+
- TZ=Asia/Shanghai
26+
image: redis:latest
27+
ports:
28+
- 6380:6379
29+
restart: always
30+
sysctls:
31+
- net.core.somaxconn=1024
32+
volumes:
33+
- /tmp/slave0:/data
34+
slave-1:
35+
command:
36+
- --slaveof master 6379
37+
- --masterauth 11223344
38+
- --requirepass 11223344
39+
- --appendonly yes
40+
container_name: slave-1
41+
environment:
42+
- TZ=Asia/Shanghai
43+
image: redis:latest
44+
ports:
45+
- 6381:6379
46+
restart: always
47+
sysctls:
48+
- net.core.somaxconn=1024
49+
volumes:
50+
- /tmp/slave1:/data
51+
slave-2:
52+
command:
53+
- --slaveof master 6379
54+
- --masterauth 11223344
55+
- --requirepass 11223344
56+
- --appendonly yes
57+
container_name: slave-2
58+
environment:
59+
- TZ=Asia/Shanghai
60+
image: redis:latest
61+
ports:
62+
- 6382:6379
63+
restart: always
64+
sysctls:
65+
- net.core.somaxconn=1024
66+
volumes:
67+
- /tmp/slave2:/data
68+
slave-3:
69+
command:
70+
- --slaveof master 6379
71+
- --masterauth 11223344
72+
- --requirepass 11223344
73+
- --appendonly yes
74+
container_name: slave-3
75+
environment:
76+
- TZ=Asia/Shanghai
77+
image: redis:latest
78+
ports:
79+
- 6383:6379
80+
restart: always
81+
sysctls:
82+
- net.core.somaxconn=1024
83+
volumes:
84+
- /tmp/slave3:/data
85+
slave-4:
86+
command:
87+
- --slaveof master 6379
88+
- --masterauth 11223344
89+
- --requirepass 11223344
90+
- --appendonly yes
91+
container_name: slave-4
92+
environment:
93+
- TZ=Asia/Shanghai
94+
image: redis:latest
95+
ports:
96+
- 6384:6379
97+
restart: always
98+
sysctls:
99+
- net.core.somaxconn=1024
100+
volumes:
101+
- /tmp/slave4:/data
102+
version: '3.9'

setup.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
setup(
1010
name="netkiller-devops",
11-
version="0.2.4",
11+
version="0.2.5",
1212
author="Neo Chen",
1313
author_email="[email protected]",
1414
description="DevOps of useful deployment and automation",
@@ -29,7 +29,6 @@
2929

3030
scripts=[
3131
'bin/deployment',
32-
'bin/wechat',
3332
'bin/backup',
3433
'bin/osconf',
3534
'bin/mysqlshell',
@@ -38,6 +37,7 @@
3837
'bin/lrsync',
3938
'bin/randpasswd',
4039
'bin/matrixpasswd',
40+
'bin/wechat',
4141
'bin/voice'
4242
],
4343
data_files = [
@@ -47,10 +47,8 @@
4747
('etc', ['etc/os.ini']),
4848
('etc', ['etc/notification.ini']),
4949
#('log', ['log/deployment.log']),
50-
('share', ['share/example/testing/example.com.ini']),
51-
('share', ['share/profile.d/devops.sh']),
52-
('share/devops', ['doc/wechat.md']),
53-
('share/devops', ['doc/voice.md'])
50+
('share', ['share/example/testing/example.com.ini','share/profile.d/devops.sh']),
51+
('share/devops', ['doc/wechat.md','doc/voice.md'])
5452
#('example/testing', ['example/testing/example.com.ini']),
5553
#('example/config/testing', ['example/config/testing/www.example.com.ini']),
5654
#('example/exclude/testing', ['example/exclude/testing/www.example.com.lst'])

0 commit comments

Comments
 (0)