ФорумРазработкаУстановка и администрирование ПОРазное ПО → Системы деплоя и у правления конфигурациями. Кто чем пользуется?

Системы деплоя и у правления конфигурациями. Кто чем пользуется?

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 23 февраля 2015 г. 11:18, спустя 6 минут 4 секунды

    @master, у меня нет MySQL, только постгрес, он не просит вводить пароли
    )

    @adw0rd, речь не про mysql, а про то, как задавать пароль единожды, или в более общем случае - как запрашивать параметр только если он действительно нужен и в тот момент когда он нужен

    @master, да мне вообще пароли не требуется никакие вводить

    Спустя 88 сек.

    Я понял какая у тебя проблема, но сам с таким не сталкивался

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 23 февраля 2015 г. 13:10, спустя 1 час 51 минуту 56 секунд

    @master, расскажешь если найдешь что-то лучше, будет интересно посмотреть фич-лист

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 23 февраля 2015 г. 13:21, спустя 10 минут 26 секунд

    На текущем проекте у нас 3 сущности (core, visiter, landing) и у каждого куча настроек, но тасков не так много видимо, если по группам разделить, то вот что у нас в ansible:

    • установка софта, обновление реп с софтом
    • создание пользователей, ключей
    • доставка кода, обновление
    • создание и обновление venv
    • релизы эрланга готовятся
    • postgres (создаются user, db для каждого)
    • миграции данных
    • nginx, django, supervisor, relx/erl конфиги
    • генерация ssl
    • crontab

    Вот пример работы с stdout:

    - name: Getting Next Release Name
      shell: "cd {{ visiter_make_dir }} && git rev-parse HEAD | cut -c 1-7"
      register: release_versions
      tags: [init_visiter, update_visiter]
    
    - name: Build Next Release Name
      set_fact:
          release_version: "rel-{{ item }}"
      with_items: release_versions.stdout_lines
      tags: [init_visiter, update_visiter]
    

    Спустя 120 сек.

    Мне кажется нам просто повезло, что нам большего не надо что есть в Ansible, но если ты найдешь что-то лучше, я непременно посмотрю! Лучшее это всегда лучше)

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 25 февраля 2015 г. 8:18, спустя 1 день 18 часов 57 минут

    В общем, я отказался от идеи вводить пароль вручную и стал хранить его в файле примерно как описано здесь
    http://willthames.github.io/2014/04/02/modelling-credentials-configuration-in-ansible.html
    различие в том, что подгружаю файл с паролями непосредственно перед использованием в задачах командой
    - include_vars: keys/group_vars/mysql.yml

    папку keys добавил в gitignore
    не всё полезно, что в swap полезло
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 25 февраля 2015 г. 19:49, спустя 11 часов 31 минуту 26 секунд

    Вот такой скрипт позволяет перезагрузить хост, собрав перед этим основную статистику, такую как vmstat. Бывает очень нужно, когда сперва перезагрузился, а потом думаешь "а как мне посмотреть использование CPU за прошлый сеанс?" А вот:


    - set_fact: _timestamp_utc="{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"
    - set_fact: _time_utc="{{ lookup('pipe', 'date') }}"
    - set_fact: _reboot_log_file=/var/log/ansible-reboot/reboot_{{_timestamp_utc}}.log

    - file: path=/var/log/ansible-reboot/ state=directory

    - file: dest=_reboot_log_file state=touch

    - shell: 'echo "{{_time_utc}}\n" >> {{_reboot_log_file}}'
    - shell: 'echo "Kernel: " >> {{_reboot_log_file}} && uname -a >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
    - shell: 'echo "Uptime: " >> {{_reboot_log_file}} && uptime >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
    - shell: 'echo "Vmstat: " >> {{_reboot_log_file}} && vmstat -S m >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
    - shell: 'echo "IOstat: " >> {{_reboot_log_file}} && iostat >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
    - file: src={{_reboot_log_file}} dest=/var/log/ansible-reboot/last_reboot.log state=link

    - name: restart host
    command: shutdown -r now "Ansible updates triggered"
    async: 0
    poll: 0
    ignore_errors: true

    - name: waiting for host to reboot
    local_action: wait_for host={{inventory_hostname}} port=22 state=stopped
    sudo: false

    - name: waiting for host to come back
    local_action: wait_for host={{ansible_ssh_host}} port=22
    sudo: false
    не всё полезно, что в swap полезло
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 февраля 2015 г. 8:50, спустя 2 дня 13 часов

    баг, например


    - when: false
    include: non-exists-file.yml


    ERROR: file could not read: non-exists-file.yml

    и ведь не в первый же раз

    собственно, появление подобных багов - признак собственной реализации в DSL семантических основ (циклов, условий), чего делать, на мой взгляд, не следует.
    не всё полезно, что в swap полезло
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 3 марта 2015 г. 19:11, спустя 3 дня 10 часов 21 минуту

    Промежуточные итоги: с помощью Ansible настроил сервер и виртуальные хосты на нём. Nginx-фронтенд может раздавать статику, работать как прокси или реверс-прокси. Бэкендов пока два: apache + php + mpm-itk (php любой версии собирается phpbrew) и ruby/rack (ruby тоже собирается любой версии с помощью rvm), но можно навесить сколько угодно. Основная выгода - что теперь конфигурацию можно достраивать как угодно, навешивая бэкенды и базы данных, и при этом не быть привязанным к конкретному серверу, всегда можно арендовать новый и переехать в кратчайшие сроки.
    не всё полезно, что в swap полезло
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 3 марта 2015 г. 19:46, спустя 35 минут 24 секунды

    Ага, помню у нас был кластер (он и сейчас есть, только я уже там не работаю) и мне подрядчик-хостер просто присылал IP-адреса серверов, я их указывал в файлик ансибла и вывзывал init-тег, все. Если какие-либо сервера умирали (диск и т.п.), то было абсолютно пофиг, мы просто заказывали еще сервера, а ансибл все делал за меня. Обычно пару десятков серваков в неделю я так добавлял без проблем

    Спустя 53 сек.

    Сейчас конечно не так ощутима прелесть ансибла, но если будем переезжать, то цены ему не будет)

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 14 сентября 2015 г. 12:58, спустя 194 дня 17 часов 11 минут

    У нас на продакшене puppet стоит. Через него ставятся ноды с мусклом, сфинком с кое-какими патчами, компилируются UDF для него, пхп с кучей всякой фигни и тд. Но там в основном админы занимались, я только местами правил конфиги.

    Нужно на локалке тоже как-то сделать для развертывания инфраструктуры разработчикам. Вроде бы хочется puppet, т.к. уже какой-то опыт с ним есть, но все сука что-то так пиздец сложно, что хоть пиши сам тупо shell-скрипты или на пхп.

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 14 сентября 2015 г. 13:02, спустя 3 минуты 41 секунду

    @Абырвалг, мне Ansible кажется намного проще чем puppet, а если и он сложен, то Fabric то что надо для мелких проектов и локалки. Думаю в пхп-мире тоже что-то такое есть

    https://smappi.org/ - платформа по созданию API на все случаи жизни

Пожалуйста, авторизуйтесь, чтобы написать комментарий!