Tag: sysadmin

16.11.2022

Имам страхотни колеги. С това ще започна и свърша увода си. Един от колегите с които си говорим ежедневно спомена, че в последната версия на RouterOS има native support на docker, което е fucking mindblowing. С native support можете да си вземете един Mikrotik hAP lite за 50-60 лв и на него да си сложите, пак казвам, съвсем native, без нужда от префлаш, опасност от brick-ване и подобни приключения, един piHole с който да си филтрирате рекламите в youtube на телевизора и телефоните, например. Или да си защитите homelab-а с някакъв читав firewall или пък да си сложите един wireguard и си имате VPN.

Случая с моя Mikrotik, който събира прах по рафтовете е, че е старичък. Всъщност толкова стар, че wireless-а му работи само на 2.4GHz, а LAN портовете му на 100mbps. Реших все пак да опитам да ъпдейтна една major версия нагоре (от 6.х на 7.х) да видим дали ще се поддържа и о, чудо – ъпдейта мина супер flowless. Браво на Mikrotik, че си запазват поддръжката на ОS-а дори и при стари устройства.

Ако и на вас ви е интересно как стана магията всъщност беше супер лесно. Първо си ресетнах рутера като при изваден захранващ кабел натиснах reset бутона, след това сложих кабела и изчаках да започне да мига лампичката на USR. След това логин с admin без парола и отгоре в дясно, където са Quick Setup, WebFig и Terminal избрах Terminal (може и по сериен порт или ссх, но web е удобно ако човек иска да свърши нещо много бързо и не му се занимава със сертификати и подобни.

След това изпълних следните команди:


[admin@MikroTik] > system check-installation  

  status: installation is ok

[admin@MikroTik] > system package update set channel=upgrade 

[admin@MikroTik] > system package update check-for-updates  

            channel: upgrade

  installed-version: 6.49.6

     latest-version: 7.6

             status: New version is available

[admin@MikroTik] > system package update download

            channel: upgrade

  installed-version: 6.49.6

     latest-version: 7.6

             status: Downloaded, please reboot router to upgrade it

[admin@MikroTik] > system reboot 

Reboot, yes? [y/N]: Y

След успешен ъйдейт (логото горе в ляво ще ви покаже текущата весия) можем да разрешим и контейнерите. Имайте предвид, че за да направите това ви е нужен физически достъп до рутера, защото след изпълняване на долната команда трябва да го рестартирате. Може да ви е странно, но това е добра валидация, че собственика на рутера иска да разреши контейнерите (които са огромен security hole), а не някой, който е налучкал credentials.

[admin@MikroTik] > /system/device-mode/update container=yes  update: please activate by turning power off or pressing reset or mode button in 4m49s -- [Q quit|D dump|C-z pause]

Веднъж разрешени можете да започвате да си играете с контейнерите. Повече информация и настройка (networking, storage, etc) можете да прочетете тук – https://help.mikrotik.com/docs/display/ROS/Container

aws zsh autocomplete

Един бърз writeup как да си подкарате безспорно (безпорно?) мегаудобството aws cli completition (тоест като напишете aws s3 l да ви покаже всички коменди в този namespace) под macos. Как да го инсталирате можете да прочетете тук.
В документацията на aws го има описано в повече детайли, но meat-а е само да добавите в .zshrc следните редове:

# Path to aws_completer
export PATH=/usr/local/bin/:$PATH

autoload bashcompinit && bashcompinit
autoload -Uz compinit && compinit
complete -C '/opt/homebrew/bin/aws_completer' aws

След това за да избегнем стъпката с logout или рестарт можем просто да презаредим файла наново (един хубав плюс е и това, че ако нещо не сме paste-нали правилно или пътят към aws_completer-а е грешен ще получим и съответното съобщение и ще ни спести малко време вместо да рестартираме при всяка промяна да речем):

source ~/.zshrc

Сега е време за тест, да опитаме да изкараме списък с всички ec2 instances (без значение от state-а им):

aws ec2 describe-instances --output json | jq

Малко е трудно да направя демо на това, но като напишете aws ec2 des[TAB] и ще ви покаже всички възможни опции. След като изберете нещо конкретно можете да продължите със следващия параметър, в случая –output. Неудобното е, че не suggest-ва и опциите по параметрите (в случая те са json, table, yaml-stream, text, yaml), което приемам за неудобство, но и разбирам, че не би работило това навсякъде (представете си autocomplete-а да прави requests към вашите ресурси (дай всички ec2 инстанции, после дай всички тагове и т.н.). Би било епично, но не виждам това да бъде възможно скоро време. Та ако имате инсталиран jq бихте видели output с всички параметри по EC2 инстанцията (които са десетки). За по-лесна визуализация можете да използвате –query параметъра и да изкарате нещо подобно:

aws ec2 describe-instances \
--query "Reservations[*].{ \
OwnerID:OwnerId, \
IP:Instances[0].PublicIpAddress, \
InstanceID:Instances[0].InstanceId, \
AvailabilityZone:Instances[0].Placement.AvailabilityZone, \
InstanceState:Instances[0].State.Name, \
KEY:Instances[0].KeyName, \
VPC:Instances[0].VpcId, \
InstanceType:Instances[0].InstanceType \
}" --output json | jq

И съответния output:

[
{
"OwnerID": "255875099999",
"IP": null,
"InstanceID": "i-074db48e5a4a4a4a4",
"AvailabilityZone": "eu-west-1a",
"InstanceState": "stopped",
"KEY": "nedko",
"VPC": "vpc-0cb7fb97b97b97b97",
"InstanceType": "t3.micro"
}
]

–query е мощно средство ако искате да автоматизирате през aws cli или искате да дебъгвате нещо определено и по ред причини не използвате AWS CloudWatch да речем. Аз например имам един gistс няколко craft-нати spell-а за различни кейсове, които са ми били нужни през годините и когато имате 20-30-40 инстанции (или ресурса, тук пиша в контекста на EC2, но cli console-а може да се използва практически навсякъде) може да ви улесни живота с много.

04.04.2018

Вчера излезе WordPress 4.9.5.

А Speedy са хомосексуалисти – имат гениалния план за изпращане на пратки за 2 дни. И пратката идва на следващия ден, стои ЕДИН ДЕН в техния склад и на следващия ти я носят.

 

In other news:

  • Оказа се, че Chrome сканира локалните файлове. Повече информация – в статията;
  • Жлъч говори пред chronicle.bg;
  • Ahrefs правят един анализ на над 170 милиона сайта и ни показват малко статистики за тези, които използват машините ни да копаят криптовалути. Най-големия играч в това отношение е coin-hive, който води класацията с почти 94%. Ако се загледаме в списъка с топ 20 сайта две неща правят впечатление:
  • Side note към горната точка – можете да блокирате съвсем успешно тези JS maining scripts с uBlock или AdBlock;
  • Понеже ще сменям скоро гумите на Ситроена и потърсих малко ревюта за летни гуми. Та ако решите – списъка на ADAC за 2016 (не намерих за 2017) за 185/65/15 можете да видите тук.

03.04.2018

Поръчах си Polar V650 и нямам търпение да го тествам! Ще пиша моите наблюдения по-натам.

In other news:

 

Преди няколко години попаднах на фотограф, който заснима и разказва историята на жена си, която страда от рак на гърдата. Ся такива разкази ще кажете, че са лигня, че натоварват излишно, но вижте света света на Angelo Merendino и разказа му за една любов, която не умира. Самия той говори на TedX и разказите му са пълни с любов. Та да не забравяме за хората около нас и че не всичко е вечно, както си мислихме като деца.

 

И последно за днес, цитат на деня от Дийкстра – “Selecting a tool first and then trying to fit it into an existing software development and testing process is a bit like buying a horse and then realizing you live in an apartment on the twentieth story of a Manhattan skyscraper: probably not such a good idea.”

02.04.2018

Целия уикенд мина в почивка, разходка до Балчик за по една супа и да ни навали дъжда и четене.

In other news, освен, че се подготвям за QA: Challenge Accepted 4.0:

Решението на един стар проблем

На marvin живеят няколко WordPress-а, но и с него влача няколко мои стари проекти. Един от тях скоро ще стане на 9 години. И понеже живеят на Joomla 1.5, която практически е невъзможно (варианти има, но безплатните не работят, а за платени не смятам, че искам) да се ъпгрейдне към latest. За това nginx-а ми работи с php-fpm, който търкаля две версии на PHP – 5.х и 7.х. И понеже първата е крайно архаична взех решението старите сайтове да ги разкарам напълно. Така или иначе нямам никаква полза от тях.

И вчера вдигнах още един VPS и започнах да конфигурирам наново nginx/php-fpm/etc. Оказа се, че съм позабравил част от configuration flow-а и седнах да помисля какво и как да направя. Най-накрая стигнах до решението, че вместо да си блъскам главата ще инсталирам един стар LTS на Ubuntu в който се поддържа PHP 5.x и всичко тръгна от раз.

Тенденцията ще е да разкарам всичките си клиенти (в големи кавички, таксите им са малко над цените на домейна) и да мина най-накрая на latest and greatest без да се занимавам с излишни глупости.

 

И така на marvin ще се освободи още малко място така, че ако някой (с предимство са студенти/ученици/преподаватели) има нужда да хостне нещо може да се възползва напълно безплатно.

09.12.2017

Днес е малко време за четене и спокойствие. И разходка!

Не можах да прочета много, но излязохме на свеж въздух в южен парк, пихме по една Коста и се прибрахме. Носих голямата на нещо като раница, скачах и беснях като изтърван. Липсваше ми студения въздух и разходките.

Вечерта започнах да се подготвям за миграцията на marvin към php-fpm (не с manually build PHP (и при това две – едно антично и едно latest and greatest)), Никото ми представи няколко много вълнуващи идеи и конфигурации за nginx-а.
Плана е да deploy-на наново nginx, php-fpm и да пренапиша изцяло vhost-овете. Освен това сега използвам letsencrypt за … да – да генерирам сертификати за Let’s Encrypt. Ще мигрирам на certbot.

Тези промени ще подобрят:

  • Работата на marvin като цяло;
  • Много по-леката конфигурация на nginx, очаквам скоростта на блога и останалите сайтове да се качи значително;
  • Всичко, което носи PHP 7.2 и най-вече сигурност и скорост;
  • Сигурността трябва да се повиши (имам някои проблеми си правата и потребителите, които ще бъдат разрешени с деплоя на новия nginix);
  • Ще науча много за nginx, конфигурацията му и работата с vhosts;
  • Ще разкарам всичките php-fpm глупости – в момента търкалям PHP 5.3 (което е свръх-антично) и PHP 7.0.3. Накрая ще стане само един (колко крайно прозвуча това :D) – 7.2.

 

In other news:

01.12.2017 – Linux Journal shuts down

Едно от най-големите списания за Linux и Open Source спира изданията си от днес. Първото издание на списанието е от 1994 година и по техни думи е с едно от най-силните микро общества фокусирани в open source-а. Последното печатно издание е от 2011 година, но портала остава популярен и до днес.
Финалната статия на Kyle Rankin повдига няколко основни въпроса относно open source, linux и идеята, която стои зад тях – свобода, прозрачност и гъвкавост.

So long and thanks for all the bash, Linux Journal!

Мина Zara Code Week 2017

Мина втория ми за годината Code Week този път в Стара Загора само няколко седмици след Code Week Varna 2017.

Бях поканен от Венко Добрев, който е от ония суперактивни хора, които искат да правят света около себе си по-добър и не мрънкат, а действат.  И понеже е и скромен ще опиша аз с какво се занимава – беше управител на Beehive за година и половина, два пъти е организирал Code Week Варна (като веднъж бях сред лекторите там), два пъти в Стара Загора, два Startup Weekend-а, бил е един от организаторите на TEDxStaraZagora, помага на брутално якия coworking space ZaraLab (Венко, ако четеш това прати малко снимки да покажем на хората колко яко е местенцето). Освен това започна нова образователна инициатива за мотивация на ученици и отделно младежи в неравностойно положение – “Аз и моят успех”. Опита се да направи нещата по-добри като работеше в община Стара Загора като младши специалист в отдел спорт, туризъм и младежки дейности и беше част от екипа писал кандидатурата за Европейски град на спорта 2017, която градът спечели. Сега работи като експерт в Агенция за регионално икономическо развитие – Стара Загора по два международни проекта с колегите – единият за иновации в МСП в селските райони, а другият за зелени обществени поръчки. Сигурно има и други неща, които пропускам.

Та – той беше една от причините да пропътуваме 300 км. Другата бяха останалите лектори, които бяха епични копелета, а на трето, но изобщо не на последно място – хората, които щяхме да срещнем там.

Тръгнахме в Събота, 21 Октомври от Варна и за съжление изтървахме откриването и голяма част от лекцията на Петър ПетровAndroid between Java and Kotlin“. Това, което видях беше интересно и сигурно много практично за Android devs. Лекцията беше много chill, както и повечето от лекциите от двата дни. За Пешо хубаво или нищо! Дори вече не помня от къде се познаваме, но като го представям на някого обикновено споменавам, че първо се е научил да свири на гъдулка (ей, винаги съм си мислил, че е гайда, деба!) и после да програмира.

Последва може би най-епичната лекция от събитието с най-епичния лектор – Oрлин Димитров, който тръгна да говори за “Свързаност на елементите на роботизираните системи“, но след десетата минута и зададени 5 въпроса смени темата и изкара на freestyle почти два часа пълни с хардуер и софтуер и хумор, а в края залата беше залята от мощната вълна ентусиазъм, която Орлин хвърля винаги, когато говори пред хора. Той е и един от виновниците да се запаля по микроконтролите последните седмици. (Орлине – ти ще отговаряш пред Златина защо съм си дал половината заплата за контролери!)

Последва почивка и след това дойде темата на Яна Славчева за чат ботовете, която не слушах много, защото си подготвях моята лекция и среда за изпълняването на тестовете. Тук нямам какво повече да напиша.

ИТ-ПОП-ИДОЛА Михаил Дучев известен сред своите приятели, колеги и врагове като Дучев, още по-известен като грамар-нацито на Интернета, бъг хънтъра на себеподобни, човека, който чупи всичко по пътя си и т.н. и т.н. Та той говори за Xamarin като се посмяхме, показа някои интересни неща и беше достойно (Дучев за 3 минути намери eastern-egg-а, браво :D) закриване на първия ден на Zara Code Week 2017.
Останахме да спим в Митака (Митак №2 всъщност), а преди това се събрахме на бърза и културна вечеря на местна кръчма (на която забравих името). Та там салатите бяха два типа – от 500 и от 1000 гр. Със Златина успяхме да смачкаме една 500 грамова с малко зор.
След като се правихме на културни за около 12 минути някой започна с първия виц и така до полунощ минахме от тъпи вицове, които всеки знае до най-дълбоките дебри на черния хумор. Беше абсолютно епично и още повече да говориш с такива хора, които имат толкова много неща да споделят (и хумора е само малка част от тях).

Прибрахме се и легнахме. На следващия ден аз бях с откриващата лекция.

Станахме в 7 и към 8:00 се замъкнахме в бизнес сградата в която щеше да се проведе събитието. Поръчахме по едно кафе и направих финални щрихи (тоест си донаписах презентацията :D) на презентацията (баси тъпото повторение), хората започнаха да се нижат един по един и в 10:30-10:40 излязох да говоря аз.

Минах набързо през основните неща, които казвам на лекциите си и се насочих към темата за сигурност. Разказах в известни детайли как да направим анализ на някакъв уеб ресурс, който в случая беше моя блог (не ми се искаше пак да чупим общинско/държавно on the fly), разказах за DVWA и накрая пуснах един dictionary attack към блога ми. Разказах малко за Google Dorks, a накрая имаше и малко performance testing с jMeter, за който не остана много време, че вече бях направил почти два часа.

Имаше доста дискусии и въпроси и се получи много cool цялата работа. Дори май бях и полезен.

След мен излезе Димитър Костов за да говори за Mobile scaffolding. Лекцията беше супер полезна и интересна, разказа доста неща и най-накрая научих какво е scaffolding. Също така беше и единствения лектор, който излезе и започна да говори за това, което прави от самото начало така, че да бъде разбран добре и от хора, които нямат никакъв опит в бранша. Получи се добра лекция.
Решихме след него да си ходим със Злати, но се оказа, че Митака и Тошко са към Варна и останахме за предпоследната лекция на Тодор Янков – “Интро в JavaScript”. Презентацията му беше web based с интеграции и най-вече – code snippet editor директно в нея.

Разказа ни за JS, react и направи един съвсем лек проект (взимаше JSON данни от weather provider и ги показваше на екрана). Имаше и супер много въпроси, дискусии и показа завидни познания по linux/zsh/vim.
Тръгнахме като ми беше терсене, че няма да чуем последната лекция на нашия домакин – Димитър Стефанов, който е backend developer в Big Mustache Game говори за “Grimm side of programming”. Самия той се занимава от безброй много години със C# .NET и MSSQL и разказа за C#, релационните база данни и концепцията клиент/сървър (това ми беше преразказано от Венко като каза, че лекцията е била доста добра).

 

Снимки – скоро.

How to enable friendly URL’s for Joomla using nginx

Когато преместих вече античния nasam.be на marvin имах един основен проблем свързан с прехода между apache2 и nginx и това беше, че nginx не поддържа .htaccess (повече можете да прочетете тук и тук). Там (почти) всичко е организирано в sites-avialable/ профила на сайта, който хоствам и грозните линкове, които Joomla генерира (от типа на https://nasam.be/index.php?option=com_content&view=article&id=183:qa-test-types&catid=53:software-testing&Itemid=167) с един ред и един рестарт станаха по-прилични (https://nasam.be/kompyutarni/software-testing/qa-test-types.html)

Промяната е в /etc/nginx/sites-avialable/project_name:

location / {
 try_files $uri $uri/ /index.php?$args;
 }

Или добавяме в основната location / {} директива точно преди затварящата къдрава скоба следния ред:

 try_files $uri $uri/ /index.php?$args;

Следва рестарт на nginx, сменяне на настройките в Joomla да се използва mod_rewrite и това е :)

 

Искам да отбележа, че това не е специфично Joomla! или WordPress решение, а универсално. Ако имате каквато и да е система, която използва rewrite на линковете това решение би трябвало да ви свърши работа.