Timur
Timur
Asgoret
Timur
есть варианты решения?
Вот так попробуйте:
- hosts: localhost
tasks:
- name: Find all config files
find:
paths: "/Users/user/Documents/GitLab/deploy/roles/test/configs/server"
patterns: '*.env'
register: env
- name: Create output
include_vars:
file: "{{ item.path }}"
name: contents
loop: "{{ env.files }}"
- name: Output debug
debug:
msg: "{{ contents | dict2items }}"
Asgoret
Timur
Timur
А потом пытались обработать его как словарь, которым он не является
Max
Asgoret
а я тебя не понял. в твоем сообщении скрыт ответ.
я попробовал сделать по аналогиии с items2dict и получил
template error while templating string: expected token ',', got ':'. String: {{ contents | dict2items(name:'key', value:'value') }}"}
Max
Asgoret
Timur
Asgoret
ну и в файлик писать не монострокой) но это дальше и не должно вызвать проблем надеюсь
Timur
Сначала спрашиваете, как в список превратить, а теперь хотите обратно в словарь?
Asgoret
Timur
Но лучше сразу описать на более высоком уровне - что вы хотите сделать
Timur
Чаще всего более простой путь лежит чуть в стороне от выбранного вами
Timur
Timur
Может, попробуете все-таки? Что за данные вы хотите взять и для чего они вам нужны именно в таком виде?
Max
hrenak, hrenak и в продакшон.
Max
вау, кау сердешно смотрит бабуля-то!
Asgoret
Asgoret
Деплоймент конфига
Max
ну и....
Timur
Timur
Деталей добавьте
Asgoret
Возможно
Asgoret
@rulev возможно
Asgoret
А за что удалили?)
Александр
emergy@MacBook-Pro-Emergy:~$ cat test.yml
- hosts: localhost
gather_facts: no
vars:
itemz:
- key: value
tasks:
- debug:
msg: "{{ itemz | json_query('[*].{name: key}') }}"
emergy@MacBook-Pro-Emergy:~$ ap test.yml
PLAY [localhost] ***************************************************************************************************************************************************************
TASK [debug] *******************************************************************************************************************************************************************
ok: [localhost] => {
"msg": [
{
"name": "value"
}
]
}
PLAY RECAP *********************************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
Александр
http://jmespath.org/ - отлаживать здесь удобно
George
Если тут есть jinja-ninja, вот "интересная" задача. Я не сумел решить без include'ов, а вы сумеете? https://stackoverflow.com/questions/54766922/iterate-over-list-of-dictionaries-with-nested-list-in-ansible
Sergey
Sergey
Да.
Timur
George
Всё, спасибо. subelement сработал, хотя его вывод потом расковыривать то ещё удовольствие. {{ example|subelements("inner_list") }}, и потом '{{ item.0.mykey }}, {{item.1}}
George
Ой, мои кривые руки. Оно inner_list в обоих случаях.
George
(не поправил продакшен-имена)
Timur
Ну, тогда вообще все просто
George
Ага, вот итоговое (вместе с тем, что я знал как сделать):
---
- hosts: localhost
tasks:
- set_fact:
cq_res: '{{ cq_res|d([]) + [cq_name] }}'
loop: '{{ all_rate_cq }}'
vars:
cq_name: '{{ rp }}_{{ measurement }}_{{ field }}'
rp: '{{ item.2 }}'
measurement: '{{ item.0.measurement }}'
field: '{{ item.1 }}'
all_rate_cq: '{{ lookup("cartesian", extracted_values, policies) }}'
extracted_values: '{{ example|subelements("fields") }}'
- debug: var=item
when: ("std31" not in item)
loop: '{{ cq_res }}'
vars:
policies:
- std2
- std7
- std31
- stdinf
example:
- measurement: ceph
fields:
- read
- wrire
- measurement: osd_stats
fields:
- recovery_r
- recovery_w
Timur
- name: Out nested
debug:
msg: '{{ item.0.mykey }} with {{ item.1 }}'
loop: "{{ example | subelements('inner_list', skip_missing=True) }}"
George
Мне стыдно и гордо одновременно.
George
Всего лишь тройная вложенность с ветвлением внутри линейного списка. А главное, читающий это человек даже не будет подозревать как опасно близко он подошёл к трясине...
Ждун
Народ, а как вы думаете, нужен ли в windows среде ansible, если есть Active Directory и Group Policy?
Ждун
CI/CD энсибл не нужен, там свое есть
Anonymous
Ждун
вот это я пытаюсь и выяснить
Anonymous
Кейс какой?
Ждун
:D от того, что вопрос переформулировать, ответ на него не поменяется
Anonymous
Сам могу себе ансибл не нужен) он решает определенные задачи. Вопрос: какие именно задачи есть необходимость решить?
Timur
Timur
Timur
Нужно понять задачу
Timur
Если задача - запустить баш-скрипт на удаленном хосте, набрав в консоли ansible, то нафиг не нужен
Ждун
для этого есть Powershell remoting
Timur
Вот и я о том же
Timur
Так что смотрите вопрос выше
дед Максим
Привеет)
дед Максим
Тут я с асниблом все маюсь)
Нужна помосч) Может чего не понимаю.
https://paste.ubuntu.com/p/Vq4fBZqB4z/
Timur
Timur
Какой тип авторизации?
дед Максим
ия не помимаю, почему он ломится под логином root, когда в файле у меня написано ansible_user=ansible , а не root
дед Максим
причем, если выполнить питоновский скрипт
from winrm.protocol import Protocol
p = Protocol(
endpoint='http://10.0.13.104:5985/wsman',
transport='ntlm',
username=r'administrator',
password='secret',
server_cert_validation='ignore')
shell_id = p.open_shell()
command_id = p.run_command(shell_id, 'ipconfig', ['/all'])
std_out, std_err, status_code = p.get_command_output(shell_id, command_id)
p.cleanup_command(shell_id, command_id)
print(std_out, status_code)
p.close_shell(shell_id)
то он отрабатывает и я вижу коннект.
Timur
дед Максим
ntlm
Timur
А, стоп
Timur
Вы пытаетесь модуль setup вызвать?
дед Максим
угу