Guest User

Untitled

a guest
Oct 21st, 2022
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. import parseopt
  2. import shell
  3. import std/rdstdin
  4. import strformat
  5. import strutils, typetraits
  6.  
  7.  
  8. from os import fileExists
  9.  
  10. proc writeHelp() =
  11. echo """
  12. Usage of builder:
  13. --help : show this help message
  14. -- single : Single Process
  15. -- seperate : Seperate service
  16. -- config : Config only
  17. """
  18.  
  19.  
  20. proc singleinstance() =
  21. if bool fileExists("/etc/redhat-release"):
  22. echo "Supported OS!"
  23. shell:
  24. sudo r"yum install -y yum-utils sudo -y"
  25. sudo r"yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo"
  26. sudo r"yum install -y clickhouse-server clickhouse-client -y"
  27. sudo r"mkdir -p /etc/clickhouse-keeper/"
  28.  
  29.  
  30.  
  31.  
  32. proc configonly() =
  33. echo "Creating /etc/clickhouse-server/config.d/custom.xml"
  34. echo "Creating ddlworker.xml"
  35. echo "Creating macros.xml"
  36. echo "Creating remote_servers.xml"
  37. echo "Creating keeper.xml"
  38. stdout.write "enter cluster id: "
  39. let clusterid = stdin.readline.parseBiggestUInt
  40. var ffqdn: string = readLineFromStdin("Enter first dns server:")
  41. var sfqdn: string = readLineFromStdin("Enter second dns server:")
  42. echo "Your cluster id is ", clusterid
  43. if clusterid == 1:
  44.  
  45. "/etc/clickhouse-server/config.d/macros.xml".writefile(fmt"""<clickhouse>
  46. <distributed_ddl>
  47. <path>/clickhouse/task_queue/ddl</path>
  48. </distributed_ddl>
  49. <macros>
  50. <cluster>hepic</cluster>
  51. <shard>1</shard>
  52. <replica>{ffqdn}</replica>
  53. </macros>
  54. </clickhouse>
  55. """)
  56.  
  57. "/etc/clickhouse-server/config.d/keeper.xml".writefile(fmt"""<?xml version="1.0"?>
  58. <clickhouse>
  59. <zookeeper>
  60. <node index="1">
  61. <host>{ffqdn}</host>
  62. <port>9181</port>
  63. </node>
  64. <node index="2">
  65. <host>{sfqdn}</host>
  66. <port>9181</port>
  67. </node>
  68. <session_timeout_ms>3000</session_timeout_ms>
  69. </zookeeper>
  70. </clickhouse>
  71. """)
  72. elif clusterid == 2:
  73. "/etc/clickhouse-server/config.d/macros.xml".writefile(fmt"""<clickhouse>
  74. <distributed_ddl>
  75. <path>/clickhouse/task_queue/ddl</path>
  76. </distributed_ddl>
  77. <macros>
  78. <cluster>hepic</cluster>
  79. <shard>1</shard>
  80. <replica>{sfqdn}</replica>
  81. </macros>
  82. </clickhouse>
  83. """)
  84.  
  85. "/etc/clickhouse-server/config.d/keeper.xml".writefile(fmt"""<?xml version="1.0"?>
  86. <clickhouse>
  87. <zookeeper>
  88. <node index="1">
  89. <host>{ffqdn}</host>
  90. <port>9181</port>
  91. </node>
  92. <node index="2">
  93. <host>{sfqdn}</host>
  94. <port>9181</port>
  95. </node>
  96. <session_timeout_ms>3000</session_timeout_ms>
  97. </zookeeper>
  98. </clickhouse>
  99. """)
  100.  
  101. "/etc/clickhouse-server/config.d/ddlworker.xml".writefile("""<?xml version="1.0"?>
  102. <clickhouse>
  103. <distributed_ddl>
  104. <path>/clickhouse/task_queue/ddl</path>
  105. </distributed_ddl>
  106. </clickhouse>
  107. """)
  108.  
  109. "/etc/clickhouse-server/config.d/custom.xml".writefile("""<yandex>
  110. <listen_host>0.0.0.0</listen_host>
  111. <logger>
  112. <level>warning</level>
  113. <console>true</console>
  114. </logger>
  115. <query_thread_log remove="remove"/>
  116. <query_log remove="remove"/>
  117. <text_log remove="remove"/>
  118. <trace_log remove="remove"/>
  119. <metric_log remove="remove"/>
  120. <asynchronous_metric_log remove="remove"/>
  121.  
  122. <!-- Update: Required for newer versions of Clickhouse -->
  123. <session_log remove="remove"/>
  124. <part_log remove="remove"/>
  125. <path>/var/lib/clickhouse/</path>
  126. <metadata_path>/var/lib/clickhouse/disks/blob_storage_disk/</metadata_path>
  127. <cache_path>/var/lib/clickhouse/disks/blob_storage_disk/cache/</cache_path>
  128. <tmp_path>/var/lib/clickhouse/tmp/</tmp_path>
  129. <user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
  130. <path>/var/lib/clickhouse/access/</path>
  131. <format_schema_path>/var/lib/clickhouse/format_schemas/</format_schema_path>
  132. <max_table_size_to_drop>0</max_table_size_to_drop>
  133. <max_partition_size_to_drop>0</max_partition_size_to_drop>
  134. </yandex>""")
  135.  
  136.  
  137.  
  138.  
  139. proc cli*() =
  140. for kind, key, val in getopt():
  141. case kind
  142. of cmdLongOption, cmdShortOption:
  143. case key
  144. of "help", "h":
  145. writeHelp()
  146. quit()
  147. of "single", "s":
  148. singleinstance()
  149. quit()
  150. of "seperate", "se":
  151. quit()
  152. of "config", "co":
  153. configonly()
  154. quit()
  155. else:
  156. discard
  157. else:
  158. discard
  159.  
  160.  
  161. cli()
  162.  
Add Comment
Please, Sign In to add comment