𝕀𝕘𝕠𝕣
Timur
В режиме дебага можно увидеть ключи, с которыми запускается ssh сессия и питоновские модули
Timur
Но что делает сам питон, там не увидишь - только результат в виде output и error
⚓️Damir
Timur
Если интересно, как работает модуль systemd, то можно посмотреть в код
Timur
https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/system/systemd.py
𝕀𝕘𝕠𝕣
спасибо!
bebebe
ansible осень настала
⚓️Damir
Sasha
Проитерироваться по чему-нибудь типа
users:
- username: jane
keys: |
Key1
Key2
- username: john
keys: |
Key3
Key4
я не могу разобраться как именно итерирование написать. получается что надо по пользователям идти, с этим ок
authorized_key:
user = {{ item.username }}
state = present
key = "{{ lookup('fileglob', 'files/public_keys/*').split(',') }}"
with_items: '{{users}}'
в вот эта часть
key = "{{ lookup('fileglob', 'files/public_keys/*').split(',') }}"
пока не работает. да, тут просто все клчи из папки пробую добавить пока что
Timur
Sasha
допустим. а как решить задачу?
Timur
Там хорошо и на примерах разные способы циклов разобраны
⚓️Damir
Sasha
Timur
Sasha
⚓️Damir
Timur
Аргументу нужна строка в виде ключа
Timur
А не список файлов :)
⚓️Damir
Timur
Timur
Но это, если ключ один на пользователя и с таким же именем
⚓️Damir
⚓️Damir
А не список файлов :)
Ну вот, я действительно не правильно догадывался о том как работает fileglob
Timur
Sasha
да, да, статья хорошая, как раз смотрю
⚓️Damir
Наверно нужно
with_subelements:
- "{{ users }}"
- key_files
А список такой:
users:
- username: user1
key_files:
- a
- b
Имя файлов будут в item.1
Имена пользователей в item.0.username
Timur
Посмотрите ещё вариант with_nested
Joe
Timur
Timur
А ключи можно доставать с помощью lookup из полученного имени файла
⚓️Damir
Но я бы просто запихал сами ключи в переменные и вообще не смотрел бы в файлы
Sasha
Sasha
для каждого пользователя повторять все ключи текстом ? или другая идея?
⚓️Damir
users:
- username: user1
key_files:
- '{{ a }}'
- '{{ b }}'
Например так
Sasha
спасибо за идею
⚓️Damir
Или так что бы цикл был проще
users:
- username: jane
keys: |
{{ Key1 }}
{{ Key2 }}
- username: john
keys: |
{{ Key1 }}
{{ Key3 }}
Vladislav 👻
Vladislav 👻
Надо документацию почитать, но вроде вариант либо идете под рутом в ансибле, либо костыль через комманд
𝕀𝕘𝕠𝕣
Vladislav 👻
И что? Хотите сказать, что рут не смог?
𝕀𝕘𝕠𝕣
Говорю же прошел, но рута по ссш передавать не хочу
Vladislav 👻
😳
Timur
Timur
Идёте по ссш под обычным пользователем, а там уже просто повышаете привилегии до рута
Timur
Только на время выполнения задачи
Nklya
Джефф тоже решил быть в тренде))
https://leanpub.com/ansible-for-kubernetes
Vadim
Кстати, никто не думает съездить в феврале на CfgMgmtCamp?
Alex
https://www.serverlab.ca/tutorials/dev-ops/automation/using-hashicorp-vault-with-ansible-jinja2-templates/
Это конечно круто, но там не описано, что если по указанному пути в хаши валт нет данных, чтобы ансибл создал и положил их туда. Тогда миграции между стендами(тест - прод) пройдут плавнее. Ещё вопрос как создавать закрытый ключ с паролем для каждого хоста и класть эти данные в хаши валт, а потом забирать их оттуда для подключения к хостам?
Dima
bebebe
---
- name: load ldap contacts
shell: >
ldapsearch -D "{{ ldap.bind.dn }}" -w "{{ ldap.bind.password }}"
-o ldif-wrap=no -LL -b "{{ ldap.search_base }}"
-H "ldap://{{ ldap.server }}" |
sed -r 's/([^:]+)::? (.*)/"\1":"\2",/' |
awk 'BEGIN {printf("{\n")}
{printf("%s\n", ($0 == "") ? "\"\":\"\"}{" : $0 )}' |
jq -s '.'
register: ldap_user
- name: templating contacts
template:
src: templates/nagios-config/contacts.cfg.j2
dest: "{{ artifact_dir }}/contacts.cfg"
bebebe
просто оставлю это здесь
Nklya
красиво, но однострочники на питоне все же веселее
Timur
sed вместе с awk - дурдом
Victor
grep'а не хватает
bebebe
bebebe
вот сегодня надо было отдебажить, наткнулся
Andrey
я бы в этот код поместил коммент с примером вывода ldapsearch и примером выхлопа awk
Andrey
хотя код читается и понятен, чтобы быть уверенным в его правильности нужно знать желаемое поведение
bebebe
в коде проблемы не было, была проблема в людях :/
это из разряда, написал и забыл.
bebebe
я тогда еще удивился, что в 21веке нету конверторов из ldap output'а во что-то структурирование yaml/json/etc
были странные поделия на python/ruby которые работали мягко говоря странно
Артём
bebebe
bebebe
даже вот такое помню пробовал https://github.com/quinot/ansible-plugin-lookup_ldap
bebebe
или подобное, но к сожалению толи инструменты были не очень, толи не понял как их правильно запилить под свою задачу
tldr они не подошли.
bebebe
пробовал запилить на чистом jq - тоже не осилил, в jq можно писать что-то своего map reduce
но написать на map-reducre конвертацию из ldapdiff в json тоже не осилил.
Joe
Подскажите как правильно передать значения VARS в playbook c ролями
https://telegra.ph/mongodb-install-10-26
Joe
- role: mongodb_install
mongo_version:
- 3.4.9
tags:
- installbin
- addsudouser
Методом тыка вот так
Павел П.
Добрый!
не подскажите, какой best practice получить список хостов где не прошел пинг? Ручками пропарсить вывод этой ad-hoc команды в лог ?
Денис
Денис
в конфиге включаются
Денис
а если надо перед плейбуком проверить какие хосты доступны, есть wait_for_connection, например