Terry
все хотят помимо писания всякого рода костылей и великов немного погадить в карму молодому адепту гугл поиска в чате так говорят играет самолюбие и тогда адепт начинает думать и пробовать сам, преждем чем получить ведро помоев сверху ;)
Terry
там...это где?
всмысле везде по чатам, если просишь помощи и получаешь ссылку в гугл
Terry
если она ведет в ответ, почему нет?
да погоди, пусть человек просто осмыслит... мне учитель в школе говорила, если не поняли, что от вас хотят в задаче с чтения задания за первый раз - прочтите еще раз и так пока не дойтет ;)
bebebe
Написать свой каллбек-модуль, например
да, но нет, у меня есть сильное очучение, что sed,awk'ом можно выдрать из аутпута нужную информацию
Alexander
Сильно зависит от опять же подключенных калбек-плагинов. Поэтому я бы не стал полагаться на такое.
Anonymous
Здравствствуйте
Anonymous
ansible --version ansible 2.6.3 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
Anonymous
есть несколько серверов на части из серверов стоят пользователи root на другой части другой пользователь админ
Anonymous
прочитал что для разных групп можно настройки задать в отдельной папке group_vars
Anonymous
для нужных груп прописать к примеру ansible_ssh_user: admin
Anonymous
но ansible все равно подключается по root
Anonymous
подскажите что не так указал
Anonymous
пните куда копать
Sergey
remote_user тебе нужен
Salem
лучше приведи все к одному виду, но это так...
Anonymous
92.168.0.158 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).\r\n", "unreachable": true
Антон
Если я правильно понял должно быть примерно вот так foo1 ansible_host=foo1_ip ansible_ssh_user=root foo2 ansible_host=foo2_ip ansible_ssh_user=admin foo3 ansible_host=foo3_ip ansible_ssh_user=foo3
Антон
а дальше как нравится
Anonymous
remote_user тебе нужен
remote_user: admin типа такого
Anonymous
?
Антон
)
Антон
вот тут почитай https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
Amigo
Попробуйте обявить переменную UserName со значением для одной группы хостов root для другой admin а в playbook user: {{UserName}}
Alexey
Кто-нибудь знает почему 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
Господа. Хотите творческий вопрос?) В одном месте я делаю так: 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?
ShadoWalkeR
Проблема в том, что как раз надо из нескольких файлов собрать один
ShadoWalkeR
Имена меняются
Sergey
Проблема в том, что как раз надо из нескольких файлов собрать один
Не нужно вспомогательный массив (имена файлов) и окончательный (список хэшей) одинаково именовать.
Udjin
Имена меняются
"Война остаётся прежней"(с)
ShadoWalkeR
Я пока что выгружаю содержимое файла во временную переменную и потом её содержимое с именем файла хочу в сгенерированный словарь добавить
ShadoWalkeR
И вот на последнем шаге проблема
ShadoWalkeR
Пока что нагуглилось такое: ext_arr: "{{ ext_arr|combine({item, tmp_arr}) }}" но для первого прохода (когда ext_arr пуст) получаю: {"msg": "|combine expects dictionaries, got u'[]'"}
ShadoWalkeR
А не - я сам виноват неправильно ext_arr определял
Maksim
Всем привет. Кто-нибудь использует 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
там есть дебаг режим а вагрант то есть на компе?
Maksim
в дебаге ничего нет. Он также завершается на успешном выполнении 2-го задания. Вместо вагрната докер. Докер стоит
Dmitrii
Ребята, а есть тут кто-нибудь, кто пользуется ansible-container? Суть в чём. Хочу, чтобы одна роль бралась не из кэша, а применялась всегда. Нигде не нашёл, что нужно для этого прописать в container.yml
Amigo
Кто-нибудь знает почему 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 }}"
Alexey
Amigo
Ожидаемо: такого объекта не существует
простите. нужно заменить item.cr_mgmt_init_pid на item.stdout_lines или просто stdout
Alexey
простите. нужно заменить item.cr_mgmt_init_pid на item.stdout_lines или просто stdout
Не, тоже пусто. Такое ощущение, что Ansible вообще не выполняет команду...
Sergey
Прочитай man по ps, там всё искаропки, grep и awk - лишние в данном случае.
Sergey
Отбор по пользователю или списку, кастом-формат вывода - всё уже готово.
Sergey
http://man7.org/linux/man-pages/man1/ps.1.html
Alexey
Прочитай man по ps, там всё искаропки, grep и awk - лишние в данном случае.
Вопрос был: почему Ansible не выводит для списка, а для одного пользователя выводит
Sergey
Это не тот вопрос. Передай во второй таск список из одного пользователя, посмотри разницу, принеси в чат - тогда есть смысл задавать вопрос. У тебя разные таски, ты один перед своей консолью - кто будет гадать? Да и таска сама не нужна, как я тебе выше написал.
‌‌‎D
Всем привет, узнал об ансибл только сегодня, опробовал его в действии немного и просто впечатлен насколько удобный инструмент
‌‌‎D
теперь больше не хочется настраивать вручную))
‌‌‎D
всему причина кубернетес)
Aleksandr
ПРивет любителям ансибла! Подскажите пожалуйста, можно ли как-то конструкцию tasks: - include_tasks: site.yaml with_sequence: start=2 end=15 распараллелить? чтобы каждый инклуд начал сразу выполняться?
Aleksandr
печально, спасибо
bebebe
немного спама прилетело
bebebe
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
Aleksandr
конкретно эту конструкцию не получится
распараллелил чисто для проверки методом запуска одновременно нескольких копий ансибла, быстрее не стало.
Aleksandr
Кто-то знает, апишка vcenter умеет несколько задач паралельно принимать?
Aleksandr
вообще да. проблема с моей стороны все-таки. Сорян за полуночный спам
bebebe
распараллелил чисто для проверки методом запуска одновременно нескольких копий ансибла, быстрее не стало.
попробуйте модифицировать task таким образом tasks: - include_tasks: site.yaml item={{ n }} запустив ansible так: seq 2 15 | xargs -I% -P14 ansible-playbook -e n=% playbook.yml
Aleksandr
т.е. как раз запустить 14 раз процесс ansible
bebebe
да, в 14 потоков
Aleksandr
я уверен что задачу можно решить проще, просто я криво составил playbook
Aleksandr
реально производительности распараллеливание не прибавило, поскольку теперь я уперся в производительность дисковой подсистемы в кластере. Спасибо за совет
bebebe
я уверен что задачу можно решить проще, просто я криво составил playbook
ознакомьтесь так же с выполнением тасков асинхронно https://docs.ansible.com/ansible/2.5/user_guide/playbooks_async.html
Aleksandr
да, я это уже видел, не помогло, потому и пошел с вопросами =)
bebebe
(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 }}
bebebe
не советую 😉
Alexander
А ты попробуй, потом расскажешь результат
Alexander
ну а вывод-то где?