Max
поэтому этими плюшками надо пользоваться осторожно.
Alex
Только так тогда( for i in ( 'apache' 'imageio-proxy' 'websocket-proxy' ); do cp -f /etc/pki/ovirt-engine/keys/$i.key.nopass{,.bak} ; done
Alex
я просто пишу статью, как юзать овирт с letsencrypt
Alex
Всего пол года назад обещал)
Alex
нелюблю штамп, я дату вставляю. Так человекочитаемый получается
Max
нелюблю штамп, я дату вставляю. Так человекочитаемый получается
это уже детали реализации. главное добавить в резерв дату. штамп - только число. если тебя бомбит, рекомендую медитативные техники.
Oleksandr
нелюблю штамп, я дату вставляю. Так человекочитаемый получается
Тут тогда надо везде 1 часовой пояс использовать. Как правило UTC
Max
Нет, достаточно даты
если больше одного раза в день это никогда не запускаешь.
Alex
если больше одного раза в день это никогда не запускаешь.
Это больше одного раза в жизни не должно быть запущено
Alex
макс попросил
Alex
"не должно" :))
люди ошибаются)
Max
наше дело — предложить, ваше дело — отказаться.
Alex
я дату добавил, сойдёт
Max
блин, дети взяли головку чеснока печенную, делят как апельсин. прикольно.
Mikhail
Печёный чеснок?
Max
Печёный чеснок?
овощи запекаем в печке, чеснока пару голов кладем. как в плов (ош пло)
Alex
Что скажете? mkdir -p /etc/letsencrypt/live ln -f -s /etc/letsencrypt/live /etc/pki/letsencrypt cat << EOF > /etc/ovirt-engine/engine.conf.d/99-setup-pki.conf ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts" ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD="" EOF openssl x509 -outform der -in /etc/pki/letsencrypt/ovirtengine.example.com/chain.pem -out /tmp/ovirtengine.example.com.chain.der keytool -import -alias "Let's Encrypt Authority X3" -file /tmp/ovirtengine.example.com.chain.der -keystore /etc/pki/ovirt-engine/.truststore -storepass $(grep '^ENGINE_PKI_TRUST_STORE_PASSWORD' /etc/ovirt-engine/engine.conf.d/10-setup-pki.conf | cut -f 2 -d '"') rm -f /tmp/ovirtengine.example.com.chain.der sed -r -i 's|^(SSLCACertificateFile.*)|#\1|g' /etc/httpd/conf.d/ssl.conf sed -r -i '0,/(^#?SSLCACertificateFile.*)/ s//\1\nOptions FollowSymlinks/' /etc/httpd/conf.d/ssl.conf ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/fullchain.pem /etc/pki/ovirt-engine/apache-chain.pem services=( 'apache' 'imageio-proxy' 'websocket-proxy' ) for i in "${services[@]}"; do cp /etc/pki/ovirt-engine/certs/$i.cer{,."$( date +%F )".bak} cp /etc/pki/ovirt-engine/keys/$i.key.nopass{,."$( date +%F )".bak} ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/privkey.pem /etc/pki/ovirt-engine/keys/$i.key.nopass ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/cert.pem /etc/pki/ovirt-engine/certs/{apache,imageio-proxy,websocket-proxy}.cer done restorecon -Rv /etc/pki systemctl restart httpd ovirt-engine ovirt-imageio-proxy ovirt-websocket-proxy.service
Max
Что скажете? mkdir -p /etc/letsencrypt/live ln -f -s /etc/letsencrypt/live /etc/pki/letsencrypt cat << EOF > /etc/ovirt-engine/engine.conf.d/99-setup-pki.conf ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts" ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD="" EOF openssl x509 -outform der -in /etc/pki/letsencrypt/ovirtengine.example.com/chain.pem -out /tmp/ovirtengine.example.com.chain.der keytool -import -alias "Let's Encrypt Authority X3" -file /tmp/ovirtengine.example.com.chain.der -keystore /etc/pki/ovirt-engine/.truststore -storepass $(grep '^ENGINE_PKI_TRUST_STORE_PASSWORD' /etc/ovirt-engine/engine.conf.d/10-setup-pki.conf | cut -f 2 -d '"') rm -f /tmp/ovirtengine.example.com.chain.der sed -r -i 's|^(SSLCACertificateFile.*)|#\1|g' /etc/httpd/conf.d/ssl.conf sed -r -i '0,/(^#?SSLCACertificateFile.*)/ s//\1\nOptions FollowSymlinks/' /etc/httpd/conf.d/ssl.conf ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/fullchain.pem /etc/pki/ovirt-engine/apache-chain.pem services=( 'apache' 'imageio-proxy' 'websocket-proxy' ) for i in "${services[@]}"; do cp /etc/pki/ovirt-engine/certs/$i.cer{,."$( date +%F )".bak} cp /etc/pki/ovirt-engine/keys/$i.key.nopass{,."$( date +%F )".bak} ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/privkey.pem /etc/pki/ovirt-engine/keys/$i.key.nopass ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/cert.pem /etc/pki/ovirt-engine/certs/{apache,imageio-proxy,websocket-proxy}.cer done restorecon -Rv /etc/pki systemctl restart httpd ovirt-engine ovirt-imageio-proxy ovirt-websocket-proxy.service
тупой вопрос: а почему не использовать их родную утилиту?
Alex
Она не умеет
Alex
Потому я статью и пишу
Alex
как подружить овирт и летсенкрипт
Max
она умеет с запроса пнуть сервис апи, и зарегить запрос.
Max
потом пингает твой сервер.
Max
если "файл-канарейка" найден, то сертификат разрешается. и тебе остается только положить файлы на нужное место.
Max
чё?
как чё.
Alex
не понял что ты написал, можно со ссылками?
Max
по-моему утила называется certbot. счас кину.
Alex
по-моему утила называется certbot. счас кину.
сертбот для получения сертификатов используется
Alex
а этот скрипт устанавливает сертификат полученный на бастион-хосте от летсенкрипт в овирт
Oleksandr
Где тут ансибл?..
Max
я понял теперь, что это все ради распаковки и копирования файлов, restoreконь и restart сервиса.
simplemice.eth
вы чатик с девопс чатом не путаете?
simplemice.eth
3й раз предупреждаю и последний
Oleksandr
Башопс
simplemice.eth
потом просто буду раздавать РО
Max
пардон. я только ответил на объяву про мопед.
Alex
Я почти идемпотентно на баше написал) я это на плейбук перепишу
Max
а 🛵 не мой.
Alex
вы чатик с девопс чатом не путаете?
Ща будет ансибл, я так накидал на баше побыстрому
simplemice.eth
башсибл тоже под запретом %)
Alex
башсибл тоже под запретом %)
Такого в правилах нет)
simplemice.eth
:/
Alex
Иногда(например для pacemaker) приходится использовать башсибл, потому что модуля нет, а писать его некогда
Alex
Приму pr для идемпотентности роли для pacemaker https://github.com/AlexGluck/alexgluck.pacemaker
Vlad
Иногда(например для pacemaker) приходится использовать башсибл, потому что модуля нет, а писать его некогда
Серьёзно есть время писать вот такое? ``` echo "{{ hostvars[item].ansible_default_ipv4.address }} {{ item }}" >> /etc/hosts ``` Может потратить время на чтение списка модулей и что они делают?
Vlad
Это костыль для докера
https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html
Alex
https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html
Это не работает, там есть этот таск
Alex
Копипаст чё то не сработал
Alex
https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html
https://github.com/AlexGluck/alexgluck.pacemaker/blob/master/tasks/main.yml#L33
Vlad
И зачем так делать?
Alex
И зачем так делать?
чтобы тесты проходили?
Vlad
Странное представление о тестах
Vlad
Ansible-lint конечно-же не используете.
Sergey
:/
Поправим.
Alex
Ansible-lint конечно-же не используете.
использую, в vscode потом молекулой прогоняю
Alex
Странное представление о тестах
Специально для вас поправил таск - name: Add hosts records lineinfile: path: "/etc/hosts" line: "{{ hostvars[item].ansible_default_ipv4.address }} {{ item }}" unsafe_writes: "{{ (molecule_test is defined ) | ternary(true, omit) }}" with_items: "{{ pacemaker_hosts | default(groups[pacemaker_cluster_group]) }}" tags: - config
Timur
default_ipv4_address работает далеко не во всех окружениях
Timur
Alex
default_ipv4_address работает далеко не во всех окружениях
если дополнительные интерфейсы являются дефолтными, то вы сами себе злобный буратино
Timur
при чем тут дефолтные интерфейсы?
Timur
Речь о том, что этот факт не всегда есть
Timur
тогда сети нет у вас
Есть, просто нужный адрес может быть не дефолтным
Timur
Например, в том же амазоне у инстансов есть внутренние и внешние ip
Timur
На разных интерфейсах