
Alex
26.10.2018
17:39:49
Коллеги, подскажите пожалуйста, у меня локально набор пакетов в папке лежит, некоторые пакеты зависят от других в этой папке. Как бы мне все их поставить за 1 проход таска?
- name: Install require packages
package:
name: "{{item.path}}"
state: present
with_items:
- "{{files_matched.files}}"
- {path: "cups-libs"}
- {path: "cairo"}

Nklya
26.10.2018
17:45:54
скопируй рсинком на хост и ставь уже там

Alex
26.10.2018
17:48:17
скопируй рсинком на хост и ставь уже там
Они уже на хосте, их 40 штук в папке. Если я юзаю таск выше, он отваливается на некоторых пакетах, потому что они должны быть установлены после каких то других из папки.

Марат
26.10.2018
17:50:53

Google

Alex
26.10.2018
17:51:05
ага
надо как то джоинить?

Марат
26.10.2018
17:51:20
https://docs.ansible.com/ansible/latest/modules/yum_module.html
name
A package name or package specifier with version, like name-1.0.
If a previous version is specified, the task also needs to turn allow_downgrade on. See the allow_downgrade documentation for caveats with downgrading packages.
When using state=latest, this can be '*' which means run yum -y update.
You can also pass a url or a local path to a rpm file (using state=present). To operate on several packages this can accept a comma separated string of packages or (as of 2.0) a list of packages.
последнее предложение
если yum конечно
в других описания нет, но возможно так же

Vadim
26.10.2018
17:55:28
https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#v2-7-1
JFYI в 2.7.1 пофиксили кучу багов и регрессий с переменными в ролях


Alex
26.10.2018
18:01:19
https://docs.ansible.com/ansible/latest/modules/yum_module.html
name
A package name or package specifier with version, like name-1.0.
If a previous version is specified, the task also needs to turn allow_downgrade on. See the allow_downgrade documentation for caveats with downgrading packages.
When using state=latest, this can be '*' which means run yum -y update.
You can also pass a url or a local path to a rpm file (using state=present). To operate on several packages this can accept a comma separated string of packages or (as of 2.0) a list of packages.
Не работает.
Вывод такой
TASK [Install require packages] *************************************************************************
failed: [localhost] (item=[u'/tmp/LibreOffice_6.1.2.1_Linux_x86-64_rpm/RPMS/*.rpm', u'cups-libs', u'cairo']) => {"changed": false, "item": ["/tmp/LibreOffice_6.1.2.1_Linux_x86-64_rpm/RPMS/*.rpm", "cups-libs", "cairo"], "msg": "No RPM file matching '/tmp/LibreOffice_6.1.2.1_Linux_x86-64_rpm/RPMS/*.rpm' found on system", "rc": 127, "results": ["No RPM file matching '/tmp/LibreOffice_6.1.2.1_Linux_x86-64_rpm/RPMS/*.rpm' found on system"]}
Таск, такой
- name: Install require packages
yum:
name: "{{item}}"
state: latest
with_items:
- "{{LibreOffice_unarchive_dir.files[0].path}}/RPMS/*"
- cups-libs
- cairo


Марат
26.10.2018
18:02:03
мдя
To operate on several packages this can accept a comma separated string of packages or (as of 2.0) a list of packages.
это разве так переводится?

Wom
26.10.2018
18:04:01
ну формально там есть comma separated

Марат
26.10.2018
18:04:26
тогда или факт собрать или захардкодить

Wom
26.10.2018
18:04:42
или shell

Марат
26.10.2018
18:04:45
ну а проще list

Google

Марат
26.10.2018
18:05:06
find_module поможет наверно

Alex
26.10.2018
18:05:33

Wom
26.10.2018
18:06:18

Alex
26.10.2018
18:06:54
У меня есть список словарей собранный find_module, в словаре ключ с путями к пакетам и ещё 2 имени пакета из репы. Как мне из этого набора сделать comma separated list в таске?

Wom
26.10.2018
18:07:10
combine?
set_fact

Alex
26.10.2018
18:09:49
set_fact
как дополнительная переменная поможет в вопросе?

Wom
26.10.2018
18:10:37

Alex
26.10.2018
18:11:59
"{{files_matched.files}} + [ {path: cups-libs}, {path: cairo} ]" Готово, дальше что?

Марат
26.10.2018
18:12:27

Alex
26.10.2018
18:13:33

Марат
26.10.2018
18:16:18
json_query

Alex
26.10.2018
18:17:26

Марат
26.10.2018
18:17:31
debug:
msg: "{{ domain_definition | json_query('domain.server[?cluster==cluster1].port') | join(', ') }}"
пример похожего
может ну его?)

Alex
26.10.2018
18:18:23
Незя, надо добить. Последний таск в плейбуке.

Wom
26.10.2018
18:30:18
s/добить/забить/

Alex
26.10.2018
18:35:26
Так, почти готово, через map выдирать надо и потом джоинить. Теперь расширение списка осталось сделать.
- name: Install require packages
package:
name: "{{files_matched.files + [ {path: cups-libs}, {path: cairo} ] | map(attribute='path') | join(',') }}"
state: present

Google

Alex
26.10.2018
18:35:32
Накостылял двумя тасками, пофиг. Всем пятница доны!

Terminator
27.10.2018
07:58:44
@leskinaleksey будет жить. Поприветствуем!
Anton Patsev будет жить. Поприветствуем!

Anton
27.10.2018
13:07:03
Вечер добрый. Подскажите пожалуйста как правильно указать environment ?
Код и пример сделал на Stackoverflow
https://stackoverflow.com/questions/53022158/how-set-2-environment-path-and-proxy-env-in-ansible-playbook

Sergey
27.10.2018
13:08:33
в extra_args любую фигню можно передать

Andrey
27.10.2018
13:08:42

bebebe
27.10.2018
13:09:05
environment:
FOO: BAR
BAR: FOO

Anton
27.10.2018
13:09:05
environment:
PATH: "some path"
environment: "{{ proxy_env }}"

Sergey
27.10.2018
13:09:06
ну и опять же если речь о конкретном venv - параметр "virtualenv"

Anton
27.10.2018
13:09:25
proxy_env - не имеет ключа

bebebe
27.10.2018
13:09:48
там environment перееопределяется через yaml жи

Sergey
27.10.2018
13:10:04
а ещё такого аргумента у модуля pip нету, к слову
https://docs.ansible.com/ansible/2.6/modules/pip_module.html
И гадать тут не любят, поэтому описание задачи в студию.

bebebe
27.10.2018
13:11:22

Anton
27.10.2018
13:11:30
сють задачи доделать работу kubespray через прокси
https://github.com/kubernetes-incubator/kubespray/pull/1412
вот этот PR переделываю

Sergey
27.10.2018
13:31:46
Pip через прокси работает чуть хуже, чем никак.

ranebull
27.10.2018
13:44:21

Google

Александр
27.10.2018
13:45:04

ranebull
27.10.2018
13:45:51


Anton
27.10.2018
15:40:41
подскажите кто может
https://github.com/patsevanton/kubespray/blob/master/roles/download/tasks/download_container.yml#L42
FAILED - RETRYING: container_download | Download containers if pull is required or told to always pull (all nodes) (1 retries left).
fatal: [host-kuber1]: FAILED! => {"attempts": 4, "changed": true, "cmd": ["/usr/bin/docker", "pull", "quay.io/calico/ctl:v3.1.3"], "delta": "0:00:00.086626", "end": "2018-10-27 18:37:41.350296", "msg": "non-zero return code", "rc": 1, "start": "2018-10-27 18:37:41.263670", "stderr": "Error response from daemon: Get https://quay.io/v2/: dial tcp 23.21.40.104:443: connect: connection refused", "stderr_lines": ["Error response from daemon: Get https://quay.io/v2/: dial tcp 23.21.40.104:443: connect: connection refused"], "stdout": "", "stdout_lines": []}
environment: "{{ proxy_env }}" указан - но он почему то не работает

Vadim
27.10.2018
15:47:11
proxy для докера надо устанавливать перед запуском демона

Anton
27.10.2018
15:56:08
https://github.com/patsevanton/kubespray/blob/master/roles/container-engine/docker/tasks/systemd.yml#L12
подскажите пожалуйста почему эта строка может не отрабатывать?
- name: Write docker proxy drop-in
template:
src: http-proxy.conf.j2
dest: /etc/systemd/system/docker.service.d/http-proxy.conf
notify: restart docker
when: http_proxy is defined or https_proxy is defined

⚓D
27.10.2018
15:57:49

Anton
27.10.2018
15:58:41
https://github.com/patsevanton/kubespray/blob/master/inventory/sample/group_vars/all/all.yml#L52
вот здесь указываю прокси
пакеты устанавливаются. pip устанавливает пакеты
правда в тасках установки пакетов есть
environment: "{{ proxy_env }}"
может и здесь нужно добавить environment: "{{ proxy_env }}" ?

⚓D
27.10.2018
16:02:46
Вопрос же в том, почему результат для when получается false?

Anton
27.10.2018
16:06:01
да сейчас попробую спасибо

⚓D
27.10.2018
16:07:16
Только если будете писать when: proxy_env.http_proxy is defined , хорошо бы убедиться, что proxy_env объявлена