Показаны сообщения с ярлыком ansible. Показать все сообщения
Показаны сообщения с ярлыком ansible. Показать все сообщения

понедельник, 12 августа 2024 г.

ansible: ограничить количество одновременных хостов

 Штатно, ansible катит по 5 хостов за раз. Но бывает нужно как больше, так и меньше, например если мы катим какой-то сервис, то одновременный перезапуск всех инстансов сразу -- это проблема (всякие canary deploy и прочее опустим, тут другой инструмент). Вообще, раньше работала опция --forks=10 (и --forks=1 тоже), в 2.9 уже не работает. Но есть второе решение, очень неочевидное если не знать об этом: serial

Можно указывать как штуки, так и проценты.

среда, 5 июня 2024 г.

ansible, docker, Error connecting: Error while fetching server API version: Not supported URL scheme http+docker

 FAILED! => {"changed": false, "msg": "Error connecting: Error while fetching server API version: Not supported URL scheme http+docker"}

фикс

pip install requests==2.31.0

https://github.com/docker/docker-py/issues/3256

что-то не первый раз косяк с этим requests

четверг, 18 апреля 2024 г.

ansible: generate password

 ansible -m debug --args 'msg={{ lookup("password","/tmp/123") }}' localhost

Но перезапуск даст тот же пароль, это и хорошо и плохо, потому что в этот файл тоже запишет пароль. Сгенерить без следов:

ansible -m debug --args 'msg={{ lookup("password","/dev/null") }}' localhost


суббота, 3 февраля 2024 г.

установка prometheus-ansible роли

 Есть готовый набор ролей

https://github.com/prometheus-community/ansible.git

Можно запустить через git clone, можно поставить коллекцию:

ansible-galaxy collection install prometheus.prometheus

или

ansible-galaxy collection install git+https://github.com/prometheus-community/ansible.git
(внимание на git+, без него скажет "нет тар файла")
Можно сделать requirements.yaml
collections:
  - name: git@github.com:my_org/private_collections.git#/path/to/collection,devel
  - name: https://github.com/ansible-collections/amazon.aws.git
    type: git
    version: 8102847014fd6e7a3233df9ea998ef4677b99248
Тут есть ещё документация
https://docs.ansible.com/ansible/latest/collections_guide/collections_installing.html

пятница, 8 декабря 2023 г.

clickhouse+zookeeper+ansible

Установить кликхаус не очень сложно (под докер тоже есть официальный образ), но для работы на нескольких серверах нужно ещё добавить zookeeper (уже есть версия c clickhouse keeper, но пока рекомендуется ставить)

Нюанс: сам конфиг кликхауса в убогом и давно устаревшем xml, это надо учитывать. Хотя есть и поддержка ямла, но пока 99.9% инструкций, включая офдоки, на xml

вторник, 31 октября 2023 г.

ansible + hashicorp vault

 Не всегда ansible vault удобен и достаточен, тогда вариант - hashicorp vault

https://itdraft.ru/2021/03/26/hranim-sekrety-ansible-v-hashicorp-vault/

Для чтения переменных используется lookup('hashi_vault')

https://docs.ansible.com/ansible/latest/collections/community/hashi_vault/index.html

PS переход с прошлой версии hashi_vault lookup

https://docs.ansible.com/ansible/latest/collections/community/hashi_vault/docsite/migration_hashi_vault_lookup.html#ansible-collections-community-hashi-vault-docsite-migration-hashi-vault-lookup

И, варианты чтения для kv2 - там есть ОЧЕНЬ большой нюанс с тем, что в путь нужно вписать /data/ в правильное место. И примеры разных вариантов

воскресенье, 21 мая 2023 г.

ansible: некоторые особенности with_fileglob

 Типовое применение: из templates/nginx/sites-available/ нужно скопировать с заменой переменных ряд конфигов. Вариант "в лоб":

- name: install sites

   template:

     src: "{{ item }}"

     dest: "/etc/nginx/sites-enabled/{{ item }}"

   with_items:

     - nginx/sites-available/site1.conf

     - nginx/sites-available/site2.conf

среда, 21 июля 2021 г.

ansible, vault, strings

 Есть удобная утилитка ansible-vault, но она шифрует сразу весь файл. Если это файл с переменными - удобнее когда шифрованы только значения ключей, в том числе при контроле гитом - любое изменение локализуется легко, в случае волта меняется весь файл.

Дешифрование строки

Вот с расшифровкой такого файла беда, ansible-vault уже не понимает что от него хотят (будет ERROR! input is not vault encrypted data. (file) is not a vault encrypted file for (file)), поэтому есть несколько вариантов посмотреть:

1) копируем строку после !vault в файл и далее ansible-vault view ...

2) через дешифровальную буку

   - hosts: localhost

     tasks:

       - debug:

           msg: "{{ secret_value }}"

3) через ansible -m debug, но оно работало до 2.8, там синтаксис будет такой

ansible localhost -m debug -a var="some_var" -e "@file.yml" --ask-vault-pass

Вместо ask можно использовать --vault-password-file (file)

Шифрование строки

А как же зашифровать эту строку?

ansible-vault encrypt_string --ask-vault-pass --stdin-name some_var

спросит два раза пароль волта. 

!!! Потом вводим значение и не нажимая энтер нажимаем два раза ctrl-d

понедельник, 4 февраля 2019 г.

Ускоряем ansible

Проблемы могут быть в разных местах.
Можно ускорить стадию gathering facts, включив кэширование фактов
[defaults]
fact_caching=redis
https://docs.ansible.com/ansible/latest/plugins/cache.html

Когда к хосту подключение долгое, поможет pipelining
[ssh_connection]
pipelining = True
https://docs.ansible.com/ansible/latest/reference_appendices/config.html?highlight=pipelining#ansible-pipelining

Также при этом можно посмотреть на ControlPersist
https://docs.ansible.com/ansible/latest/reference_appendices/config.html?highlight=controlpersist#ansible-ssh-args

Accelerated Mode Deprecated

Pull режим
http://docs.ansible.com/playbooks_intro.html#ansible-pull

Также было найдено такое, но у меня не заработало.
https://docs.ansible.com/ansible/latest/plugins/connection/persistent.html

воскресенье, 3 февраля 2019 г.

ansible: настраиваем интерфейс в centos7

К сожалению, почти все инструкции описывают работу через достаточно корявый и ненавистный многими networkmanager, а вот для более классической настройки ничего вменяемого не гуглится.
Вообще, есть модуль interfaces_file, но простейший тест показывает что он не работает (вероятно, debian only).

вторник, 29 января 2019 г.

Ansible: прогнать удаленный файл через шаблонизатор

Если есть некий шаблон, который например поставили из пакета, и нужно заменить в нём переменные, есть 3 варианта
1) самый корявый, через lineinfile, blockinfile или replace
2) Более правильный, через syncronize или fetch выкачиваем локально и прогоняем через template
3) прогоняем in-place через шаблонизатор jinja2, который ставится отдельно на сам хост, и envsubst
https://unix.stackexchange.com/questions/294378/replacing-only-specific-variables-with-envsubst

По 2 будет выглядеть примерно так
- name: Setup kamailio dispatcher, fetch config to ansible host
  fetch:
    src: /etc/kamailio/dispatcher.list.template
    dest: /tmp/{{ ansible_hostname }}.dispatcher.list
    flat: yes

- name: fill it
  template:
    src: /tmp/{{ ansible_hostname }}.dispatcher.list
    dest: /etc/kamailio/dispatcher.list

- name: clean after fetch
  file:
    path: /tmp/{{ ansible_hostname }}.dispatcher.list
    state: absent

(хотя тут еще правильнее завернуть в block и переместить очистку в секцию always:)

Ansible: EPEL in CentOS 7

Если нужно поставить epel в центос 7 то это делается разными путями, например так
https://github.com/geerlingguy/ansible-role-repo-epel/blob/master/tasks/main.yml
(или просто подключаем эту роль, или так, вариантов много...)
можно зайти сюда и взять отсюда ключ например
https://dl.fedoraproject.org/pub/epel/

Но можно гораздо проще.
- name: Install EPEL repo
  yum:
    name: epel-release
    state: latest

Потому что всё нужное в 7 центоси уже есть и так. Бонусом - ставятся еще epel-testing и epel-src