
Антон
11.09.2018
08:34:58
а дальше как нравится

Виктор
11.09.2018
08:35:07
?

terry
11.09.2018
08:35:13

Google

Антон
11.09.2018
08:35:20
)
вот тут почитай https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

Amigo
11.09.2018
08:36:07
Попробуйте обявить переменную UserName со значением для одной группы хостов root для другой admin а в playbook user: {{UserName}}

Sergey
11.09.2018
08:40:58


Alexey
11.09.2018
10:04:20
Кто-нибудь знает почему Ansible не выводит stdout при работе модуля shell для группы элементов и как это можно победить?
Для одного хоста/пользователя работает корректно:
- name: Autodeploy - Get PID
shell: ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'
register: cr_mgmt_init_pid
Для группы пользователей не работает:
- name: Autodeploy - Get PID
become: true
become_user: "{{item.name}}"
shell: ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'
args:
executable: /bin/bash
register: cr_mgmt_init_pid
with_items:
- "{{cr_users}}"
Debug говорит следующее:
{
"cr_mgmt_init_pid": {
"changed": true,
"msg": "All items completed",
"results": [
{
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": true,
"cmd": "ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'",
"delta": "0:00:00.020574",
"end": "2018-09-11 12:01:57.732854",
"invocation": {
"module_args": {
"_raw_params": "ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'",
"_uses_shell": true,
"chdir": null,
"creates": null,
"executable": "/bin/bash",
"removes": null,
"warn": true
}
},
"item": {
"group": "xxx",
"groups": "xxx",
"name": "yyy",
"password": "xxxyyy"
},
"rc": 0,
"start": "2018-09-11 12:01:57.712280",
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
},


ShadoWalkeR
11.09.2018
10:07:57
Господа. Хотите творческий вопрос?)
В одном месте я делаю так:
set_fact: ext_arr="[ 'a','b','c' ]"
В другом месте таски я хочу наимпортировать в этот массив из файлов (так надо) переменных и получить чтото вроде:
ext_arr="[ 'a':{name: "a", int_arr=["1","2"]},'b':{name: "b", int_arr=["1","3"]},'c':{name: "c", int_arr=["7"]} ]"
Загрузку я реализовал. Как мне переприсвоить ключи в ext_arr?


Kirill
11.09.2018
10:47:47
Господа. Хотите творческий вопрос?)
В одном месте я делаю так:
set_fact: ext_arr="[ 'a','b','c' ]"
В другом месте таски я хочу наимпортировать в этот массив из файлов (так надо) переменных и получить чтото вроде:
ext_arr="[ 'a':{name: "a", int_arr=["1","2"]},'b':{name: "b", int_arr=["1","3"]},'c':{name: "c", int_arr=["7"]} ]"
Загрузку я реализовал. Как мне переприсвоить ключи в ext_arr?
Вроде так можно:
- set_fact:
ext_arr[item.name]: "{{ item }}"
with_items: list_of_dicts_to_load
Но вообще, я бы сначала сформировал какую-нибудь json-ину снаружи, а потом целиком её загрузил через from_json.
upd: поправил

ShadoWalkeR
11.09.2018
10:58:36
Проблема в том, что как раз надо из нескольких файлов собрать один
Имена меняются

Sergey
11.09.2018
11:01:03

Udjin
11.09.2018
11:01:13

ShadoWalkeR
11.09.2018
11:02:23
Я пока что выгружаю содержимое файла во временную переменную и потом её содержимое с именем файла хочу в сгенерированный словарь добавить

Sergey
11.09.2018
11:02:33

Google

ShadoWalkeR
11.09.2018
11:02:34
И вот на последнем шаге проблема
Пока что нагуглилось такое:
ext_arr: "{{ ext_arr|combine({item, tmp_arr}) }}"
но для первого прохода (когда ext_arr пуст) получаю:
{"msg": "|combine expects dictionaries, got u'[]'"}
А не - я сам виноват неправильно ext_arr определял


Максим
11.09.2018
11:14:57
Всем привет. Кто-нибудь использует molecule для тестов? Есть вопрос. Есть роль create_user. Добавляю в неё molecule вот так:
molecule init scenario -r create_user
в роли появляется каталог molecule со своим содержимым.
При выполнении команды molecule test, отображается матица проверок
--> Test matrix
└── default
├── lint
├── destroy
├── dependency
├── syntax
├── create
├── prepare
├── converge
├── idempotence
├── side_effect
├── verify
└── destroy
выполняются первые 2 шага и всё. Выполняются корректно Остальные не начинают выполнение. Собственно вопрос: с чем может быть связано? Может чего-то не хватать? Находил в гугле, что можно изменить шаги тестов через редактирование molecule.yml, пробовал указать там ещё раз все шаги, но ничего не изменилось.

Nklya
11.09.2018
11:18:02
там есть дебаг режим
а вагрант то есть на компе?

Максим
11.09.2018
11:30:51
в дебаге ничего нет. Он также завершается на успешном выполнении 2-го задания. Вместо вагрната докер. Докер стоит

Dmitrii <freehck>
11.09.2018
13:08:23
Ребята, а есть тут кто-нибудь, кто пользуется ansible-container?
Суть в чём. Хочу, чтобы одна роль бралась не из кэша, а применялась всегда. Нигде не нашёл, что нужно для этого прописать в container.yml


Amigo
11.09.2018
13:29:27
Кто-нибудь знает почему Ansible не выводит stdout при работе модуля shell для группы элементов и как это можно победить?
Для одного хоста/пользователя работает корректно:
- name: Autodeploy - Get PID
shell: ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'
register: cr_mgmt_init_pid
Для группы пользователей не работает:
- name: Autodeploy - Get PID
become: true
become_user: "{{item.name}}"
shell: ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'
args:
executable: /bin/bash
register: cr_mgmt_init_pid
with_items:
- "{{cr_users}}"
Debug говорит следующее:
{
"cr_mgmt_init_pid": {
"changed": true,
"msg": "All items completed",
"results": [
{
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": true,
"cmd": "ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'",
"delta": "0:00:00.020574",
"end": "2018-09-11 12:01:57.732854",
"invocation": {
"module_args": {
"_raw_params": "ps -aux | grep 'mgmt.jar * init' | awk '{print $2}'",
"_uses_shell": true,
"chdir": null,
"creates": null,
"executable": "/bin/bash",
"removes": null,
"warn": true
}
},
"item": {
"group": "xxx",
"groups": "xxx",
"name": "yyy",
"password": "xxxyyy"
},
"rc": 0,
"start": "2018-09-11 12:01:57.712280",
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
},
Попробуйте.
- debug: var=item.cr_mgmt_init_pid
with_items: "{{ cr_mgmt_init_pid.results }}"


Terminator
11.09.2018
13:44:03
@civilian будет жить. Поприветствуем!

Alexey
11.09.2018
13:44:35

Nklya
11.09.2018
13:49:00

Amigo
11.09.2018
13:57:14

Alexey
11.09.2018
14:41:48

Sergey
11.09.2018
14:43:57
Прочитай man по ps, там всё искаропки, grep и awk - лишние в данном случае.
Отбор по пользователю или списку, кастом-формат вывода - всё уже готово.
http://man7.org/linux/man-pages/man1/ps.1.html

Alexey
11.09.2018
14:45:30

Sergey
11.09.2018
14:46:54
Это не тот вопрос. Передай во второй таск список из одного пользователя, посмотри разницу, принеси в чат - тогда есть смысл задавать вопрос. У тебя разные таски, ты один перед своей консолью - кто будет гадать? Да и таска сама не нужна, как я тебе выше написал.

Terminator
11.09.2018
18:07:20
@DACTAH будет жить. Поприветствуем!

Google

DASTAN
11.09.2018
18:08:06
Всем привет, узнал об ансибл только сегодня, опробовал его в действии немного и просто впечатлен насколько удобный инструмент
теперь больше не хочется настраивать вручную))
всему причина кубернетес)

Terminator
11.09.2018
18:29:22
@ivnahgm будет жить. Поприветствуем!

Никита
11.09.2018
19:52:57

Terminator
11.09.2018
21:41:49
@Bykva будет жить. Поприветствуем!

bykva
11.09.2018
21:43:14
ПРивет любителям ансибла! Подскажите пожалуйста, можно ли как-то конструкцию
tasks:
- include_tasks: site.yaml
with_sequence: start=2 end=15
распараллелить? чтобы каждый инклуд начал сразу выполняться?

bebebe
11.09.2018
21:47:12

Sergey
11.09.2018
21:50:17

bykva
11.09.2018
21:55:24
печально, спасибо

bebebe
11.09.2018
22:00:20
немного спама прилетело
Go это отличный язык для автоматизации, на который следует обратить внимание DevOps специалистам и SRE.
Since February 2015, the SRE (site reliability engineering) team at Stack Overflow has switched from a mixture of Python and Bash to Go. Even though Go isn't a scripting language, for small programs it compiles and runs nearly as fast as Python takes to start. At Stack Overflow we tend to prefer compiled, type-checked languages for large programs, especially when multiple people are collaborating, and, therefore, no one person is familiar with every line of code. Our policy was that Bash scripts couldn't be larger than 100 lines and Python programs couldn't be larger than 1,000 lines. Those seemed like reasonable limits. Rewriting scripts when they grew beyond the limit, however, was a lot of work. It was better to start in Go and avoid the conversion.
(C) Tom Limoncelli


bykva
11.09.2018
22:04:39
Кто-то знает, апишка vcenter умеет несколько задач паралельно принимать?
вообще да. проблема с моей стороны все-таки. Сорян за полуночный спам

bebebe
11.09.2018
22:07:19

bykva
11.09.2018
22:10:46
т.е. как раз запустить 14 раз процесс ansible

bebebe
11.09.2018
22:11:09
да, в 14 потоков

bykva
11.09.2018
22:11:19
я уверен что задачу можно решить проще, просто я криво составил playbook
реально производительности распараллеливание не прибавило, поскольку теперь я уперся в производительность дисковой подсистемы в кластере. Спасибо за совет

Google

bebebe
11.09.2018
22:13:40

Admin
ERROR: S client not available

bykva
11.09.2018
22:18:46
да, я это уже видел, не помогло, потому и пошел с вопросами =)

Sergey
11.09.2018
22:29:44

bebebe
11.09.2018
22:53:18
(echo [all]; seq 2 15 | xargs -I% echo "fakeHost% ansible_connection=local n=%") >> inventory.ini
ansible -F 15 -i ./invenory.ini ./playbook.yaml
plabook.yaml:
---
hosts: all
strategy: free
tasks:
- include_tasks: site.yaml item={{ n }}
не советую ?

Terminator
11.09.2018
23:08:54
@serboox будет жить. Поприветствуем!
@Av2018av будет жить. Поприветствуем!

Devourer
12.09.2018
07:44:43
Парни, привет. Соррян за глупый вопрос, но я быстро. Для исполнения win_chocolatey, шоколадка должна быть установлена на вин-хосте?

Alexander
12.09.2018
08:20:43
А ты попробуй, потом расскажешь результат

Devourer
12.09.2018
08:23:24
Пробовал, он чот фэйлился.

Alexander
12.09.2018
08:25:35
ну а вывод-то где?

Devourer
12.09.2018
08:27:32
---
win_chocolatey:
name: malwarebytes
state: present


terry
12.09.2018
08:48:32
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
https://docs.ansible.com/ansible/2.6/modules/lineinfile_module.html
как тут


bebebe
12.09.2018
08:52:20
все ОЧЕНЬ плохо

Google


bebebe
12.09.2018
09:10:24
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
shell: "sed -i'' '/log_format graylog2_json escape=json/,/error_log syslog:server=ip:12302 error;/d' nginx.conf"
лучшего не дано


bykva
12.09.2018
09:11:49
а почему не https://docs.ansible.com/ansible/2.6/modules/lineinfile_module.html ?
там же поиск по регулярке и state absent

bebebe
12.09.2018
09:13:01

Sergey
12.09.2018
09:13:03


Alex
12.09.2018
09:13:08
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
шаблоны .j2


Sergey
12.09.2018
09:13:11
прям этот блок туда ухнуть
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
https://docs.ansible.com/ansible/2.6/modules/blockinfile_module.html


Юра
12.09.2018
11:18:23
Подскажите пожалуйста. Есть у меня таска на обновление всех пакетов в ОС. И есть несколько групп серверов, на которых нужно исключить определённые пакеты из списка обновляемых. Решается в принципе таким образом - https://gist.github.com/RenderQwerty/dc70a6927d6313f2b36a9d7d486f8fe2 Вопрос вот в чём - каким образом можно добиться того, чтобы этот таск выполнялся корректно на остальных серверах, где нет никаких пакетов в exclude? Сейчас на таких ansible логично падает с ошибкой, что
exclude_soft'' is undefined'