|
@@ -3,6 +3,7 @@
|
|
import json
|
|
import json
|
|
import urllib2
|
|
import urllib2
|
|
import sys
|
|
import sys
|
|
|
|
+import re
|
|
|
|
|
|
URL = 'http://169.254.169.254/latest/user-data'
|
|
URL = 'http://169.254.169.254/latest/user-data'
|
|
|
|
|
|
@@ -12,6 +13,31 @@ except:
|
|
print >> sys.stderr, 'Was not able to connect to the Amazon API'
|
|
print >> sys.stderr, 'Was not able to connect to the Amazon API'
|
|
sys.exit(2)
|
|
sys.exit(2)
|
|
|
|
|
|
-if data['consul_master'] == '127.0.0.1'
|
|
|
|
- print 'i am the master'
|
|
|
|
|
|
+# Python doesn't like a list of 1
|
|
|
|
+tags = []
|
|
|
|
+tags.append(data['role'])
|
|
|
|
|
|
|
|
+consul_settings = {
|
|
|
|
+ 'data_dir': '/opt/consul/data',
|
|
|
|
+ 'client_addr': '0.0.0.0',
|
|
|
|
+ 'datacenter': data['domain'],
|
|
|
|
+ 'domain': data['domain'],
|
|
|
|
+ 'log_level': "INFO",
|
|
|
|
+ 'services': [
|
|
|
|
+ { 'name': data['role'], 'tags': tags, 'checks': [{'script': '/bin/true', 'interval': '2s'}] }
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+if data['consul_master'] == '127.0.0.1':
|
|
|
|
+ consul_settings['bootstrap_expect'] = 1
|
|
|
|
+else:
|
|
|
|
+ consul_settings['retry_join'] = data['consul_master']
|
|
|
|
+
|
|
|
|
+if re.match('amitest', data['role']) is not None:
|
|
|
|
+ consul_settings['server'] = True
|
|
|
|
+ consul_settings['ui_dir'] = "/opt/consul/ui"
|
|
|
|
+
|
|
|
|
+main_config = open("/opt/consul/etc/config.json", "w")
|
|
|
|
+main_config.write(json.dumps(consul_settings))
|
|
|
|
+main_config.close()
|