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

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

  • adw0rd

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

    Spritz 18 февраля 2015 г. 7:35, спустя 27 минут 30 секунд

    У меня так

    $ cat ~/.ansible.cfg
    [ssh_connection]
    ssh_args = -o IdentitiesOnly=yes
    
    $ cat group_vars/all 
    ansible_ssh_host: "some.host"
    ansible_ssh_user: "some.user"
    ansible_ssh_private_key_file: shared/files/ssh/id_rsa
    
    adw/0
  • master

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

    Spritz 18 февраля 2015 г. 7:56, спустя 21 минуту 29 секунд

    Стал ставить apache2 и apache2-mpm-itk на ubuntu 14.04 и вылезла ошибка
    "dpkg: error processing package libapache2-mpm-itk (–configure)"
    или вроде того
    причём на 12.04 этой ошибки нет.
    Оказалось, это баг из Дебиана, и попал автоматом в убунту.
    Решается так:

    - apt: name=libapache2-mpm-itk state=latest
    when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty'
    - apt: name=apache2 state=latest
    - apt: name=apache2-mpm-itk state=latest

    по сути хак
    не всё полезно, что в swap полезло
  • master

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

    Spritz 19 февраля 2015 г. 17:33, спустя 1 день 9 часов 36 минут

    @adw0rd, как ты управляешь виртуальными хостами? хранишь их настройки в конфах ansible или где-то ещё?
    не всё полезно, что в swap полезло
  • adw0rd

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

    Spritz 20 февраля 2015 г. 2:50, спустя 9 часов 17 минут 30 секунд

    Я храню доступы в inventories/<something>, например

    [core]
    production  ansible_ssh_host=203.0.113.1    ansible_ssh_port=2244
    stage       ansible_ssh_host=203.0.113.2    ansible_ssh_port=2244
    test        ansible_ssh_host=203.0.113.2    ansible_ssh_port=2244
    
    adw/0
  • master

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

    Spritz 20 февраля 2015 г. 4:17, спустя 1 час 27 минут 18 секунд

    @adw0rd, я про виртуальные хосты (nginx/apache)
    не всё полезно, что в swap полезло
  • adw0rd

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

    Spritz 20 февраля 2015 г. 4:36, спустя 19 минут 4 секунды

    Да у меня их не так много, в host_vars храню нужные данные, общие в group_vars, остальное в шаблонах жинжы. Пример:

    $ cat roles/core/templates/nginx/core.conf.j2 
    server {
        listen 80;
        server_name {{ core_host }};
    
        location /static/ {
            root {{ storage_root }};
        }
        location / {
            uwsgi_pass unix://{{ core_dir }}/../uwsgi.sock;
            include uwsgi_params;
        }
    

    Спустя 55 сек.

    Ну и таких вот шаблонов штук 5 для разных сервисов

    adw/0
  • master

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

    Spritz 22 февраля 2015 г. 8:44, спустя 2 дня 4 часа 7 минут

    как оказалось, в ансибле отсутствуют возможности императивного программирования. например, объединить задачи в другую задачу и вызывать эту группированную задачу в цикле. например


    - with_items:
    - a.deb
    - b.deb
    - c.deb
    tasks:
    - copy: src=files{{item}} dest=/tmp/{{item}}
    - apt: deb=/tmp/{{item}}
    - file: /tmp/{{item}} state=absent
    не всё полезно, что в swap полезло
  • master

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

    Spritz 22 февраля 2015 г. 8:58, спустя 13 минут 56 секунд

    а ещё ансибл не умеет в установку локальных пакетов. например

    - apt: deb_local=files/a.deb

    чтобы автоматически проверил наличие и в случае отсутствия установил или проапгрейдил

    {+++176+++}
    то есть, ансибл из коробки не умеет нормально ни императивным, ни декларативным способом
    не всё полезно, что в swap полезло
  • adw0rd

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

    Spritz 22 февраля 2015 г. 9:04, спустя 6 минут 5 секунд

    Не знаю, не пользуюсь этим, мне пока всего хватает

    adw/0
  • master

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

    Spritz 22 февраля 2015 г. 22:21, спустя 13 часов 16 минут 15 секунд

    дошёл до установки mysql, и потребовалось задавать пароль root-пользователя
    я не хочу хранить пароль в конфигах, а хочу задавать его вводом в консоли
    нашёл vars_prompt, можно сделать так (в плейбуке)



    - name: install mysql server
    hosts: mysql
    remote_user: ansible
    sudo: yes
    vars_prompt:
    - name: &quot;mysql_password&quot;
    prompt: &quot;enter MySQL password&quot;
    private: yes
    confirm: yes
    roles:
    - mysql


    и тогда пароль будет запрашиваться. НО(!) он будет запрашиваться при каждом запуске плейбука. а мне нужно только после установки mysql, то есть только при первом запуске плейбука. но директиву vars_prompt нельзя включать в tasks, только определять в плейбуке. ну что за блядство. что за говно вместо мозгов у разрабов ансибла.

    вот типичный же кейс: проверить наличие пакета, если отсутствует - установить и задать рутовый пароль, если присутствует - пропустить. ну неужели им это в голову не пришло.

    {+++176+++}
    @adw0rd, вот ты как решаешь тот кейс что я привёл выше?
    не всё полезно, что в swap полезло
  • master

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

    Spritz 22 февраля 2015 г. 23:04, спустя 43 минуты 38 секунд

    Вот ещё случай. В ансибле каждой задаче можно присвоить тег, тогда можно будет запустить задачи только с определённым тегом:
    ansible-playbook -i hosts book.yml -t some_tag

    но нет возможности определить задачу так, чтобы она выполнялась _только_ если указан тег (т.е. не выполнялась если тегов не задано).
    не всё полезно, что в swap полезло
  • adw0rd

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

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

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

    Спустя 115 сек.

    @master, я и не знал что теги можно не указывать, я всегда указываю

    adw/0
  • master

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

    Spritz 22 февраля 2015 г. 23:23, спустя 7 минут 31 секунду

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

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

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

    Spritz 22 февраля 2015 г. 23:56, спустя 32 минуты 31 секунду

    в общем, ансибл меня разочаровал. я пытался составить внятный плейбук для конфигурации вебсервера, потратил часов сто, всю документацию облазил, гугл мне по запросам &quot;ansible …&quot; уже капчу показывает, и всё равно спотыкаюсь о какие-то непродуманные мелочи, до сих пор конфа не написана, и, видимо, придётся искать другой инструмент или делать свой.

    Каким я вижу идеальный инструмент для настройки хостов:
    1. он должен понимать декларативное описание состояний и зависимости состояний друг от друга (роли - это по сути состояния), причём зависимости могут быть вложенными
    2. он должен давать возможность описать в императивном виде какие команды ввести и на какие вопросы ответить автоматически, а какие вопросы передать пользователю.

    не всё полезно, что в swap полезло
  • master

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

    Spritz 23 февраля 2015 г. 0:12, спустя 16 минут 32 секунды

    То есть, 1) в декларативной части должна быть возможность неограниченной вложенности. как в системе пакетов. 2) в императивной части должна быть возможность давать команды и обрабатывать результаты на языке с полноценной семантикой. Ансибл в этом плане хромает на обе ноги. Уровень вложенности у него один (окда, можно включать другие файлы, но нельзя делать это в цикле), а возможностей для обработки stdout у него чуть меньше чем чуть-чуть.

    {+++180+++}
    и если уж ансибл хвалят - могу представить, какой отстой представляют собой остальные системы управления конфигурациями
    не всё полезно, что в swap полезло

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