Alexander
с тавером отлично бы сочетался
Alexander
там уже есть юзеры, процессы все эти
Alexander
сама админка
Aleksey
Рандек посмотри
Ievgen
+1 за рандек
Ievgen
аппрувов нет из коробки, но вот формы, кнопочки, параметризация - супер
Aleksey
я правда так и не осилил плагин для ансибла
Ievgen
мм, ну в целом там ничего особо такого, я его использую в режиме local а inventory делаю плагином для ec2
Ievgen
попробовал прикрутить ec2.py, пока еще размышляю
Ievgen
в принципе получилось, но оно ходит постоянно рефрешит, на количестве хостов > допустим 50 - 100 надо или разбивать на несколько независимых inventory или мириться с тем что данные могут быть устаревшими
Aleksey
ну а у меня есть консул. и я бы хотел интеграцию для тегов но она там через одно место
Ievgen
мы еще пока не настолько присунули консулу, чтобы исполъзовать в качестве inventory
Ievgen
первоисточник все же ec2
Alexander
кстати, к вопросу про директории
к примеру, нужно убедиться, что директория существует
- file:
path: /some/directory/123
state: directory
mode: 0775
recurse: yes
что ожидаю:
он создаст /some если её нет, потом он создаст /some/directory если её нет, и, наконец, он создаст /some/directory/123, если её нет
что фактически я вижу: он обнаруживает внутри /some/directory/123 некую директорию data, на которую у него нет прав (она с другим владельцем) и падает с ошибкой
"exception": "Traceback (most recent call last):\n File \"/tmp/ansible_i9yk8vtw/ansible_module_file.py\", line 474, in <module>\n main()\n File \"/tmp/ansible_i9yk8vtw/ansible_module_file.py\", line 351, in main\n changed |= recursive_set_attributes(module, to_bytes(file_args['path'], errors='surrogate_or_strict'), follow, file_args)\n File \"/tmp/ansible_i9yk8vtw/ansible_module_file.py\", line 163, in recursive_set_attributes\n changed |= module.set_fs_attributes_if_different(tmp_file_args, changed, expand=False)\n File \"/tmp/ansible_i9yk8vtw/ansible_modlib.zip/ansible/module_utils/basic.py\", line 1473, in set_fs_attributes_if_different\n File \"/tmp/ansible_i9yk8vtw/ansible_modlib.zip/ansible/module_utils/basic.py\", line 1247, in set_mode_if_different\nPermissionError: [Errno 1] Operation not permitted: b'/some/directory/123/data'\n",
Alexander
вопрос: а кто ему вообще разрешал внутрь 123 лезть и читать что-то там? если 123 существует, то работа сделана и не нужно больше ничего проверять там
я ожидал, что это будет alias команды mkdir -p /some/directory/123
Alexander
это такой кривой модуль или это я что-то не так делаю с ним?
Alexander
под recurse: yes я понимаю “он рекурсивно создаст недостающие директории и поставит на них права”, а не … + рекурсивно поставит права на все вложенные поддиректории
Bogdan (SirEdvin)
Оно же ещё пытается поменять права всему внутри. Вам как раз не нужно recurse в описанном кейсе.
Bogdan (SirEdvin)
За создание всего в пути отвечает вроде другой параметр и по умолчанию оно там и работает, если не ошибаюсь.
Alexander
мне нравится, что он готов рекурсивно поставить права, только мне хочется рекурсивно вверх, к корню, а не во все стороны
Alexander
создавать вышестоящие он будет всегда когда указана state: directory
Bogdan (SirEdvin)
Хм, кажется, так не получится ( только если with_items
Anatoly
чтобы убедится есть ли директория, не проще ли воспользоваться stat ?
Nklya
Там решается ещё странная задача не пустая от папка
Anatoly
для этого есть find
Alex
Alexander
Alexander
я думал, оно сделает mkdir -p /dir и только на эту /dir и на все вышестоящие поставит права
Alexander
- file:
path: /some/directory/123
state: directory
mode: 0775
если оставить вот так, то 0775 будут поставлены только на 123, но не на вышестоящие, правильно?
Anatoly
ппц
Artem
Alexander
не понял вопрос
Alexander
допустим, нет директорий, он их делает, в данном случае он сделает все три, но права 0775 поставит только на последнюю, так?
Alexander
это немного неочевидно просто)
Evgenii
Это очевидно, вы когда делаете
mkdir -p /dir/124
, а потом
chmod 0775 /dir/124
у вас же права только на конечный каталог выставляются !
Alexander
но данный код выше выглядит как 1 команда, а не 2 и кажется немного странным, что первая часть (создание директорий) применима ко всему пути от корня до указанной директории, а вторая часть (права доступа) только к последней директории
Alexander
это больше про юзабилити
Александр
Alexander
If directory, all immediate subdirectories will be created if they do not exist, since 1.7 they will be created with the supplied permissions.
Alexander
во, оказывается он будет ставить эти права на все директории, если версия 1.7+
Alexander
я критикую только юзабилити, работа модуля не очевидна до тех пор, пока не залезешь в документацию
Womchik
ну не в исходники же
Alexander
ну да, могло быть хуже 🙂
Pavel
Добрый день. Есть ли у кого опыт управления виндовыми серверами через ансибл с использованием credssp. интересует момент, как шифруются данные в процессе первого хопа?
на просторах есть такое описание, а как дело обстоит если вместо первой машины ансибл?
Pavel
Aleksey
о оказывается как можно
# ansible-inventory -i ~/Development/playbooks/inventory/prod.aws_ec2.yml --graph
@all:
|--@aws_ec2_instance_type_t2_micro:
| |--ec2-5x-xx-x-xxx.us-west-2.compute.amazonaws.com
|--@aws_ec2_tag_value_blogger:
| |--ec2-5x-xx-x-xxx.us-west-2.compute.amazonaws.com
|--@ungrouped:
Ilia
Eduard
Ребятки, а как взять енв JAVA_HOME с того юзера, к которому я подключаюсь в плейбуке?
Eduard
---
- hosts: server
remote_user: aaaaa
become: yes
Eduard
точнее даже в енваеронменте этой переменной нет, она там появитсяесли перезапустить bash
John
подскажите как правильно написать stage test в файле https://pastebin.com/b67xvvgA ?
сейчас валится в ошибку:
ERROR! The requested handler 'restart zabbix agent' was not found in either the main handlers list nor in the listening handlers list
ERROR: Job failed: exit code 1
при этом если "пропустить" стейдж тест, то стейдж деплой проходит на ура!
John
Ну и очевидно что проблема находится где-то в этой стадии, потому что хэндлер рестарт забикс агент не может отработать, потому что агента на машине еще нет.
Bogdan (SirEdvin)
Оно вроде пишет, что именно такого хендлера нет. Он точно есть (глупый вопрос)?
Bogdan (SirEdvin)
Стоит учесть, что это еще может быть баг в check mode. Они где-то в 2.2 поломали docker_container в check mode и все)
John
Bogdan (SirEdvin)
Может кто-то решил, что для check mode можно хендлеры не подгружатЬ(
John
Как это определить и обойти проблему?
Roman
код скриншотом норм...
а по делу - это просто task, надо пометить его как handler
Roman
а, увидел путь
Nklya
чек моде много где обсирается
Bogdan (SirEdvin)
Можно поигратся с версиями ansible, попробовать использовать какой-то костыль именно для check mode, может что-то такое есть. Ну и отказатся от check mode в дальнейшем( Если вам для проверки того, что синтаксис описан правильно, то можно просто прикрутить ansible-lint
Bogdan (SirEdvin)
Если нужно именно тестирования, советую попробовать https://github.com/metacloud/molecule
Nklya
Да, чек мод можно обложить подпорками
Nklya
И тестировать с его помощью - странное мероприятие
Roman
а эта роль "common" вообще подгружается?
зачем выкладывать код .gitlab-ci.yml когда надо выкладывать код плейбука?
John
я могу выложить весь код, но не работает у меня именно стадия тест. СЕйчас выложу, если оно поможет решить задачку
John
https://pastebin.com/b67xvvgA Ниже по тексту разметил и содеожимой файлов.
John
таски, хендлеры, файлы нннада?
Nklya
2018 год, код на пастебине))
John
а где нынче модно?
Nklya
гисты для снипетов
Aleksey
замени на goss или rolespec или specinfra
Aleksey
парням из ансибла должно быть стыдно за чек
John
то есть срока - ansible-playbook —vault-password-file=/tmp/.vault_pass -i .deploy/serverlist —check .deploy/site.yml — касячная?
погуглить надо ansible goss / rolespec / specinfra ?
Nklya
Aleksey
подход к тестам с использованим --check не работает.
Aleksey
имеет смысл не использовать такой подход
John
ansible-playbook $SITE —syntax-check — такой подход более правильный?