Sergey
Single source of truth = репозиторий с проектом, и ничто иное
Womchik
С одним коммитером
Div
тут я с вами полностью согласен. но как мне тогда обойти host key проверку при выполении git clone на свежесозданной машине?
Div
без добавления ключа роль тупо вываливается...
Div
интернеты вообще чушь советуют с отключением проверки.
bebebe
+ если у вас ынтыпрайз или полупродакш если домашний проект, то вполне ssh-keyscan
Div
у меня как вы говорите "ынтырпрайз" на базе древних опнсорс тулз. нужно сделать красиво.
bebebe
делайте по красоте
Div
делаю. отсюда и вопросы.
Div
например в случае использования репо для ключей, как оттуда добавлять ключи если я всеравно упрусь в проверку ключа при добавлении?
bebebe
надо сказать. что предыдущий вопрос к ансибл никакого отношения не имеет, лучше в @devops_ru спрашивать
Div
ок
bebebe
или где там рассадник их
Nklya
Если репа например в гитлабе хранится, ее можно через токен копировать и не нужно никаких ключей
Kirill
вопрос по jinja, есть inventory, например такой:
Kirill
ubuntu1 ansible_host=139.59.131.125 ubuntu2 ansible_host=104.248.23.35 [zncpbs] ubuntu[1:2]
Kirill
теперь пытаюсь взять эту группу из inventory и отдать в темплейт
Kirill
{% set comma = joiner(",") %} {% for host in groups['zncpbs'] -%} Match Host {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}{{ comma() }} PasswordAuthentication yes {%- endfor %}
Kirill
но он по логике делает 4 строки: Match Host 139.59.131.125 PasswordAuthentication yes и еще Match Host 104.248.23.35 PasswordAuthentication yes, но нам то надо Match Host IP, IP и уже затем PasswordAuthentication yes c indent 4
bebebe
а вижу.
Kirill
ну пытаюсь тут запятую нарисатьва
bebebe
{% for host in groups['zncpbs'] %} {% set ipaddr = hostvars[host]['ansible_eth0']['ipv4']['address'] %} Match Host {{ ipaddr }}, {{ ipaddr }} PasswordAuthentication yes {% endfor %}
Kirill
спасибо, сейчас посмотрю
Kirill
а если хостов в группе не два, а 10 ?
Kirill
не мэтчится: fatal: [ubuntu1]: FAILED! => {"changed": false, "checksum": "d75b47027bc5b9ad11de51f25591767175646771", "exit_status": 255, "msg": "failed to validate", "stderr": "Missing Match criteria for 139.59.131.125\r\n/root/.ansible/tmp/ansible-tmp-1536141835.33-97471998377108/source line 113: Bad Match condition\r\n", "stderr_lines": ["Missing Match criteria for 139.59.131.125", "/root/.ansible/tmp/ansible-tmp-1536141835.33-97471998377108/source line 113: Bad Match condition"], "stdout": "", "stdout_lines": []}
bebebe
а если хостов в группе не два, а 10 ?
Match Host {{ groups['zncpbs'] | map('extract', hostvars, ['ansible_eth0', 'ipv4', 'address']) | join(',') }} PasswordAuthentication yes
bebebe
спасибо большое, теперь как надо
когда перейдете на 2.6.x, эта коснтрукция поломается, как вчера выяснилось в 2.6.x ansible_eth0.ipv4 не dict, а array of dict будет ['ansible_eth0', 'ipv4', 0, 'address]
Kirill
хм, на 2.6.3 протестировал и все работает
bebebe
Или не поломается
bebebe
спасибо!
У вас на en0 висело больше одного ойпи адреса?
Womchik
но это мак
bebebe
По идеи не должно быть разницы в фактах..
bebebe
В иерархии и структуре. Непонятно
zhag
у меня ansible генерит ssh ключ, как я его могу взять потом и положить в переменную?
zhag
Подскажите пожалуйста
Nazar
with_file
bebebe
Подскажите пожалуйста
если ключ генерится на той же машине, где и запускается ansible, то можно делать lookup('FILE', '/path/to/ssh_key')
zhag
Нет, ключ генерится на удаленном сервере
Ievgen
мм а кто то работает с ansible через python api? есть вопрос - что то поменялось при переходе с 2.6.0 на 2.6.1 и напиленный на питоне ланчер не понимает переменные из group_vars/all.yml - никто не сталкивался? Или надо копать?
Dumitru
всем привет который час не могу добавить текст в конец строки в ансибле по regexp lineinfile умеет дописывать или удалять строки, а вот добавить слово в конец у меня не вышло уже прошу помощи у комьюнити
bebebe
лучше на pastebin куда-нибудь
Dumitru
покажите что вы делаете, исходный кусок текста, и желаемый
есть файл с ip адресами: 35.242.242.12 35.234.84.101 35.198.128.175 и список ключей в формате private:public хочу добавить каждой строчке по одной паре, чтобы в конце вышло так: 35.242.242.12;<priv>;<pub> 35.234.84.101;<priv>;<pub> 35.198.128.175;<priv>;<pub> делаю это все локально, один раз
Dumitru
лучше на pastebin куда-нибудь
думаю там немного
Dumitru
все оказалось так просто 😕 спасибо большое!
Dumitru
- name: regex replace: path: ./f.txt regexp: '$' replace: 'private;public' backup: no
А как в этом случае заменить только одну строку, а не все?
Dumitru
у меня 3 строки с ip адресами, они в любом случае попадут все под регекс
bebebe
если че variable_manager.safe_basedir = '/path/to/ansible_root'
а что вы делаете? дергаете ansible из питона?
Ievgen
да
Ievgen
запускаю playbook с нужными параметрами
Ievgen
через http api
bebebe
через http api
типа как ansible tower/awx/semaphore? rest поверх ansible?
Dumitru
смотря какой регексп
я пока не смог такой придумать 🤔 так чтобы каждый раз дергал следующую строку
Ievgen
типа как ansible tower/awx/semaphore? rest поверх ansible?
мм что то вроде, есть маленькая специфическая самописная штучка которая дергается через http и запускает определенный playbook с параметрами которые прилетели в POST
bebebe
мм что то вроде, есть маленькая специфическая самописная штучка которая дергается через http и запускает определенный playbook с параметрами которые прилетели в POST
понятненько 😉 я такое делал более грубо на openresty (nginx+lua) а почему не используете awx? он "тяжелый" для ваших задач?
Udjin
hostvars[m] это dict.
а куда копать, соориентируй пожалуйста)
Ievgen
понятненько 😉 я такое делал более грубо на openresty (nginx+lua) а почему не используете awx? он "тяжелый" для ваших задач?
потому что в целом используем rundeck а эта штука была напилена вокруг http://python-rq.org/ чтобы быстро организовать очереди
Ievgen
ну и rundeck появился еще до того как awx стал чем то вменяемым
bebebe
потому что в целом используем rundeck а эта штука была напилена вокруг http://python-rq.org/ чтобы быстро организовать очереди
хахаха, знаю эту проблему, сам запускаю ansible из rundeck на одном проекте. у меня там уже счетчик джоб перевалил за 40k! :) понимаю вашу боль,
Ievgen
та в целом боли нет особо ) работает, кушать не просит особо, хистори тасков чистится по крону )
bebebe
у меня он там дюже стааарый (2.6.1) что-ли
bebebe
я даже версию побаиваюсь посмотреть, чтобы лишний раз не трогать и что бы оно не развалилось
Ievgen
)
bebebe
что-бы завершить оффтопик, вы rundeck для службы поддержки делаете?
Ievgen
не совсем, изначально чтобы быстро получить http интерфейс с динамическим inventory ну и как сайд эффект, те кто не умеют в ansible могут тыкать кнопочки
bebebe
не знаю на сколько вы закопались в rundeck, но по идеи awx вам больше подходит
Ievgen
надо тестить
Ievgen
awx умеет динамический inventory из амазона?
Vadim
умеет
Ievgen
тогда +1 за потестить