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 нету, к слову
Admin
Sergey
27.10.2018
13:10:05
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 через прокси работает чуть хуже, чем никак.
Google
ranebull
27.10.2018
13:44:21
Александр
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 объявлена