
Ruslan
30.06.2018
19:42:31
роль хочется использовать для разных наборов машин, а так получается, что облом

Sergey
30.06.2018
19:43:57

Ruslan
30.06.2018
19:46:15
ок, как переформулировать задачу: есть группа машин, у них общий CA, но отдельные сертификаты сервера для каждой машины, надо деплоить это через одну роль (ок, разруливается на уровне инвентори), а потом потребуется сделать то же самое для другого CA и сертификатов

Nklya
30.06.2018
19:48:04
ну того чтобы сделать универсальную роль, нужно засунуть сертификат в переменные
Если вариантов не так много, можно в роли хранить несколько с разными именами

Google

Ruslan
30.06.2018
19:48:21
вариант с переменными неплох, но пока лениво копировать сертификаты в файлы, проще файлами, пока разрулил через copy ../../

Sergey
30.06.2018
19:48:38

Ruslan
30.06.2018
19:48:38
надо подумать короче

Sergey
30.06.2018
19:48:55
как certbot

Ruslan
30.06.2018
19:49:02

Vasiliy
30.06.2018
19:49:29
В переменной можно имя файла хранить
Можно копировать cp {{ machine_name }}*.pem
Вариантов куча. Надо понять - что человек хочет.

Ruslan
30.06.2018
19:50:17
я хочу универсальную роль, которая работает с сертификатами, привязанными к инвентори

Vasiliy
30.06.2018
19:51:28
инвентори какое ?
Алгоритм выкладки опиши.

Липоля Аймаксович
30.06.2018
19:52:35
Файлы хранить в в файлах роли, а переменную с именем сертификата в переменной инвентори файла

Vasiliy
30.06.2018
19:52:57
let's encrypt чтоль ?
Там копируй их с ноды, которая их обновляет и по ssh делай reload веб-серверу.

Липоля Аймаксович
30.06.2018
19:53:04
Через [machinegroup:vars]

Vasiliy
30.06.2018
19:53:52
и в чём проблема ?

Google

Ilya
30.06.2018
19:58:59
Роль может дергать сертификаты из хранилища в момент выполнения. И вот это "дергать" можно параметризовать через инвентарь. Например хранить серты в волте (хашикорповском), и дергать волт-модулем ансибля.
Либо дергать прямо из СА, если оно позволяет

Vasiliy
30.06.2018
20:02:04
ну да, проблема непонятна.
если вопросы остались - нужны подробности

Alex Milushev
30.06.2018
21:36:32

Павел
01.07.2018
06:27:36
Товарищи, а какой самый православный способ получения внешнего ip целевой машины?

?simplemice
01.07.2018
06:30:01
wget -O - -q icanhazip.com или curl ifconfig.me
ну а дальше в плейбук

Павел
01.07.2018
07:25:39
Я думал, что ipfy_facts?

Timur
01.07.2018
07:28:09

?simplemice
01.07.2018
07:28:34
для авс азуре да ipify_facts
а так через шелл для любых

Павел
01.07.2018
07:39:04

bebebe
01.07.2018
07:40:44

Павел
01.07.2018
07:41:26

bebebe
01.07.2018
07:41:51
Голубиное определение ойпи адреса

?simplemice
01.07.2018
08:00:01

Ruslan
01.07.2018
08:56:16

Dmitry
01.07.2018
14:40:00
curl ifconfig.me
сразу отдаст только ip

Google

Эдуард
01.07.2018
14:47:42
А нет, тупит сильно

Nklya
01.07.2018
14:48:45
ifconfig.co еще есть

Даниил
02.07.2018
09:16:18
господа, подскажите сеттинг, который делает вывод ошибок ансибла человекочитаемым
не могу вспомнить, как он называется
добавляется в ansible.cfg

Vadim
02.07.2018
09:17:14
stdout callback = yml

Даниил
02.07.2018
09:17:19
чтоб stderr не был в одну строку
спасибо

Vadim
02.07.2018
09:21:46

Даниил
02.07.2018
09:22:43
вот в таком виде, все правильно stdout_callback = yaml

Vadim
02.07.2018
09:23:31
алсо awx такое не поддерживает - https://docs.ansible.com/ansible-tower/latest/html/administration/tipsandtricks.html#using-callback-plugins-with-tower

Даниил
02.07.2018
09:23:36
лежит в директиве [defaults]
а, вот оно как
спасибо за инфо

Maksim
02.07.2018
10:44:35
Мечтаю переехать с awx на jenkins
убью много зайцев сразу

bebebe
02.07.2018
10:45:09

Maksim
02.07.2018
10:45:29
ну вот, как раз на новую работу выйду, буду делать

Google

Andrew
02.07.2018
10:45:33

Maksim
02.07.2018
10:45:54
ничем не плох, просто jenkins закрывает более одной задачи

Artem
02.07.2018
10:46:00
Шляпой ?

Vadim
02.07.2018
10:46:00
и чем дженкинс так хорош?

Maksim
02.07.2018
10:46:13
см.выше

bebebe
02.07.2018
10:46:45
как обычно.
ну и изначально можно построить красивый процесс CI/CD

Admin
ERROR: S client not available

Vadim
02.07.2018
10:49:36
ну и всякие дженкинсовские штучки типа "везде нужна ява"

bebebe
02.07.2018
10:50:44
в целом, немного не корректно сравнивать awx, и jenkins

Maksim
02.07.2018
10:55:06
мне надо строить CI, CD, поэтому awx будет лишним, будет лишь ansible для провижена
и деплоя

bebebe
02.07.2018
10:56:02
аминь.

Nataliia
02.07.2018
11:03:59
Всем, привет. Ткните носом где почитать или помогите, пожалуйста, разобраться. Есть вот такой вызов модуля get_url
- name: Download archive to server
get_url:
url: "{{ search.artifact.full_path }}"
dest: "{{ app_deploy_artifact_path }}/{{ search.artifact.name }}"
headers: "X-JFrog-Art-Api: {{ artifactory.api_key }}"
checksum: md5:{{ search.artifact.actual_md5 }}
timeout: "{{ fetch_artifact.timeout }}"
force: yes
register: fetch_artifact
until: fetch_artifact.status_code is defined and fetch_artifact.status_code == 200
retries: "{{ fetch_artifact.retries }}"
delay: "{{ fetch_artifact.delay }}"
when: search.artifact.remote
До добавления until все работало нормально. Сейчас при попытке скачать архив, который уже присутствует на сервере падает 'file already exists'. Но мне казалось что в этом случае из-за checksum с force скачивание архива должно скипаться, как написано в доке. Почему until портит картину?

bebebe
02.07.2018
11:10:03

Nataliia
02.07.2018
11:10:20
2.4.4

Kirill
02.07.2018
11:13:38
jenkins + zuul вообще очень вкусно

bebebe
02.07.2018
11:21:38

Google

Sergey
02.07.2018
13:35:23
в смысле - я умею читать доку, как звучит изначальная задача?


Nataliia
02.07.2018
13:37:32
Удаленность между сервером артифактори и сервером на который скачивается архив достаточная большая, возможно периодическое отваливание запроса по таймаута. Заказчик устанавливает кол-во попыток скачивания.

Vladislav
02.07.2018
13:41:45
на 3.7 питоне не заводили ansible?
я пока вижу, что привязка к python3.6 и на 3.7 ansible не ставится через pip

Gleb
02.07.2018
13:43:40

Vladislav
02.07.2018
13:44:07
хочу

Gleb
02.07.2018
13:44:47
хотя и по аватарке понятно что наркоман :D

Vladislav
02.07.2018
13:45:21
ок, а по теме есть что написать?

Gleb
02.07.2018
13:45:49

Vladislav
02.07.2018
13:46:00
уже обсудили
по писать в чат можно и в других флудильнях

Sergey
02.07.2018
13:47:00
уже обсудили
Ансибл на неподдерживаемых версиях питона = ССЗБ
нечего тут обсуждать, в общем-то

Nklya
02.07.2018
13:49:22
я бы продолжил до ансибл на третьем питоне = ССЗБ

Sergey
02.07.2018
13:50:23

Nataliia
02.07.2018
13:51:42

Nklya
02.07.2018
13:51:54
я знаю что умеет, но не думаю что настолько хорошо как со вторым.
плюс, что делать с комбинациями инфраструктуры с 2 и 3 питоном на хостах?


Nataliia
02.07.2018
13:53:50
а включите побольше дебага, что оказывается в fetch_artifact в первом проходе таски, при наличие файла на сервере?
И при наличии until, и при отсутствии fetch_artifact возвращает
ok: [group1-host] => {
"changed": false,
"dest": "/data/archive.zip",
"gid": 31861,
"group": "group1",
"invocation": {
"module_args": {
"attributes": null,
"backup": null,
"checksum": "md5:b4851d48c2a45d9d53116db039f630a4",
"client_cert": null,
"client_key": null,
"content": null,
"delimiter": null,
"dest": "/data/archive.zip",
"directory_mode": null,
"follow": false,
"force": false,
"force_basic_auth": false,
"group": null,
"headers": "X-JFrog-Art-Api: xxx",
"http_agent": "ansible-httpget",
"mode": null,
"owner": null,
"regexp": null,
"remote_src": null,
"selevel": null,
"serole": null,
"setype": null,
"seuser": null,
"sha256sum": "",
"src": null,
"timeout": 10,
"tmp_dest": null,
"unsafe_writes": null,
"url": "http://xxx.ru/archive.zip",
"url_password": null,
"url_username": null,
"use_proxy": true,
"validate_certs": true
}
},
"mode": "0664",
"msg": "file already exists",
"owner": "perf",
"size": 475190739,
"state": "file",
"uid": 31861,
"url": "http://xxx.ru/archive.zip"
Только в случае с until такой возврат интерпретируется как ошибка.


Sergey
02.07.2018
14:00:24
И при наличии until, и при отсутствии fetch_artifact возвращает
ok: [group1-host] => {
"changed": false,
"dest": "/data/archive.zip",
"gid": 31861,
"group": "group1",
"invocation": {
"module_args": {
"attributes": null,
"backup": null,
"checksum": "md5:b4851d48c2a45d9d53116db039f630a4",
"client_cert": null,
"client_key": null,
"content": null,
"delimiter": null,
"dest": "/data/archive.zip",
"directory_mode": null,
"follow": false,
"force": false,
"force_basic_auth": false,
"group": null,
"headers": "X-JFrog-Art-Api: xxx",
"http_agent": "ansible-httpget",
"mode": null,
"owner": null,
"regexp": null,
"remote_src": null,
"selevel": null,
"serole": null,
"setype": null,
"seuser": null,
"sha256sum": "",
"src": null,
"timeout": 10,
"tmp_dest": null,
"unsafe_writes": null,
"url": "http://xxx.ru/archive.zip",
"url_password": null,
"url_username": null,
"use_proxy": true,
"validate_certs": true
}
},
"mode": "0664",
"msg": "file already exists",
"owner": "perf",
"size": 475190739,
"state": "file",
"uid": 31861,
"url": "http://xxx.ru/archive.zip"
Только в случае с until такой возврат интерпретируется как ошибка.
----> "force": false