суббота, 25 августа 2018 г.

Сделать файл выполняемым в Git

По-умолчанию Git не сохраняет права доступа на файлы, но есть возможность сделать отдельный файл исполняемым

$ git add script.sh

$ git ls-files --stage script.sh
100644 9f3f770bfcccad3d62d2e2d08b077469ef3722fa 0       script.sh

$ git update-index --chmod=+x script.sh

$ git ls-files --stage script.sh
100755 9f3f770bfcccad3d62d2e2d08b077469ef3722fa 0       script.sh

$ git commit -m 'Executable script'
[master (root-commit) 1cf26b3] Executable script
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 script.sh

среда, 22 августа 2018 г.

Монтирование EFS в кластере AWS ECS

Есть несколько способов смонтировать EFS в ECS кластере:
  • монтировать EFS на ноде кластера из cloud-init/puppet/chef/ansible/etc и делать bind mount в контейнер при старте (придется монтировать EFS на каждой ноде кластера где может запуститься контейнер)
  • монтировать EFS внутри контейнера контейнера (требует privileged для контейнера, т.к. монтирование файловой системы зависит от CAP_SYS_ADMIN)
  • использовать EFS в качестве docker volume (вроде появилось начиная с docker api 1.21, но я точно не уверен)
Хочу подробнее остановиться на последнем варианте, т.к. на мой взгляд он наиболее универсальный, но требует относительно свежий docker daemon и ecs-agent.

Нужно описать volume в TaskDefinition используя dockerVolumeConfiguration в секции Volumes[1]

"TaskDefinition": {
  "Type": "AWS::ECS::TaskDefinition",
  "Properties": {
    "Volumes": [
      {
        "name": "efs",
        "dockerVolumeConfiguration": {
          "scope": "task",
          "driver": "local",
          "driverOpts": {
            "type": "nfs",
            "device": ":/",
            "o": "addr=1.2.3.4,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"
          }
        }
      }
    ]
  }
}

Проблема заключается в том, что CloudFormation еще не поддерживает[2] параметр dockerVolumeConfiguration в TaskDefinition и попытка обновления стека завершается с ошибкой

18:56:27 UTC+0300UPDATE_FAILEDAWS::ECS::TaskDefinitionTaskDefinitionEncountered unsupported property dockerVolumeConfiguration

Чтоы это обойти можно создать TaskDefinition через консоль и передать ее идентификатор в стек в виде параметра.

  1. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-volumes.html
  2. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes.html
  3. https://docs.docker.com/engine/reference/commandline/volume_create/#driver-specific-options

четверг, 9 августа 2018 г.

Сломалась LDAP аутентификация после обновления GitLab

После обновления GitLab с версии 9.5.10 до 10.8.7 столкнулся с ошибкой при входе с использованием LDAP аутентификации

Could not authenticate you from Ldapmain because "Ssl connect returned=1 errno=0 state=error: certificate verify failed".

Чтобы решить эту проблему нужно отредактировать файл /etc/gitlab/gitlab.rb и добавить параметр ca_file в секции настроек LDAP

gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
  main:
    label: 'LDAP'
    ca_file: '/etc/ssl/certs/ldap-cacert.pem'

Чтобы настройки применились нужно переконфигурировать GitLab

$ sudo gitlab-ctl reconfigure

Помог этот совет с serverfault.com.

вторник, 31 июля 2018 г.

Иконка skype в трее Xfce

С некоторых пор иконка skype в трее Xfce стала выглядеть странно - уменьшилась в размерах и стала дублироваться.



Я не знаю из-за чего это произошло и проявляется ли в других окружениях, но глаза мозолит и решил исправить.

Нашел на форумах что можно задать значение переменной XDG_CURRENT_DESKTOP равное "Unity" и иконка приходит в норму. Чтобы изменение не потерялось при обновлении пакета skypeforlinux нужно скопировать файл skypeforlinux.desktop в домашнюю директорию и изменить копию

$ skypeforlinux --shutdown
$ mkdir -p ~/.local/share/applications/
$ cp /usr/share/applications/skypeforlinux.desktop ~/.local/share/applications/
$ sed -i -e 's@^Exec=/usr/bin/skypeforlinux %U$@Exec=env XDG_CURRENT_DESKTOP=Unity /usr/bin/skypeforlinux %U@' ~/.local/share/applications/skypeforlinux.desktop
$ xdg-open ~/.local/share/applications/skypeforlinux.desktop

Теперь иконка skype в трее выглядит нормально


четверг, 26 июля 2018 г.

Рекомендуемые настройки SSL от Mozilla

Нашел хороший генератор настроек SSL от Mozilla. В их wiki есть статья где расписаны три рекомендуемых профиля и возможные ограничения, связанные с их использованием.

Ну и еще раз продублирую ссылку на SSL сканер от Qualys.

суббота, 21 июля 2018 г.

Разблокировка iPod Classic

Дети покопались в настройках и случайно включили режим блокировки iPod


Если под рукой есть компьютер, то снять блокировку очень просто:
  • подключите iPod к компьютеру
  • откройте / смонтируйте его диск
  • если у вас Windows, то включите показ скрытых файлов
  • перейдите в директорию iPod_Control/device/
  • переименуйте файл _locked в unlock
  • отмонтируйте / безопасно извлеките iPod
После этого блокировка отключается.

Опробовано на iPod Video (пятое поколение), но возможно такой способ подходит для всех моделей iPod Classic и Nano.

вторник, 17 июля 2018 г.

Поддержка symlink для shared folders в VirtualBox

Есть виртуальная машина VirtualBox в которой установлен Debian Stretch и проброшена часть системного диска с рабочими файлами в виде Shared Folder которая называется Work. Но вот незадача - VirtualBox не дает создавать symlink'и в этой директории

$ cd /media/sf_Work
$ touch 1
$ ln -s 1 2
ln: failed to create symbolic link '2': Read-only file system

На serverfault нашел решение для этой проблемы

cd %ProgramFiles%\Oracle\VirtualBox

VBoxManage.exe setextradata debian VBoxInternal2/SharedFoldersEnableSymlinksCreate/Work 1

Перезапускаем виртуальную машину и VirtualBox GUI и пробуем создать symlink

$ cd /media/sf_Work
$ touch 1
$ ln -s 1 2
ln: failed to create symbolic link '2': Protocol error

Эта проблема решается запуском VirtualBox с правами администратора (кликая "Run as administrator" в контекстном меню ярлыка или установив это свойство в "Advanced" свойствах).

Теперь symlink'и создаются в shared folder Work без проблем

$ cd /media/sf_Work
$ touch 1
$ ln -s 1 2
$ ls -l 1 2
-rwxrwx--- 1 root vboxsf 0 Jul 17 17:02 1
lrwxrwx--- 1 root vboxsf 0 Jul 17 17:02 2 -> 1