nodes.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. ---
  2. - hosts: nodes
  3. become: yes
  4. become_user: root
  5. become_method: sudo
  6. gather_facts: yes
  7. vars:
  8. raft_repo: "https://github.com/yossigo/redisraft"
  9. raft_branch: "cluster"
  10. deb_packages:
  11. - build-essential
  12. - autoconf
  13. - cmake
  14. - automake
  15. - libbsd-dev
  16. - libltdl-dev
  17. - libltdl7
  18. - libtool
  19. - libevent-openssl-2.1-6
  20. - libpcre3-dev
  21. - libevent-dev
  22. - pkg-config
  23. - zlib1g-dev
  24. - libssl-dev
  25. redis_ports:
  26. - {"port": 19901, "start-hslot": 0, "end-hslot": 5460}
  27. - {"port": 19902, "start-hslot": 5461, "end-hslot": 10921}
  28. - {"port": 19903, "start-hslot": 10922, "end-hslot": 16383}
  29. handlers:
  30. - name: reload_redis_services
  31. command: systemctl daemon-reload
  32. - name: restart_redis_services
  33. systemd:
  34. name: "redis-{{ item['port'] }}"
  35. state: restarted
  36. with_items: "{{ redis_ports }}"
  37. pre_tasks:
  38. - name: Update Apt Cache
  39. apt: update_cache=yes cache_valid_time=86400
  40. when: ansible_os_family == "Debian"
  41. - name: Ubuntu Packages
  42. package:
  43. name: "{{ deb_packages }}"
  44. - name: Set to Realistic Hostname
  45. hostname:
  46. name: "cpredisnode-{{ ansible_default_ipv4.address | replace('.', '-') }}"
  47. - name: Setup Hostsfile
  48. lineinfile:
  49. dest: /etc/hosts
  50. regexp: '^127\.0\.0\.1[ \t]+localhost'
  51. line: "127.0.0.1 localhost cpredisnode-{{ansible_default_ipv4.address | replace('.','-')}}"
  52. state: present
  53. tasks:
  54. - name: load vars
  55. include_vars: default.yaml
  56. tags:
  57. - cluster
  58. - name: create redis user
  59. user:
  60. name: redis
  61. uid: 4001
  62. shell: /bin/bash
  63. state: present
  64. - name: raft - clone the github repo
  65. git:
  66. repo: "{{raft_repo}}"
  67. dest: /home/redis/redisraft
  68. version: "{{raft_branch}}"
  69. recursive: yes
  70. update: yes
  71. force: yes
  72. notify:
  73. - restart_redis_services
  74. - name: raft - make
  75. make:
  76. chdir: /home/redis/redisraft
  77. - name: create raft directories
  78. file:
  79. path: /redis/persistant/cpredis
  80. owner: redis
  81. group: redis
  82. mode: '0755'
  83. state: directory
  84. - name: create raft directories
  85. file:
  86. path: /var/log/cpredis
  87. owner: redis
  88. group: redis
  89. mode: '0755'
  90. state: directory
  91. - name: checkout redis git repo
  92. git:
  93. repo: 'https://github.com/antirez/redis'
  94. dest: /home/redis/redis
  95. - name: redis - Build the default target
  96. make:
  97. chdir: /home/redis/redis
  98. - name: redis - Run 'install' target as root
  99. make:
  100. chdir: /home/redis/redis
  101. target: install
  102. become: yes
  103. - name: Redis Systemd
  104. template:
  105. src: systemd_redis.j2
  106. dest: /lib/systemd/system/redis-{{ item['port'] }}.service
  107. owner: root
  108. group: root
  109. mode: 0644
  110. with_items: "{{ redis_ports }}"
  111. notify:
  112. - reload_redis_services
  113. - restart_redis_services
  114. - name: Cluster Setup Script
  115. template:
  116. src: setup_raft_cluster.j2
  117. dest: /usr/local/bin/setup-raft-cluster
  118. owner: redis
  119. group: redis
  120. mode: 0755
  121. tags:
  122. - cluster
  123. - name: Enable Redis Services
  124. systemd:
  125. name: redis-{{ item['port'] }}
  126. enabled: yes
  127. state: started
  128. with_items: "{{ redis_ports }}"