Alexander
Да я бы не сказал, что это оффтоп, это проблема модуля pip ансибла, что он надеется на левые алиасы
Alexander
В общем, пришлось просто ставить шелом - name: Upgrading pip packages shell: python3.8 -m pip install --upgrade pip setuptools wheel Хотел красиво, но pip не могет
[IPT] Dmitry
как лучше всего сделать host_templates? тупо через copy? copy: src: "{{ inventory_hostname_short }}/{{ item }}"
Alex
Всем привет. Если кому интересно, запилил две статьи по Ansible: 1. https://max-ko.ru/54-dobavlenie-polzovatelja-i-publickey-na-udalennye-servera-s-pomoschju-ansible.html 2. https://max-ko.ru/55-redaktirovanie-konfig-fajlov-s-pomoschju-ansible-na-primere-sshd_config.html Приму критику
такая форма записи неудобная - lineinfile: dest=/etc/ssh/sshd_config regexp='^KexAlgorithms' line='KexAlgorithms лучше так - name: bla bla bla lineinfile: dest: /etc/ssh/sshd_config regexp: '^KexAlgorithms' line: 'KexAlgorithms Так же стоит посмотреть в сторону validate
checkdiff
Господа, реально-ли сделать такое? Или я желаю странного?
##note: ansible has a dnstxt module, that works with lookup, like lookup('dnstxt', 'domain') # but there is a bug/feature that the record is cached and the cache is never updated # https://github.com/ansible/ansible/issues/44128 - name: Check that TXT record is available when: not ansible_check_mode become: false delegate_to: localhost command: "dig {{ __ssl_regru_dns_subdomain_full }} TXT +short @{{ ssl_regru_dns_server }}" # yamllint disable-line register: __ssl_regru_dns_check_txt_record until: (__ssl_regru_dns_check_txt_record.stdout | replace('\"', '')) == __ssl_regru_dns_challenge_content # yamllint disable-line retries: "{{ ssl_regru_dns_retries }}" delay: "{{ ssl_regru_dns_delay }}" changed_when: false run_once: true
Alex
подскажите, а в ансибле можно как то производить проверку того, что apt "живой", чтобы избежать ошибок вида E: can not open /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease - fopen (2: No such file or directory) E: The repository 'http://archive.ubuntu.com/ubuntu bionic InRelease' provides only weak security information. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details. под живой я имею ввиду, что все конфиги есть и они валидные
Sergey
Не надо так.
Sergey
Lineinfile для конфигов - путь к боли и унижению.
Maksimus Ulibikus
Maksimus Ulibikus
template
Ссылку можно на пример?
Maksimus Ulibikus
Sergey
Можно: https://github.com/roots/trellis/blob/master/roles/sshd/templates/sshd_config.j2
Sergey
Я не думаю, что тебе принципиально смотреть именно этот вариант - он рандомно в гугле найден. Я вообще имел в виду, что сам принцип отказа от ответственности за полное содержание конфига плох.
Sergey
за полное содержание конфига
Maksimus Ulibikus
за полное содержание конфига
Перефразирую. Что подразумевается под ответственностью за полное содержание конфига?
UglyKoyote
template
а если нету возможности тащить с нуля темплейт, а надо "вклиниваться" в уже существующее? это попытка "до@#$ся" если что
Sergey
Перефразирую. Что подразумевается под ответственностью за полное содержание конфига?
Конфиг полностью создаётся с нуля, и может быть записан в рабочем виде при отсутствии предыдущего файла на целевом хосте.
UglyKoyote
просто были ситуации когда надо было вносить правки в уже боевой файл.. и приходилось его бэкапить
UglyKoyote
ну вот есть уже сервис и рабочий конфиг, но надо внести изменения
Sergey
просто были ситуации когда надо было вносить правки в уже боевой файл.. и приходилось его бэкапить
А какая фиг разница? Берёшь работающий конфиг в качестве темплейта, вносишь изменения. Сразу получаешь бесплатный контроль версий и откат "левых" - в обход процесса - изменений.
Sergey
^^^ +++
UglyKoyote
Модуль темплейта умеет бэкапить
ну я ещё сам делал бэкап. чтобы уж наверняка) да перебор, да рукожопость, но..
Maksimus Ulibikus
Sergey
А в чем смысл создавать конфиг с нуля, если достаточно изменить некоторые строки?
А ты моё сообщение выше прочитал же, да? Конечно же, прочитал?
Sergey
Sergey
Я ведь даже с реплаем, чтобы контекст не терялся.
Timur
Идемпотентность
Maksimus Ulibikus
Интересно, есть ли из актуальных дистрибутивов Linux отсутствие файла sshd_config?
Sergey
Интересно, есть ли из актуальных дистрибутивов Linux отсутствие файла sshd_config?
Понятия не имею. Ты задал вопрос в общем виде ("зачем?...") - я тебе в общем виде ответил ("затем, что..."). Конкретный файл, если уж ты его модифицируешь, тоже стоит закатать в темплейт.
Старый
ERROR! The vault password file /erzent/.deepsocial_vault was not found, а что за новый файл deepsocial_vault
Старый
2.9.4
Sergey
Речь была изначально о моей статье. Какая связь моей статьи с файлом sshd и ответственностью?
Твоя статья демонстрирует bad practices в управлении файлом конфигурации.
Старый
Твоя статья демонстрирует bad practices в управлении файлом конфигурации.
файл конфигурации вообще тема отдельного разговора, например у тебя у каждой роли свой vault, как прописывать его?если уже получается 80+ файлов
Sergey
файл конфигурации вообще тема отдельного разговора, например у тебя у каждой роли свой vault, как прописывать его?если уже получается 80+ файлов
Если не читать доку - то да, проблема, но вообще-то это не так делается - не нужно шифровать файлы целиком. Шифруешь отдельный секрет, и кладёшь его в обычный YaML.
Sergey
https://docs.ansible.com/ansible/latest/user_guide/vault.html#variable-level-encryption
Старый
хотя в cfg прописан секрет
Старый
vault_password_file = /home/erzent/ansible/vault.yml
Sergey
хорошо ты прописал секрет, далее ты делаешь на него ссылку, и получаешь The vault password file /erzent/.deepsocial_vault
Я не берусь лечить зубы по фотографии. У тебя в системе может что-то быть сломано в 100500 местах. Если не делать странного, то схема вполне работоспособна, и даже при хранении бинарных серкетов (типа кейтабов) всё норм.
Sergey
Но, кстати, тебя опять твой английский подвёл жи.
Sergey
Это - _файл _с_ паролем_, а не _запароленный_файл_.
Старый
😐🙄а если его нет в переданных ролях?
Sergey
Не понял, а причём тут роль-то?
Sergey
Не понял, а причём тут роль-то?
как я понял он хочет по волт-пассу на роль
Maksimus Ulibikus
Твоя статья демонстрирует bad practices в управлении файлом конфигурации.
Критика это хорошо, но то, что нет примера - best practice - плохо
Sergey
Критика это хорошо, но то, что нет примера - best practice - плохо
Я же тебе ссылку прислал на целую роль.
[IPT] Dmitry
нормально ли в одну роль включать таск из другой? и как лучше это сделать, если очень надо?
[IPT] Dmitry
нормально ли в одну роль включать таск из другой? и как лучше это сделать, если очень надо?
- name: Run tasks/other.yaml instead of 'main' include_role: name: myrole tasks_from: other полагаю, что-то типа?
Sergey
нормально ли в одну роль включать таск из другой? и как лучше это сделать, если очень надо?
Зависит от конкретного случая, конечно, но сам смысл ролей эта штука напрочь ломает.
[IPT] Dmitry
Зависит от конкретного случая, конечно, но сам смысл ролей эта штука напрочь ломает.
жизнь штука такая, наполовину бессмысленна, но реальна. главное, чтобы функционально ничего не ломало. идеологически, этот таск принадлежит к роли myrole, но вызываться должен множеством других ролей. не хочу его (таск) выносить в отдельную роль
Sergey
таск, который зовут из множества ролей - такое.....
[IPT] Dmitry
а можешь пояснить, почему?
Sergey
Роли для чего? Чтобы изолировать повторяющуюся функциональность.
Sergey
Именно для этого у них свои каталоги для файлов, шаблонов и переменных.
[IPT] Dmitry
т.е. это просто ломает идеологию и ничего больше?
Sergey
Просто неканонично. Ну это примерно как в питоне лезть в свойства класса извне.
Sergey
Можно, но все косо посмотрят.
Артём
Если не читать доку - то да, проблема, но вообще-то это не так делается - не нужно шифровать файлы целиком. Шифруешь отдельный секрет, и кладёшь его в обычный YaML.
А как в этом случае удобно смотреть-править секреты? Если файл с секретами целиком шифрован - то ansible-vault edit и понеслась. А когда пароли как изюм по булке в обычном ямле - как?
Артём
Встречный вопрос: зачем _смотреть_ креды? Забыл - сменил. Ну и если сильно хочется - модуль debug есть
контр-вопрос: чем так плох отдельный шифрованный файл с переменными, чтобы отказываться от даже раз в два года возможности заглянуть в него?
Sergey
Вот именно тем, чем коллега выше болел: ад для версионирования. Правишь одно, весь файл меняется. Договоритесь там с ним, результат приносите 😊)))))
Anonymous
Мужчины, приветствую.
Anonymous
Молитвенник Запускаем Ansible, Орыли, имеет кто?
Maks
Молитвенник Запускаем Ansible, Орыли, имеет кто?
Посмотрите в файлах этого канала
Anonymous