Бекап и восстановление(перенос) cassandra через snapshot

Posted in Новости on 30 августа, 2017 by admin

1. Делаем снепшот keyspace

nodetool snapshot

Создастся снапшот по адресу /var/lib/cassandra/data/$keyspace/$table/snapshots/
2. Делаем бекап схемы :

cqlsh -e "DESC KEYSPACE keyspace" > keyspace.cql # где keyspace нужный нам keyspace

3. Бекапим эти данные
4. На новом сервере импортируем схему :

cqlsh -e "source 'keyspace.sql'"

5. Помещаем данные из снапшота в таблицы обычным копированием
6. Перезагружаем кассандру

Tags: , , ,

ansible lineinfile colon

Posted in Новости on 29 августа, 2017 by admin

При добавлении таска:

- name: "Grant zabbix user perms to exec docker command"
lineinfile: path="/etc/sudoers" line='zabbix ALL=(ALL) NOPASSWD: /bin/docker'

вывалилась ошибка :

ERROR! Syntax Error while loading YAML.

The error appears to have been in '/opt/ansible/roles/xxx/tasks/main.yml': line 46, column 68, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: "Grant zabbix user perms to exec docker command"
lineinfile: path="/etc/sudoers" line='zabbix ALL=(ALL) NOPASSWD\\: /bin/docker'
^ here

Легкий хак для этого дела. Меняем

:

на

{{':'}}

и парсер съедает нормально

Tags: , ,

Как использовать multi-pass loop в ansible без танцев с бубном

Posted in Новости on 17 августа, 2017 by admin

Итак, понадобилось привязать переменную ( variable ) к отдельному хосту ( хостов около 30 ) при раскидывании конфигов по хостам ( на каждый хост свой уникальный ключ ).
Какие пути ?
1. Дублировать одинаковые таски с when. В итоге получится каша и каждый новый сервер нужно будет прописывать в этом таске.
2. Разделить все серверы по группам ( один сервер — одна группа ), для каждой группы завести свой конфиг в group_vars и через child groups рулить всем этим делом. Опять же получится громоздкая конструкция с кучей файлов и зависимостями.
3. Использовать dict в variables. Этим и займемся.

— Заводим в group_vars/all.yml наш dict ( server(1|2|3) должны строго соответствовать ansible_hostname из инвентори файла ) :

servers:
server1:
secret_key: "value1"
server2:
secret_key: "value2"
server3:
secret_key: "value3"

— Создаем темплейт с указанием ключа :

ossec-agent:
build: .
container_name: ossec-agent
hostname: ossec-agent
restart: always
privileged: true
net: host
environment:
OSSEC_SERVER: "x.x.x.x"
OSSEC_AGENT_KEY: "{{ item.value.secret_key }}"
ports:
- "514:514"
- "1514:1514"
# command: /usr/bin/supervisord -c /etc/supervisord.conf
command: /start.sh

— В тасках создаем :

- name: "put docker-compose"
template:
src: docker-compose.j2
dest: /my/path/ossec-agent/docker-compose.yml
with_dict: "{{ servers }}"
when: ansible_hostname == item.key

И вуаля, у нас работает наш loop и раскидывает ключи согласно inventory.

Tags: , ,