Записки молодого девопсера – Telegram
Записки молодого девопсера
153 subscribers
94 photos
7 files
623 links
Здесь выкладываются различные команды и решения проблем, с которыми приходится сталкиваться, а также интересные статьи и видео из мира IT.
Download Telegram
Разница между yum update и yum upgrade:
yum update - обновляет список установленных пакетов (если не указаны, то обновляет все имеющиеся в системе).
yum upgade - производит обновление пакетов, а также удаляет устаревшие пакеты (obsoletes packages).
В связи с этим, надо понимать, что в некоторых случаях yum upgrade может удалить пакеты, которые вы используете.
Из документации Ansible было непонятно, какую политику обновления использует модуль yum.
В исходном коде встретилась такая вот строчка:
- When using state=latest, this can be C('*') which means run C(yum -y update).
После запуска плейбука с обновлением всех пакетов было замечено, что вызываются 2 команды:
/usr/bin/yum -d 2 -y check-update
/usr/bin/yum -d 2 -y update
Где первая команда (с аргументом check-update) запрашивает список обновленных пакетов (если они есть, то возвращается код выхода 100, если таких пакетов нет - 0, если во время запроса списка пакетов произошла ошибка - код 1).
-d 2 - устанавливает значение debug-level в значение 2
Последняя команда выполняет обновление всех пакетов без удаления obsoletes-packages
UPDATE
По ходу поисков на просторах интернета выяснилось, что люди, которые использовали ранее Debian-like дистрибутивы переносят весь свой опыт в мир RHEL-like дистрибутивов. А затем в инструкциях встречаются вот такие конструкции:
yum update && yum update
Как видно - совершенно бессмысленные. В мире Debian-like дистрибутивах это выглядит вот так:
apt update && apt upgrade
Что вполне логично, так как
apt update получает информацию о пакетах из репозиториев, описанных в файле /etc/apt/sources.list (встречаются и отдельные файлы, которые размещают в директории /etc/apt/sources.list.d/
apt upgrade
устанавливает все доступные обновления, полученные после запуска команды выше.
P.S. Да, можно использовать apt вместо apt-get
Полезности из мира Gitlab
https://docs.gitlab.com/ce/ci/yaml/#onlychanges-and-exceptchanges
Параметр onlychanges позволяет запускать CI/CD процессы только в случаях, когда изменились конкретные файлы, либо группа файлов.
Простой пример работы этого параметра:
changes_feature_test:
noscript:
- ping -c4 8.8.8.8
- ./test.sh
only:
changes:
- test.sh
tags:
- changes_test
Здесь процессы CI/CD начинают запускаться только после изменения содержимого shell-скрипта test.sh
(Внимание! Изменение прав файла, например на 755, чтобы сделать его исполняемым, тоже считается изменением. Правда гитлаб в коммите показывает следующую запись:
File mode changed from 100644 to 100755)
Ansible-playbook для установки утилиты bat на RHEL-based дистрибутивы. Пакеты с данной утилитой пока никто не собирает, но на github есть готовые бинарники
- name: get bat latest version
block:
- shell: curl --silent "https://api.github.com/repos/sharkdp/bat/releases/latest" | grep -Po '"tag_name"':' "\K.*?(?=")' warn=false
register: latest_release
- get_url:
url: https://github.com/sharkdp/bat/releases/download/{{latest_release.stdout}}/bat-{{latest_release.stdout}}-x86_64-unknown-linux-musl.tar.gz
dest: /tmp
- unarchive:
src: bat-{{latest_release.stdout}}-x86_64-unknown-linux-musl.tar.gz
dest: /tmp
- copy:
src: /tmp/bat-{{latest_release.stdout}}-x86_64-unknown-linux-musl/
dest: /usr/local/bat/
mode: preserve
- lineinfile:
path: ~/.bashrc
line: "alias bat='/usr/local/bat/bat'"
insertafter: 'mv'
- find:
paths: /tmp
file_type: any
patterns: bat*
register: bat_files_delete
- file:
path: "{{ item.path }}"
state: absent
with_items: "{{ bat_files_delete.files }}"

UPDATE
Если вы используете Fedora, то у вас есть пакет bat в официальных репозиториях. Установить его можно командой
dnf install bat
📚 Hacking for the Holidays by No Starch Press.

Очередной книжный бандл доступен по вкусной цене. На этот раз по большей части для тех, кто увлекается вопросами секурити. 😉

https://www.humblebundle.com/books/hacking-for-the-holidays-books

#security #книга
Забавное поведение RPM.
На прошлой неделе не стал разбираться почему команда
rpm -qa *gitlab*
Ничего не возвращает на сервере с установленным гитлабом.
Сегодня добрался и выяснилось, что команда
rpm -qa | grep gitlab
выдает мне нужный пакет. И имеется предположение, что первая команда не выполнилась по причине того, что в директории, где я выполнял эту команду лежал файл, подходящий под регулярное выражение. И если перейти в другую директорию, например, /tmp, то все отрабатывает успешно. Гугл пока что ничего не сказал по этому поводу.
UPDATE
Задал этот вопрос в русскоязычном чате сообщества Fedora.
Все было банально - экранируем запрос, чтобы локальные файлы не влияли на выдачу.
Т.е.
rpm -qa "*gitlab*"
или
rpm -qa \*gitlab\*
При восстановление Gitlab из бэкапов можно получить ошибку
GRPC::Unavailable: 14:Connect Failed

Это означает, что сервис gitaly не запущен и проверить в логах, что с ним случилось.
В некоторых случаях сервису не хватает прав для директории /tmp
Awesome Docker resources and projects list
https://awesome-docker.netlify.com
Write down a command-line to see the help text that matches each argument
https://explainshell.com
Очевидно, но не сразу.
На домашнем ноутбуке у меня установлена Fedora Workstation (DE - Cinnamon).
И при поиске в меню по фразе tele почему-то первым совпадением был Skype, а не телеграм.
Оказалось, что сначала приоритет отдается полю Comment в описании приложения и через стандартный редактор не получилось поменять этот коментарий для своей учетной записи. Зато я нашел, где это задается глобально (в данной случае для приложения Skype) в файле /usr/share/applications/skypeforlinux.desktop с помощью утилиты crudini (её нужно установить - dnf install crudini):
1. Получаем значение ключа Comment в секции Desktop Entry
# crudini --get /usr/share/applications/skypeforlinux.desktop "Desktop Entry" "Comment"
Skype Internet Telephony
2. Меняем значение на Skype
# crudini --set /usr/share/applications/skypeforlinux.desktop "Desktop Entry" "Comment" "Skype"
# crudini --get /usr/share/applications/skypeforlinux.desktop "Desktop Entry" "Comment"
Skype
Либо можно поправить ручками в вашем любимом текстовом редакторе
Установка docker в Oracle Linux 7.
1. Установка при наличии сети
Включить репозитории ol7_latest, ol7_uekr и ol7_addons
через yum-config-manager, либо ручками редактированием файла /etc/yum.repos.d/public-yum-ol7.repo
Установка docker и запуск docker-демона выглядит следующим образом:
yum install docker-engine
systemctl start docker && systemctl enable docker
2. Установка при отсутствии сети (или доступа в Интернет)
Для установки необходимо установить 2 пакета (версии пакетов актуальны на 26.12.2018):
yum localinstall container-selinux-2.21-1.el7.noarch.rpm
yum localinstall docker-engine-18.03.1.ol-0.0.9.el7.x86_64.rpm
systemctl start docker && systemctl enable docker
set -e
Функция set -e используется в bash-скриптах и предназначена для выхода из скрипта, если на какой-то из команд получается не нулевой exit-code (код выхода).
Функция set +e меняет поведения на обратное (даже если код не нулевой, то выполнение скрипта не прекращается)
Как выглядит регулярное выражение для валидации e-mail RFC822 (http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html)
Изменение локальной ветки в git и пуш этой ветки в удаленный git-репозиторий
git branch -m new-branch
git push origin :old-branch new-branch
https://blog.github.com/2019-01-07-new-year-new-github/
Самая главная полезность для простых разработчиков:
For the first time, developers can use GitHub for their private projects with up to three collaborators per repository for free
Вывод содержимого файла без комментариев и пустых строк
grep -v '^#\|^$'  some_file
labbuildr allows on demand creation of lab environments on Vmware Workstation / Fusion
labbuildr deploys the folowing scenarios:
Exchange / Exchange DAG 2010,2013,2016
SQL / SQL Always on 2012,2014,2016
Hyper-V
Sharepoint
Standalone VM´s
Mastering ESXi Installs
Automating EMC ScaleIO Installs and any more.
labbuildr can be updated automatically.
labbuildr allows for fully customization of network environment vi a central configuration (labtools)
https://github.com/bottkars/labbuildr